⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpstestu.pas

📁 根据水潭改编
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -