📄 untgetrailwaydata.pas
字号:
unit untGetRailWayData;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SPComm, ExtCtrls;
type
TfrmGetRailData = class(TForm)
Panel1: TPanel;
cbPort: TComboBox;
Label2: TLabel;
Panel2: TPanel;
ledtLong: TLabeledEdit;
ledtLat: TLabeledEdit;
cbTube: TCheckBox;
cbStandard: TCheckBox;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Edit2: TEdit;
Comm1: TComm;
procedure FormCreate(Sender: TObject);
procedure cbPortChange(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmGetRailData: TfrmGetRailData;
ReciveCount:LongInt;
implementation
{$R *.dfm}
uses unitData;
procedure TfrmGetRailData.FormCreate(Sender: TObject);
begin
try
comm1.StartComm;
except
Application.MessageBox('打开串口失败!','错误',MB_ICONERROR);
end;
ReciveCount := 0;
end;
procedure TfrmGetRailData.cbPortChange(Sender: TObject);
begin
try
Comm1.StopComm;
except
end;
Comm1.CommName := cbPort.Text;
try
Comm1.StartComm;
except
Application.MessageBox('打开串口失败!','错误',MB_ICONERROR);
end;
end;
procedure TfrmGetRailData.Button1Click(Sender: TObject);
var
SendBuffer: array [0..5] of char;
begin
SendBuffer[0] := 'c';
SendBuffer[1] := 'd';
SendBuffer[2] := '1';
SendBuffer[3] := chr(1);;
SendBuffer[4] := '0';
SendBuffer[5] := '1';
Comm1.WriteCommData(SendBuffer,6);
end;
procedure TfrmGetRailData.Comm1ReceiveData(Sender: TObject;
Buffer: Pointer; BufferLength: Word);
var
ReceiveBuffer: array[0..38] of char;
i: Integer;
Longitude: array [0..9] of char;
Latitude: array[0..8] of char;
begin
Move(Buffer^,ReceiveBuffer,BufferLength);
if BufferLength = 40 then
begin
if ReceiveBuffer[31] <> 'A' then
exit;
for i:=0 to 8 do
begin
Longitude[i] := ReceiveBuffer[i + 14];
Latitude[i] := ReceiveBuffer[i + 4];
end;
Longitude[9] := ReceiveBuffer[23];
ledtLong.Text := LongiTude;
ledtLat.Text := Latitude;
dm.tblRailwayGPS.Append;
dm.tblRailwayGPS.FieldByName('经度').AsString := LongiTude;
dm.tblRailwayGPS.FieldByName('纬度').AsString := Latitude;
if cbTube.Checked then
dm.tblRailwayGPS.FieldByName('隧道').AsString := '隧道';
if cbStandard.Checked then
begin
dm.tblRailwayGPS.FieldByName('标志').AsString := '标称点';
dm.tblRailwayGPS.FieldByName('里程').AsFloat := StrToFloat(edit1.Text);
end;
dm.tblRailwayGPS.Post;
Inc(ReciveCount);
Edit2.Text := IntToStr(ReciveCount);
end;
end;
procedure TfrmGetRailData.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TfrmGetRailData.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Comm1.StopComm;
end;
procedure TfrmGetRailData.Timer1Timer(Sender: TObject);
var
SendBuffer: array [0..5] of char;
begin
SendBuffer[0] := 'c';
SendBuffer[1] := 'd';
SendBuffer[2] := '1';
SendBuffer[3] := chr(1);;
SendBuffer[4] := '0';
SendBuffer[5] := '1';
Comm1.WriteCommData(SendBuffer,6);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -