Работа с com port rs232
Добавлено: 02 окт 2013, 15:21
Добрый день!
Я пишу программу для весового индикатора, чтобы тот при получении команды делал определенные действия. Пример команд:
команда - действие
A - QUERY/SET WEIGHT IN F4 FORMAT
R - RESET SYSTEM
P - QUERY/SETNWEIGHT WITH RESPONSE ACCORDING TO THE SELECTED FORMAT
$ - and does not require <cr>
и т.д.
При взвешивании прибор показывает определенный вес, который мне нужно вывести в моей программе и вбить в базу это самая основная задача. База уже есть вот только проблема в том что код написал, отправляю команду на действие ничего не происходит. Пытался добиться чтобы хотя бы перезагружался при помощи команды R, ничего не выходит проверяю все написанное программой portmon. Пишу на RAD Studio XE - delphi). Писать начал сравнительно недавно поэтому опыт небольшой. Вот собственно код:
Я пишу программу для весового индикатора, чтобы тот при получении команды делал определенные действия. Пример команд:
команда - действие
A - QUERY/SET WEIGHT IN F4 FORMAT
R - RESET SYSTEM
P - QUERY/SETNWEIGHT WITH RESPONSE ACCORDING TO THE SELECTED FORMAT
$ - and does not require <cr>
и т.д.
При взвешивании прибор показывает определенный вес, который мне нужно вывести в моей программе и вбить в базу это самая основная задача. База уже есть вот только проблема в том что код написал, отправляю команду на действие ничего не происходит. Пытался добиться чтобы хотя бы перезагружался при помощи команды R, ничего не выходит проверяю все написанное программой portmon. Пишу на RAD Studio XE - delphi). Писать начал сравнительно недавно поэтому опыт небольшой. Вот собственно код:
Код: Выделить всё
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CPort;
type
TForm3 = class(TForm)
//TComAscii = class(TComponent)
btn1: TButton;
btn2: TButton;
lbl1: TLabel;
lbl2: TLabel;
cmprt1: TComPort;
btn4: TButton;
edit2: TEdit;
grp1: TGroupBox;
lbl3: TLabel;
btn3: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure cmprt1RxChar(Sender: TObject; Count: Integer);
procedure btn3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
command: string;
result: string;
implementation
{$R *.dfm}
//открытие порта
procedure TForm3.btn1Click(Sender: TObject);
begin
cmprt1.Open;
if cmprt1.Connected then
lbl1.Caption := 'Порт открыт'
else
lbl1.Caption := 'Порт закрыт';
//if (CommHandle=invalid_handle_value) then ShowMessage('Выберите порт!') else
end;
//закрытие порта
procedure TForm3.btn2Click(Sender: TObject);
begin
cmprt1.Close;
lbl1.Caption := 'Порт закрыт';
end;
//Функция перевода в HEX
function StringtoHex(Data: string): string;
var
i, i2: Integer;
s: string;
begin
i2 := 1;
for i := 1 to Length(Data) do
begin
Inc(i2);
if i2 = 2 then
begin
s := s + ' ';
i2 := 1;
end;
s := s + IntToHex(Ord(Data[i]), 2);
end;
Result := s;
end;
//Отправить данные
procedure TForm3.btn4Click(Sender: TObject);
begin
command := #$52 + #13;
cmprt1.WriteStr(command);
end;
procedure TForm3.cmprt1RxChar(Sender: TObject; Count: Integer);
begin
result := IntToStr(cmprt1.ReadStr(result, Count));
end;
procedure TForm3.btn3Click(Sender: TObject);
begin
lbl3.Caption := result;
end;
end.