📄 gpstestu.pas
字号:
unit GPSTESTU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus, ComCtrls, Buttons, Grids, SPComm, ExtCtrls, jpeg,
OleCtrls, MapObjects2_TLB, ComObj, StdActns, ActnList, ImgList,
MoIMS_TLB, XPMan;
type
TForm1 = class(TForm)
StatusBar1: TStatusBar;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Timer1: TTimer;
Comm1: TComm;
PageControl2: TPageControl;
TabSheet3: TTabSheet;
GroupBox1: TGroupBox;
Label4: TLabel;
Label5: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
BitBtn1: TBitBtn;
BitBtn0: TBitBtn;
TabSheet4: TTabSheet;
GroupBox2: TGroupBox;
Label14: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
CheckBox10: TCheckBox;
CheckBox11: TCheckBox;
CheckBox12: TCheckBox;
CheckBox13: TCheckBox;
CheckBox14: TCheckBox;
BitBtn5: TBitBtn;
BitBtn6: TBitBtn;
ComboBox3: TComboBox;
GroupBox3: TGroupBox;
Label9: TLabel;
Edit4: TEdit;
Label10: TLabel;
Edit5: TEdit;
Label13: TLabel;
Edit8: TEdit;
Label11: TLabel;
Edit6: TEdit;
Label6: TLabel;
Edit1: TEdit;
Label7: TLabel;
Edit2: TEdit;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Timer2: TTimer;
GroupBox5: TGroupBox;
Edit18: TEdit;
Edit19: TEdit;
Button1: TButton;
Memo1: TMemo;
StringGrid1: TStringGrid;
GroupBox4: TGroupBox;
Label8: TLabel;
Label22: TLabel;
Label12: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label23: TLabel;
Edit3: TEdit;
Edit16: TEdit;
Edit7: TEdit;
Edit9: TEdit;
Edit10: TEdit;
Edit11: TEdit;
Edit12: TEdit;
Edit13: TEdit;
Edit14: TEdit;
Edit15: TEdit;
Edit17: TEdit;
Map1: TMap;
BitBtn7: TBitBtn;
BitBtn8: TBitBtn;
BitBtn9: TBitBtn;
MainMenu1: TMainMenu;
ActionList1: TActionList;
ImageList1: TImageList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
F1: TMenuItem;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
Q1: TMenuItem;
O1: TMenuItem;
N5: TMenuItem;
E1: TMenuItem;
N6: TMenuItem;
A1: TMenuItem;
C1: TMenuItem;
T1: TMenuItem;
P1: TMenuItem;
D1: TMenuItem;
N7: TMenuItem;
V1: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
H1: TMenuItem;
N11: TMenuItem;
XPManifest1: TXPManifest;
WebLink1: TWebLink;
procedure BitBtn1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);
procedure BitBtn0Click(Sender: TObject);
function GetGpsMess(MessString: String; MessNum: integer) : String;
function GpsDateFormat(DateString: String) : String;
function GpsTimeFormat(TimeString: String) : String;
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure BitBtn5Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
procedure BitBtn7Click(Sender: TObject);
procedure BitBtn8Click(Sender: TObject);
procedure Map1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure BitBtn9Click(Sender: TObject);
procedure Q1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
GPSBuffers: String;
GPSMessString: String;
implementation
{$R *.DFM}
function TForm1.GpsTimeFormat(TimeString: String) : String;
function GpsChnTimeFormat (TimeString: String) : String;
var
i: integer;
begin
Result := '';
if length(TimeString) = 2 then
begin
i := strtoint(TimeString) + 8;
if i > 23 then i := 0;
if i < 10 then Result := '0' + inttostr(i)
else Result := inttostr(i);
end;
end;
begin
Result := '';
if length(TimeString) = 6 then
begin
Result := GpsChnTimeFormat(copy(TimeString, 1, 2)) + '时' + copy(TimeString, 3, 2) + '分' + copy(TimeString, 5, 2) + '秒';
end;
end;
function TForm1.GpsDateFormat(DateString: String) : String;
begin
Result := '';
if length(DateString) = 6 then
begin
Result := '20' + copy(DateString, 5, 2) + '年' + copy(DateString, 3, 2) + '月' + copy(DateString, 1, 2) + '日';
end;
end;
function TForm1.GetGpsMess(MessString: String; MessNum: integer) : String;
var
str: String;
i, k: integer;
s: byte;
begin
str := MessString;
i := Pos('*', str);
if (i < 10) or (str[1] <> '$') then
begin
Result := '';
Exit;
end;
s := 0;
for k := 2 to i - 1 do
begin
s := s xor byte(str[k]);
end;
if inttohex(s, 2) <> Copy(str, i + 1, 2) then
begin
Result := '';
Exit;
end;
str[1] := ',';
str[i] := ',';
k := 0;
for i := 0 to MessNum do
begin
k := Pos(',', str);
str[k] := #7;
end;
i := Pos(',', str);
str := Copy(str, k + 1, i - k - 1);
Result := str;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Comm1.PortOpen := false;
Comm1.CommName := ComboBox1.Text;
Comm1.PortOpen := true;
if Comm1.PortOpen = true then
begin
ComboBox2.Color := clWindow;
ComboBox2.Enabled := false;
StatusBar1.Panels.Items[1].Text := '选定的串口已打开,波特率为';
StatusBar1.Panels.Items[1].Text := StatusBar1.Panels.Items[1].Text +ComboBox2.text;
end
else
begin
ComboBox2.Color := clWindow;
ComboBox2.Enabled := true;
StatusBar1.Panels.Items[1].Text := '无此串口或已被打开!!!请选择其他串口设备!!!';
end;
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
Comm1.PortOpen := false;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
begin
ComboBox1.ItemIndex := 1;//COM2
ComboBox2.ItemIndex := 2;//4800
ComboBox3.ItemIndex := 2;//4800
ComboBox2.Enabled := true;
ComboBox2.Color := clWindow;
// Comm1.CommPort := 2;
Comm1.BaudRate := 4800;//波特率4800
Comm1.ParityCheck := False;//无校验
Comm1.Parity := None;//无校验
Comm1.ByteSize := _8;//8位数据位
Comm1.StopBits := _2;//2位停止位
// Comm1.PortOpen := true;
for i := 1 to 5 do
begin
Comm1.CommPort := i;
Comm1.PortOpen := true;
if Comm1.PortOpen = true then
begin
ComboBox1.ItemIndex := i - 1;
ComboBox2.Color := clWindow;
ComboBox2.Enabled := false;
StatusBar1.Panels.Items[2].Text := 'GPS导航软件设计by stlouisy';
StatusBar1.Panels.Items[1].Text := '串口';
StatusBar1.Panels.Items[1].Text := StatusBar1.Panels.Items[1].Text + inttostr(i);
StatusBar1.Panels.Items[1].Text := StatusBar1.Panels.Items[1].Text + '已打开!';
break;
end
end;
StringGrid1.ColCount := 5;
StringGrid1.RowCount := 2;
StringGrid1.Cells[0, 0] := '序号';
StringGrid1.Cells[1, 0] := '经度';
StringGrid1.Cells[2, 0] := '纬度';
StringGrid1.Cells[3, 0] := '速度';
StringGrid1.Cells[4, 0] := '地点';
StringGrid1.Cells[0, 1] := inttostr(1);
end;
procedure TForm1.BitBtn0Click(Sender: TObject);
begin
Comm1.PortOpen := false;
ComboBox2.Color := clwindow;
ComboBox2.Enabled := true;
StatusBar1.Panels.Items[1].Text := '串口关闭';
end;
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Edit3.Text := '等待接收...';
Edit4.Text := '等待接收...';
Edit3.Text := '等待接收...';
Edit4.Text := '等待接收...';
Edit5.Text := '等待接收...';
Edit6.Text := '等待接收...';
Edit7.Text := '等待接收...';
Edit8.Text := '等待接收...';
Edit9.Text := '等待接收...';
Edit10.Text := '等待接收...';
Edit11.Text := '等待接收...';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -