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

📄 gpsunit.pas

📁 GPS本开发工具是友利华(河南)高科技开发有限公司集多年开发、使用GPS OEM 板的经验 开发的一套软硬件。它具有多种GPS OEM 板的接口能力
💻 PAS
字号:
unit GpsUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, Spin, ExtCtrls, SPComm, IniFiles;

type
  TGpsForm = class(TForm)
    Comm1: TComm;
    GroupBox1: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    Memo1: TMemo;
    Panel1: TPanel;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Panel2: TPanel;
    Button1: TButton;
    Et_out: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    RadioGroup1: TRadioGroup;
    SaveDialog1: TSaveDialog;
    Memo2: TMemo;
    Memo3: TMemo;
    BitBtn5: TBitBtn;
    procedure Comm1DataReceived(Sender: TObject; Buffer: Pointer;
      BufferLength: Word);
    procedure FormShow(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
  private
    { Private declarations }
    ShowRec:boolean;
    procedure MyAdd(cmd:string);
  public
    { Public declarations }
  end;

var
  GpsForm: TGpsForm;

implementation

uses MainUnit, GprsUnit;

{$R *.dfm}

procedure TGpsForm.Comm1DataReceived(Sender: TObject; Buffer: Pointer;
  BufferLength: Word);
var j:integer;
    p:PByteArray;
    s:string;
begin
  p:=buffer;
  s:='';
  for j:=0 to BufferLength-1 do begin
    s:=s+char(p^[j]);
  end;         {}
  MyAdd(s);
  if not ShowRec then exit;
  s:='';
  Memo1.Lines.BeginUpdate;
  for j:=0 to BufferLength-1 do begin
    case RadioGroup1.ItemIndex of
      0: s:=s+' '+inttohex(p^[j],2);
      1: s:=s+' '+inttostr(p^[j]);
      2: s:=s+char(p^[j]);
    end;
  end;         {}
  Memo1.Lines.Add(s);
  Memo1.Lines.EndUpdate;
end;

procedure TGpsForm.MyAdd(cmd:string);
var j,i:integer;
  ss,sn:string;
  s1:string[6];
begin
  Memo3.Lines.Text:=cmd;
  for j:=0 to Memo3.Lines.Count-1 do begin
    ss:=Memo3.Lines.Strings[j];
    s1:=ss;
    if s1='$GPRMC' then begin
      Memo2.Lines.CommaText:=ss;
      if Memo2.Lines.Count>=13 then begin
        ss:=Memo2.Lines.Strings[1];
        sn:=copy(ss,1,2)+':'+copy(ss,3,2)+':'+copy(ss,5,2);
        ss:=Memo2.Lines.Strings[2];
        if ss='A' then begin
          sn:=sn+#13+'定位状态:定位';
          GprsForm.GPSxx:=s1+','+Memo2.Lines.Strings[3]+','+Memo2.Lines.Strings[5]+',*';
        end
        else begin
          sn:=sn+#13+'定位状态:不定位';
          GprsForm.GPSxx:='';
        end;
        ss:=Memo2.Lines.Strings[3];
        sn:=sn+#13+copy(ss,1,2)+'度'+copy(ss,3,7)+'分';
        ss:=Memo2.Lines.Strings[4];
        if ss='N' then sn:=sn+'北纬'
        else sn:=sn+'南纬';
        ss:=Memo2.Lines.Strings[5];
        sn:=sn+#13+copy(ss,1,3)+'度'+copy(ss,4,7)+'分';
        ss:=Memo2.Lines.Strings[6];
        if ss='E' then sn:=sn+'东经'
        else sn:=sn+'西经';
        ss:=Memo2.Lines.Strings[7];
        sn:=sn+#13+'速度:'+floattostr(strtofloat(ss)*1.852)+'km/h';
        ss:=Memo2.Lines.Strings[9];
        sn:=sn+#13+copy(ss,5,2)+'-'+copy(ss,3,2)+'-'+copy(ss,1,2);
        Memo2.Lines.Text:=sn;
      end;

    end;
  end;
end;

procedure TGpsForm.FormShow(Sender: TObject);
begin
  ShowRec:=true;
  ComboBox1.Text:=Comm1.CommName;
  ComboBox2.Text:=inttostr(Comm1.BaudRate);
end;

procedure TGpsForm.BitBtn2Click(Sender: TObject);
begin
  Memo1.Lines.Clear;
end;

procedure TGpsForm.BitBtn1Click(Sender: TObject);
begin
  ShowRec:=not ShowRec;
  if ShowRec then
    BitBtn1.Caption:='暂停显示'
  else BitBtn1.Caption:='继续显示';
end;

procedure TGpsForm.BitBtn3Click(Sender: TObject);
begin
  SaveDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
  if SaveDialog1.Execute then
    Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TGpsForm.Button1Click(Sender: TObject);
begin
  if Trim(Et_out.Text)='' then exit;
  Comm1.writeStr:=Et_out.Text+#13#10;
end;

procedure TGpsForm.FormCreate(Sender: TObject);
var Inif:TIniFile;
  sf:string;
begin
  sf:=CurPath+'set.ini';
  Inif:=TIniFile.Create(sf);
  Comm1.CommName:=Inif.ReadString('GPS','Com','COM2');
  Comm1.BaudRate:=Inif.ReadInteger('GPS','BaudRate',4800);
  Inif.Destroy;
end;

procedure TGpsForm.BitBtn5Click(Sender: TObject);
var Inif:TIniFile;
  sf:string;
begin
  Comm1.StopComm;
  Comm1.CommName:=ComboBox1.Text;
  Comm1.BaudRate:=strtointdef(ComboBox2.Text,4800);
  Comm1.StartComm;
  sf:=CurPath+'set.ini';
  Inif:=TIniFile.Create(sf);
  Inif.WriteString('GPS','Com',Comm1.CommName);
  Inif.WriteInteger('GPS','BaudRate',Comm1.BaudRate);
  Inif.Destroy;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -