Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/145: Рейтинг темы: голосов - 145, средняя оценка - 4.81
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
1

Delphi 7 COM-port

11.02.2015, 12:15. Показов 27436. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Нужна Ваша помощь!
Я начинающий программист, у меня задача отправить команду в СОМ-порт и получить ответ. Нашел литературу (ссылка - http://www.ssau.ru/files/resou... in_a_v.pdf) и в этой литературы написана все как делать, но в странице 40 написана что надо скопировать файл comport.pas. Я питался найти файл но не нашел. Вопрос такой что это за файл откуда мне найти этот файл. Срочно надо!! Файл с кодами закружен. Delphi7-COM-port.rar
Спасибо большое заранее!!!


Delphi7-COM-port.rar
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2015, 12:15
Ответы с готовыми решениями:

ARDUINO + COM PORT + DELPHI
Здравствуйте. В программировании новичек, нужна помощ ваша. На терминал получаю данные с ардуино,...

Работа с UDP протоколом за роутером (Port Restricted Cone NAT и в добавок Random port )
Посылая сообщение на внешний ip Nat роутера меняет порт.... и при попытки отправить ответ и...

Работа Scilab Serial Port Library (COM port)
Как работает Scilab Serial Port Library ? (может кто то встречал описание подробное, поделитесь...

COM port
Нужны библиотеки для работы с COM port. Помогите пожалуйста найти.

30
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
11.02.2015, 14:23 2
В Вашей литературе приведёно руководство для работы с конкретным оборудованием. Исходники я так понимаю от туда же. Собственно там же от куда эти исходники и литература бралась должен быть и этот модуль.
Но это если Вам нужно писать именно для этого устройства. Если Вам нужно вообще с портами работать, то это можно делать либо через Windows API, либо задействовать какую-то готовую объектную обвёртку над API. Например, такая обёртка есть в библиотеке synapse http://synapse.ararat.cz/doku.php/download, модуль synaser.pas. Я правда ею не пользовался, так как у меня самописная.

Добавлено через 8 минут
Кстати, только что обратил внимание в вашей литературе тоже упоминается эта библиотека, и как раз есть упоминание модуля synaser.pas.

Добавлено через 2 минуты
Ваш модуль comport.pas это тоже какая-то обёртка над Windows API, только и всего.
3
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
12.02.2015, 10:30  [ТС] 3
С СОМ -порта хочу отправить на RS-485? что скажите на счет этой библиотеки http://sourceforge.net/projects/comport/. Можете какой нибудь конкретный пример подсказать ?
Спасибо большое заранее !
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
12.02.2015, 10:55 4
Работа с портом шутка не сложная. Это по сути несколько API-шных функций. Поэтому мне не нравится для этой цели устанавливать дополнительные компоненты в среду, а здесь как раз это и нужно. У меня для этого просто один модуль подключается, в котором реализован один класс. Но я вообще не большой любитель установки компонентов в среду и если есть возможность этого не делать, я так и делаю. Поэтому подход synapce мне тоже нравится, там как раз такой же подход используется. Но как известно на вкус и цвет ... поэтому всё это ерунда, если Вам нравится так почему бы и нет.
В работе с портами возможно два режима: синхронный (блокирующий) и асинхронный (неблокирующий). Мне однозначно больше нравится первый. Я работаю только в синхронном режиме, т.к. это сильно упрощает логику программы. С портом всегда работаю во втором потоке, чтобы эта блокировка не сказывалась в работе интерфейса. В synapce тоже используется синхронный режим. Какой режим реализован в той библиотеке я не знаю, не смотрел.
При работе с 485 рекомендую использовать аппаратные конверторы с автоматическим переключением направления передачи данных. В этом случае для Вас всё будет прозрачно и одинаково что 485, что 232.
1
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
12.02.2015, 11:53 5
Пример отправки пакета в COM1 на скорости 9600: ComTest.zip
Сделала правда на synapce, не на вашем компоненте
Работу проверил с терминалкой: у меня два порта закальцованых кабелем, на одном была эта программа, на другом терминалка. Программа отправляла, терминалка принимала, всё работало.
Сделал на 2009, на 7 скорее всего пути нужно будет прописать к synapse40\source\lib\
2
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
12.02.2015, 11:57 6
Терминалка: http://www.compt.ru
2
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
12.02.2015, 12:42  [ТС] 7
Здравствуйте! Спасибо что помогаете!!
Обязательно воспользуюсь Вашем советом, просто я новичок и плохо в этом понимаю,
вот я кое что сделал используя эту библиотеку http://sourceforge.net/projects/comport/ но выдает ошибку
если будет возможность подскажите пожалуйста что здесь не так? не судите строго)
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CPort;
 
type
  TForm1 = class(TForm)
    editCommand: TEdit;
    editAnswer: TEdit;
    buttonOpen: TButton;
    buttonWrite: TButton;
    buttonClose: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    memoHistory: TMemo;
    ButtonClearHis: TButton;
    buttonsetting: TButton;
    ComPort: TComPort;
    buttonsend: TButton;
    procedure ButtonClearHisClick(Sender: TObject);
    procedure buttonsettingClick(Sender: TObject);
    procedure buttonOpenClick(Sender: TObject);
    procedure buttonWriteClick(Sender: TObject);
    procedure buttonCloseClick(Sender: TObject);
    procedure buttonsendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ButtonClearHisClick(Sender: TObject);
begin
memoHistory.Lines.Clear; // очистка истории выполненных команд
end;
 
procedure TForm1.buttonsettingClick(Sender: TObject);
begin
Comport.ShowSetupDialog;
buttonOpen.Enabled := True;
end;
 
procedure TForm1.buttonOpenClick(Sender: TObject);
begin
 
   ComPort.Open; // открыть сом порт
  if ComPort.Connected then
  memoHistory.Lines.Add('Порт открыть ('+comport.Port+')')
  else
  memoHistory.Lines.Add('Порт не открывается');
end;
 
 
 
procedure TForm1.buttonWriteClick(Sender: TObject);
var
  strWrite: string; // временная переменная ASCII последовательности
  arrBytes: array of Byte; // массив байт команды
  i: Integer;
begin
//чтение команды из поля "Команда"
  strWrite := editCommand.Text;
  //преобразование последовательности ASCII в массив байт
  SetLength(arrBytes, Length(strWrite)+1);
  for i := Low(arrBytes) to High(arrBytes) do
    arrBytes[i] := Ord(strWrite[i + 1]);
  // формирование признака конца команды
  arrBytes[High(arrBytes)]:=$0D;
  // запсиь сформированной команды в СОМ-порт
  ComPort.Write(arrBytes);
  arrBytes := nil;
 
end;
 
procedure TForm1.buttonCloseClick(Sender: TObject);
begin
ComPort.Free;
memoHistory.Lines.Add('Порт закрыт.')
end;
 
procedure TForm1.buttonsendClick(Sender: TObject);
begin
if ComPort.Connected then
begin
  ComPort.WriteStr(editCommand.Text+#13);
  memoHistory.Lines.Add('('+editcommand.Text+')');
end;
 
end;
end.
0
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
12.02.2015, 12:44  [ТС] 8
Вот файлы программы сом-порт.rar
Заранее спасибо !
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
12.02.2015, 12:53 9
И какую ошибку выдаёт?
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
12.02.2015, 13:17 10
Цитата Сообщение от aknyazev Посмотреть сообщение
И какую ошибку выдаёт?
Скорее всего AV на
Delphi
1
ComPort.Write(arrBytes);
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
12.02.2015, 13:24 11
Глянул исходники компонента.
Для TComPort функция записи такая:
function Write(const Buffer; Count: Integer): Integer;
Тогда в Вашем примере нужно делать вызов так:
ComPort.Write(arrBytes[0],length(arrBytes));
2
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
12.02.2015, 15:03  [ТС] 12
Спасибо!! вроде компилирует ошибки нет , скажите пожалуйста пока у меня нет возможности проверить программку на RS-485 можно ли как то проверить, т.е. отправить сигнал или код какой то и получить ответ, читал что можно создать два виртуальных портов и на них проверить, можно так сделать? если есть какая нибудь литература подскажите плизз!!
Спасибо большое заранее! вы мне очень помогли \!!
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
12.02.2015, 15:36 13
Вот этого не знаю, как-то не требовалось никогда.
Я для этого использую конвертер USB/RS-232, продаётся в компьютерных магазинах.
У меня на компьютере один обычный порт, один такой порт, который на USB. Порты между собой соединены нуль-модемных кабелем. Для тестирования этого как раз достаточно.
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
12.02.2015, 16:40  [ТС] 14
Теперь есть возможность проверить программу на конвертер USB/RS-485 и есть модуль i-87068. В программе добавил код чтобы получить ответ от модуля но программа никак не реагирует, компилируется но не отправляет и не получает ответ от модуля, посмотрите пожалуйста код может быть подскажите что то ?
Спасибо большое!!
исходники
Scada - копия - копия.rar
Delphi_I7000.rar
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CPort;
 
type
  TForm1 = class(TForm)
    editCommand: TEdit;
    editAnswer: TEdit;
    buttonOpen: TButton;
    buttonWrite: TButton;
    buttonClose: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    memoHistory: TMemo;
    ButtonClearHis: TButton;
    buttonsetting: TButton;
    ComPort: TComPort;
    buttonsend: TButton;
    procedure OnRead(Sender: TObject; ReadBytes: array of Byte);
    procedure ButtonClearHisClick(Sender: TObject);
    procedure buttonsettingClick(Sender: TObject);
    procedure buttonOpenClick(Sender: TObject);
    procedure buttonWriteClick(Sender: TObject);
    procedure buttonCloseClick(Sender: TObject);
    procedure buttonsendClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ButtonClearHisClick(Sender: TObject);
begin
memoHistory.Lines.Clear; // î÷èñòêà èñòîðèè âûïîëíåííûõ êîìàíä
end;
 
procedure TForm1.buttonsettingClick(Sender: TObject);
begin
Comport.ShowSetupDialog;
buttonOpen.Enabled := True;
end;
 
procedure TForm1.buttonOpenClick(Sender: TObject);
begin
 
   ComPort.Open; // îòêðûòü ñîì ïîðò
  if ComPort.Connected then
  memoHistory.Lines.Add('Ïîðò îòêðûòü ('+comport.Port+')')
  else
  memoHistory.Lines.Add('Ïîðò íå îòêðûâàåòñÿ');
end;
 
procedure TForm1.OnRead(
  Sender: TObject;
  ReadBytes: array of Byte);
var
  i: Integer;
  TmpStr: string;
begin
  TmpStr := '';
  i := Low(ReadBytes);
  while (i < High(ReadBytes)) and (ReadBytes[i] <> $0D) do
  begin
    TmpStr := TmpStr + chr(ReadBytes[i]);
    inc(i);
  end;
  editAnswer.Text := TmpStr;
  memoHistory.Lines.Add(TmpStr);
end;
 
 
 
procedure TForm1.buttonWriteClick(Sender: TObject);
var
  strWrite: string; // âðåìåííàÿ ïåðåìåííàÿ ASCII ïîñëåäîâàòåëüíîñòè
  arrBytes: array of Byte; // ìàññèâ áàéò êîìàíäû
  i: Integer;
begin
//÷òåíèå êîìàíäû èç ïîëÿ "Êîìàíäà"
  strWrite := editCommand.Text;
  //ïðåîáðàçîâàíèå ïîñëåäîâàòåëüíîñòè ASCII â ìàññèâ áàéò
  SetLength(arrBytes, Length(strWrite)+1);
  for i := Low(arrBytes) to High(arrBytes) do
    arrBytes[i] := Ord(strWrite[i + 1]);
  // ôîðìèðîâàíèå ïðèçíàêà êîíöà êîìàíäû
  arrBytes[High(arrBytes)]:=$0D;
  // çàïñèü ñôîðìèðîâàííîé êîìàíäû â ÑÎÌ-ïîðò
  ComPort.Write(arrBytes[0],length(arrBytes));
  arrBytes := nil;
 
end;
 
procedure TForm1.buttonCloseClick(Sender: TObject);
begin
ComPort.Free;
memoHistory.Lines.Add('Ïîðò çàêðûò.')
end;
 
procedure TForm1.buttonsendClick(Sender: TObject);
begin
if ComPort.Connected then
begin
  ComPort.WriteStr(editCommand.Text+#13);
  memoHistory.Lines.Add('('+editcommand.Text+')');
end;
 
end;
end.
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
12.02.2015, 16:47 15
Цитата Сообщение от Gaint Посмотреть сообщение
procedure OnRead
Странное имя для автоматически созданного обработчика.
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
13.02.2015, 06:58 16
При работе с железом причин почему не работает может быть достаточно много и просто так сразу винить код не стоит. Может не работать программа, может не работать модуль, может быть проблемы в конвертере, может быть проблемы в кабеле. Проверять нужно всё отдельно, т.е. сужать поиски. Я не просто так упомянул про терминалку. Свяжите модуль с терминалкой. Убедитесь что он что-нибудь посылает. Если он работает по запросу, ну так из терминалки и пошлите ему это запрос. Если там всё работает, то тогда нужно связать программу с терминалкой и убедиться, что программа посылает данные. Только после этого имеет смысл проверять всё вместе.

Добавлено через 1 час 3 минуты
Обратил внимание:
ComPort.Free;
нужно заменить:
ComPort.Close;

Добавлено через 1 минуту
Но от этого она не заработает.
Нужно сделать то о чём я написал выше.

Добавлено через 12 часов 14 минут
Да, ещё забыл сказать про настройки, т.к. это вроде как очевидно, но всё-таки, нужно не забыть убедиться что все параметры передачи выставлены корректно (скорость, ...) и соответствуют требованиям модуля.
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
13.02.2015, 08:47  [ТС] 17
Я проверил с помощью DCON-Utility все работает (результат на рис.), отправил код (сигнал) и получил ответ. Но сомневаюсь на счет настройки, когда через этот код Comport.ShowSetupDialog; выбираю параметры сом-порта и нажимаю ОК все выбранные параметры сохраняются? С терминалкой пока еще не проверял. Спасибо заранее!
Delphi 7 COM-port

Delphi 7 COM-port
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
13.02.2015, 10:06 18
По поводу того, сохраняются ли параметры или нет не подскажу. Я говорил уже я сам не использую этот компонент, и не планирую в будущем это делать.

Я думаю имеет смысл попробовать жёстко прописать настройки.
В компоненте есть свойства, их и нужно установить на нужные значения:
TComPort = class(TCustomComPort)
property Port;
property BaudRate;
property Parity;
property StopBits;
property DataBits;

Ещё полезно будет заюзать мониторы порта (что-то вроде снифера), чтобы посмотреть какие реальные пакеты посылает и принимает та работающая программа и Ваша, чтобы можно было сравнить. Я иногда пользуюсь LGComSpy++, но она вроде не работает на виртуальных портах. Терминалка, про которую я писал, тоже вроде умеет, но у меня самого не зарегистрированная её версия и там этого режима нет, а так вроде была эта функция. С другими подобными программами не работал, не в курсе.
1
0 / 0 / 0
Регистрация: 10.12.2014
Сообщений: 34
13.02.2015, 12:12  [ТС] 19
Решил воспользоваться библиотекой synapse, создал класс унаследованный от TThread, который будет реализовывать параллельный поток опроса от сом порта и отображать ответ модуля в полях "ОТВЕТ" и "История выполненных команд" , но выдает ошибку в MainForm.Receive.Text := m_buffer; ? Что делать скажите пожалуйста очень надо!!! Спасибо большое заранеее!!!!!!!

Сом-порт.rar

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Synaser, ExtCtrls;
 
type
  {Threads}
  TreadThread = class (TThread)
  private
    m_buffer: string;
    m_countReceive: Integer;
    m_receive: array[0..100] of Byte; // буфер для чтения ответа модулей
    procedure Showstatus(); // отоброзить ответ модуля
    procedure Execute; override; // алгоритм параллельного потока
    end;
 
type
  TForm1 = class(TForm)
    editCommand: TEdit;
    editAnswer: TEdit;
    buttonOpen: TButton;
    buttonWrite: TButton;
    buttonClose: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    memoHistory: TMemo;
    ButtonClearHis: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure ButtonClearHisClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure buttonOpenClick(Sender: TObject);
    procedure buttonWriteClick(Sender: TObject);
    procedure buttonCloseClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  SerialPort: TBlockSerial;  //  объект сом-порт
  ReadThread: TreadThread;   //  объект параллельного порта
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ButtonClearHisClick(Sender: TObject);
begin
memoHistory.Lines.Clear; // очистка истории выполненных команд
end;
 
// Thread
procedure TReadThread.Showstatus();
var
i: Integer;
begin
// отобразить полученные данные
for i := 0 to m_countReceive-1 do
begin
if m_receive[i] = $0D then
begin
MainForm.Receive.Text := m_buffer;
MainForm.History.Lines.Add(MainForm.Receive.Text);
m_buffer := '';
end
else
m_buffer := m_buffer+char(m_receive[i]);
end;
end;
procedure TReadThread.Execute;
begin
repeat
// определить число полученных байт
m_countReceive := SerialPort.WaitingDataEx();
if m_countReceive > 0 then
begin
// через COM-порт получена информация
// прочитать полученные данные
SerialPort.RecvBuffer(@m_receive, m_countReceive);
// отобразить данные на интерфейсе пользователя
// ВНИМАНИЕ !!!
// Вывод на элементы интерфейса должен осуществляться в
// процедуре, вызываемой как параметр Synchronize!!!
Synchronize(@Showstatus);
end;
until Terminated;
end;
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  // подготовить программу к работе
  memoHistory.Lines.Clear; // отчистка истории выполненных команд
  editAnswer.Text := ''; // ответ модуля
end;
 
procedure TForm1.buttonOpenClick(Sender: TObject);
var
  Speed: Integer;
begin
  // очистить историю и ответ модуля
  memoHistory.Lines.Clear;
  Receive.Text := '';
  Speed := StrToInt(PortSpeed.Text);
  // создать объект COM-порта
  SerialPort:=TBlockserial.Create;
  SerialPort.RaiseExcept:=true;
  // подключиться к заданному порту
  SerialPort.Connect(PortNumber.Text);
  // проверить ошибки подключения и вывести сообщения о них в историю
  memoHistory.Lines.Add(IntToStr(SerialPort.LastError)+'-
  '+SerialPort.LastErrorDesc);
  if SerialPort.LastError<>0 then
  begin
  // завершить попытку подключения, т.к. произошла ошибка
  Exit;
  end;
  // конфигурирование порта (задается скорость, число бит,
  // паритет, старт/стоп биты ...)
  SerialPort.EnableRTSToggle(true);
  SerialPort.Config(Speed, 8,'N',0,false,false);
  // сообщение в историю выполненных команд
  memoHistory.Lines.Add('Порт '+SerialPort.Device+' - открыт.');
  ReadThread:= TReadThread.Create(true);
  ReadThread.Priority:=tpLowest;
  ReadThread.m_buffer := '';
  // запустить параллельный поток
  ReadThread.Resume;
end;
 
 
end;
 
procedure TForm1.buttonWriteClick(Sender: TObject);
begin
  // записать в сом-порт команду
  SerialPort.SendString(MainForm.Command.Text+char($0D));
end;
 
procedure TForm1.buttonCloseClick(Sender: TObject);
begin
  //остановить параллельный поток
  ReadThread.Suspend;
  // освободить Сом-порт (закрыть)
  SerialPort.Free;
  //
  memoHistory.Lines.Add('Порт закрыт.');
end;
 
end.
0
49 / 49 / 7
Регистрация: 23.08.2013
Сообщений: 122
13.02.2015, 13:05 20
Так у Вас там код не правильный, т.е. не ошибки какие-то, и именно код банально не дописан. Ссылки на переменную, которой нет и всё такое. Тут и подсказывать вроде как нечего, нужно код довести до хотя бы какого-то рабочего состояния, чтобы компилировался хотя бы
Ну и если Вы всё-таки начали с другого компонента, ну так и использовали бы его. Я сомневаюсь, что дело в компоненте, скорее всего какие-то другие проблемы, тем более у Вас есть на руках работающая программа.

Добавлено через 15 минут
MainForm - нет (у Вас она Form1), Receive - то же нет

Добавлено через 2 минуты
Поэтому и ошибки

Добавлено через 14 минут
Вы попробуйте наладить сначала общение с модулем через какую-нибудь другую программу вроде той терминалки, которую я посоветовал, или через неё саму, а потом уже пишите свою программу, когда точно будите знать какие команды нужно посылать, и что должно приходить. Когда точно убедитесь, что всё работает. Если что я пример свой первый подправлю, чтобы он посылал команды и принимал ответы. Это просто.
2
13.02.2015, 13:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2015, 13:05
Помогаю со студенческими работами здесь

COM port
В общем имеется такая системка: МК51 сопряжен с Компьютером через СОМ порт. Из МК с определенным...

Well-known Port
Что означает &quot;well-known Port&quot;? Для чего он служит? И можно ли обойтись без эьтих портов?

Com port
Что делать с Com port? Возможно ли переустановить ос через Com port? И какой софт использовать?...

Com port и С++
Хочу отослать данные по ком порту на контроллер.Вот только беда,не отсылается всё сообщение,а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru