亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? unit1.pas

?? 模型飛機(jī)測控平臺是用delphi編寫的串口操作軟件,源碼中涉及到GPS數(shù)據(jù)接收
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart,
  OleCtrls, MSCommLib_TLB;

type
  TForm1 = class(TForm)
    tbshtSignalChart: TPageControl;
    tbshtDebug: TTabSheet;
    rchdtSerialIn: TRichEdit;
    cmbbxSerialIn: TComboBox;
    Label7: TLabel;
    btRecStart: TButton;
    btRecStop: TButton;
    cmbbxBaudIn: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    btRecSave: TButton;
    cmbbxTypeIn: TComboBox;
    cmbbxSerialOut: TComboBox;
    Label13: TLabel;
    cmbbxBaudOut: TComboBox;
    rchdtSerialOut: TRichEdit;
    btSendOut: TButton;
    dtCode1: TEdit;
    lbCode1: TLabel;
    lbCode2: TLabel;
    dtCode3: TEdit;
    cmbbxTypeOut: TComboBox;
    Label16: TLabel;
    Label51: TLabel;
    tmrSerialIn: TTimer;
    MSCommOut: TMSComm;
    MSCommIn: TMSComm;
    dtCode2: TEdit;
    dtCode4: TEdit;
    lbCode3: TLabel;
    lbCode4: TLabel;
    ImgTrace: TImage;
    Label17: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    lbShowAd0: TLabel;
    lbShowAd1: TLabel;
    lbShowAd4: TLabel;
    lbShowAd5: TLabel;
    lbShowAd2: TLabel;
    lbShowGps5: TLabel;
    lbShowGps1: TLabel;
    lbShowAd7: TLabel;
    lbShowAd6: TLabel;
    lbShowAd3: TLabel;
    Label37: TLabel;
    lbShowGps6: TLabel;
    lbShowGps4: TLabel;
    Label53: TLabel;
    Label54: TLabel;
    Label55: TLabel;
    lbShowGps0: TLabel;
    btSaveTrace: TButton;
    btLoadTrace: TButton;
    btSaveData: TButton;
    Label1: TLabel;
    lbShowModel: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label39: TLabel;
    Label40: TLabel;
    lbShowPara0: TLabel;
    lbShowPara1: TLabel;
    lbShowPara2: TLabel;
    lbShowPara3: TLabel;
    lbShowPara4: TLabel;
    lbShowPara5: TLabel;
    lbShowPara6: TLabel;
    lbShowPara7: TLabel;
    Label49: TLabel;
    lbShowGps2: TLabel;
    Label57: TLabel;
    lbShowGps3: TLabel;
    Label59: TLabel;
    cmbbxModel: TComboBox;
    btSetModel: TButton;
    cmbbxParaNo: TComboBox;
    Label38: TLabel;
    Label60: TLabel;
    Label61: TLabel;
    dtParaValue: TEdit;
    btADInit: TButton;
    btSetPara: TButton;
    Label62: TLabel;
    rdgrpDataCode: TRadioGroup;
    dlgSaveData: TSaveDialog;
    dlgLoadTrace: TOpenDialog;
    dlgSaveTrace: TSaveDialog;
    rchdtTmp: TRichEdit;
    Label2: TLabel;
    TabSheet1: TTabSheet;
    chrtAcc: TChart;
    chrtGyro: TChart;
    srsGyroY: TFastLineSeries;
    srsGyroX: TFastLineSeries;
    srsGyroZ: TFastLineSeries;
    srsAcc1: TFastLineSeries;
    srsAcc2: TFastLineSeries;
    chrtHeight: TChart;
    srsHeight: TFastLineSeries;
    Label12: TLabel;
    btCharClear: TButton;
    tbshtSignal: TTabSheet;
    procedure FormCreate(Sender: TObject);
    procedure btRecStartClick(Sender: TObject);
    procedure btRecStopClick(Sender: TObject);
    procedure btRecSaveClick(Sender: TObject);
    procedure btSendOutClick(Sender: TObject);
    procedure tmrSerialInTimer(Sender: TObject);
    procedure btSetModelClick(Sender: TObject);
    procedure btSetParaClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btSaveTraceClick(Sender: TObject);
    procedure btLoadTraceClick(Sender: TObject);
    procedure btADInitClick(Sender: TObject);
    procedure btSaveDataClick(Sender: TObject);
    procedure btCharClearClick(Sender: TObject);
    procedure dtCode1Change(Sender: TObject);
    procedure dtCode2Change(Sender: TObject);
    procedure dtCode3Change(Sender: TObject);
    procedure dtCode4Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    InitADDataFlag:Boolean;    
  end;
 /////////////////////////////////////////////////////////////////
{
串口接受線程
}
  TSerialInThread =class(TThread)
  private
        SerialInput:Variant;           //保存該線程從串口獲取得到的數(shù)據(jù)矩陣
        Seriallength : integer;        //該線程需要處理的數(shù)據(jù)的個(gè)數(shù)
        SerialStr:String;              //用于保存處理后數(shù)據(jù)的字符串變量

  protected
        procedure Execute; override;    //需要重載
        procedure GetData;              //從串口獲取數(shù)據(jù)的過程
        procedure TransToStr;              //轉(zhuǎn)換為適合顯示的字符串的過程
        procedure PostData ;            //顯示在用戶界面的過程
  end;
  /////////////////////////////////////////////////////////////////
  { 
  串口發(fā)送線程
  }
  TSerialOutThread =class(TThread)
  private
        DataOrCode:Boolean;             //是否要求輸出指令,F(xiàn)alse表明輸出數(shù)據(jù)
        SerialOutput:String;            //發(fā)送數(shù)據(jù)時(shí)的數(shù)據(jù)矩陣
        Seriallength : integer;         //發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)長度
        tmpVar:Variant;                 //發(fā)送指令時(shí)的數(shù)據(jù)矩陣
        CheckOk:Boolean;                //用戶確定的數(shù)據(jù)或是指令是否有錯(cuò)誤

  protected
        procedure Execute; override;    //需要重載
        procedure GetData;              //從用戶界面獲取需要輸出的數(shù)據(jù)或是指令代碼
        procedure PackData;             //根據(jù)協(xié)議打包數(shù)據(jù)
        procedure PackCode;             //根據(jù)協(xié)議打包指令
        procedure PostData;             //發(fā)送給串口控件,實(shí)現(xiàn)數(shù)據(jù)的發(fā)送                
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
const
        GpsDataCountMax : integer = 20;         //GPS數(shù)據(jù)包中數(shù)據(jù)的個(gè)數(shù)
        ParaDataCountMax: integer = 9;          //參數(shù)數(shù)據(jù)包中數(shù)據(jù)的個(gè)數(shù)
        ADDataCountMax:integer =16;             //傳感器數(shù)據(jù)包中數(shù)據(jù)的個(gè)數(shù)

var
        {
        實(shí)現(xiàn)線程互斥的句柄。
        }
        hMutex:THandle =0;                      //串口接受數(shù)據(jù)的線程使用的互斥句柄
        hMutex2:THandle =0;                      //串口發(fā)送數(shù)據(jù)的線程使用的互斥句柄
        {
        用于指令上下傳的全局變量
        }
        ReceiveCharFlag:Boolean;                 //是否以字符接受串口,F(xiàn)alse表示以數(shù)據(jù)接受
        ParaDataFlag:Boolean;                  //正在截取參數(shù)數(shù)據(jù)包的標(biāo)志
        GPSDataFlag:Boolean;                    //正在截取GPS數(shù)據(jù)包的標(biāo)志
        ADDataFlag:Boolean;                     //正在截取傳感器數(shù)據(jù)包的標(biāo)志

        ParaNewDataFlag:Boolean;                //截取完參數(shù)的標(biāo)志
        GPSNewDataFlag:Boolean;                 //截取完GPS數(shù)據(jù)包的標(biāo)志
        ADNewDataFlag:Boolean;                  //截取完傳感器數(shù)據(jù)包的標(biāo)志

        ParaDataCount:Integer;                  //截取參數(shù)數(shù)據(jù)包的計(jì)數(shù)器
        ADDataCount:Integer;                    //截取傳感器數(shù)據(jù)包的計(jì)數(shù)器
        GpsDataCount:Integer;                   //截取GPS數(shù)據(jù)包的計(jì)數(shù)器
        
        DownStr:String;                         //用于保存串口下傳的所有數(shù)據(jù)
        GpsStr:String;                          //保存GPS數(shù)據(jù)包的數(shù)據(jù)
        ADStr:String;                           //保存?zhèn)鞲衅鲾?shù)據(jù)包的數(shù)據(jù)

        ParaDataArray:array[0..8] of Byte;      //接受參數(shù)數(shù)據(jù)包的數(shù)組
        GpsDataArray:array[0..19] of Byte;      //接受GPS數(shù)據(jù)包的數(shù)組
        ADDataArray:array[0..15] of Byte;       //接受傳感器數(shù)據(jù)包的數(shù)組
        ADDataDblArray:array[0..7] of double;   //傳感器實(shí)際的采樣值        
        ADDataArrayMean:array[0..13] of Byte;   //保存?zhèn)鞲衅黛o態(tài)均值的數(shù)組。
                            //不考慮系統(tǒng)電壓。 

        ParaStrArray:array[0..3] of String;     //顯示參數(shù)數(shù)據(jù)的字符串?dāng)?shù)組
        GpsStrArray:array[0..6] of String;      //顯示GPS數(shù)據(jù)的字符串?dāng)?shù)組
        ADStrArray:array[0..7] of String;       //顯示傳感器的字符串?dāng)?shù)組
        {
        用于指令上下傳的全局變量
        }
        CodeOutStr:array[1..4] of String;       //當(dāng)前上傳的指令代碼
        CodeInStr:array[0..3] of String;        //下傳返回的指令代碼      
        {
        用于繪圖的全局變量
        }
        gpsMeta: TMetaFile;                             //用于保存軌跡圖像的對象
        posXArray,posYArray: array of double;           //保存當(dāng)前飛行軌跡點(diǎn)的數(shù)組
        posXArrayLoad,posYArrayLoad: array of double;   //保存載入的軌跡點(diǎn)的數(shù)組
        posLength: Integer;                             //當(dāng)前飛行軌跡點(diǎn)的總數(shù)
        posLengthLoad: Integer;                         //當(dāng)前飛行軌跡點(diǎn)的總數(shù)

      {
      函數(shù)hex()是將0~f字符轉(zhuǎn)換為0~15的整數(shù)。
      }
      function hex(c:String):Integer ;
       var
         x:integer;
       begin
          if (c='0') or (c=' ') then
            x:=0
          else if c='1' then
            x:=1
          else if c = '2' then
            x:=2
          else if c='3' then
            x:=3
          else if c='4' then
            x:=4
          else if c='5' then
            x:=5
          else if c='6' then
            x:=6
          else if c='7' then
            x:=7
          else if c='8' then
            x:=8
          else if c='9' then
            x:=9
         else if ((c='a') or (c='A')) then
            x:=10
         else if (c='b') or (c='B') then
            x:=11
         else if (c='c') or (c='C') then
            x:=12
         else if (c='d') or (c='D') then
            x:=13
         else if (c='e') or (c='E') then
            x:=14
         else if (c='f') or (c='F') then
            x:=15
         else
            x:=-1;
          Result:=x;
       end;

       function HexToInt(S:String): Integer;
       var
          tmpInt1,tmpInt2:Integer ;
       begin
          if Length(S)=1 then
          begin
             Result:=hex(S[1]);
          end
          else if Length(S)=2 then
          begin
            tmpInt1:=hex(S[1]);
            tmpInt2:=hex(S[2]);
            if (tmpInt1=-1) or (tmpInt2=-1) then
               Result:=-1
            else
               Result:= tmpInt1*16+tmpInt2;
          end
          else
               Result:=-1;
       end;        

function GetMaxValue(x,y,x1,y1: Array of Double;len,len1: Integer): double;
var
  i: Integer;
begin
  result := 0;
  for i:=0 to len-1 do
  begin
    if abs(x[i])>result then
      result := abs(x[i]);
    if abs(y[i]) > result then
      result := abs(y[i]);
  end;
  for i:=0 to len1-1 do
  begin
    if abs(x1[i])>result then
      result := abs(x1[i]);
    if abs(y1[i]) > result then
      result := abs(y1[i]);
  end;
end;
/////////////////////////////////////////////////////////////////
{   繪制飛行軌跡的函數(shù)

     紅色軌跡是載入的,
     藍(lán)色的軌跡是當(dāng)前軌跡點(diǎn)
     
 1.  posXArray,posYArray 是當(dāng)前軌跡點(diǎn)的坐標(biāo),
     posLength是當(dāng)前軌跡點(diǎn)的個(gè)數(shù)
 2.  posXArrayLoad,posYArrayLoad 是載入的軌跡點(diǎn)的坐標(biāo),
     posLengthLoad是載入的軌跡點(diǎn)的個(gè)數(shù)
     
}
procedure DrawAxis;
var
  i,x,y,wid,h: Integer;
  pstep,ratio,maxV : double;
  can: TMetaFileCanvas;
begin
  can := TMetaFileCanvas.Create(gpsMeta,0);             //建立一個(gè)畫布對象
  gpsMeta.Width := Form1.ImgTrace.Width;                //確定畫布對應(yīng)圖像的大小
  gpsMeta.Height := Form1.ImgTrace.Height;
  wid := gpsMeta.Width;
  h := gpsMeta.Height;
  {
  確定直角坐標(biāo)的最大值,取10,100,200,500,1000,2000,5000,10000,50000,100000 的最小值
  缺省狀態(tài)取 100
  }
  maxV := GetMaxValue(posXArray,posYArray,posXArrayLoad,posYArrayLoad,posLength,posLengthLoad);
  if maxV = 0 then
    maxV := 100;
  if maxV <= 10 then
  begin
    maxV := 10;
  end
  else if maxV <= 100 then
  begin
    maxV := 100;
  end
  else if maxV <= 200 then
    maxV := 200
  else if maxV<= 500 then
    maxV := 500
  else if maxV <= 1000 then
  begin
    maxV := 1000;
  end
  else if maxV<= 2000 then
    maxV := 2000
  else if maxV<= 5000 then
    maxV := 5000
  else if maxV <= 10000 then
  begin
    maxV := 10000;
  end
  else if maxV<= 50000 then
    maxV := 50000
  else if maxV <=100000 then
  begin
    maxV := 100000;
  end
  else
  begin
    maxV := 1000000;
  end;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合狠狠综合| 国产欧美精品国产国产专区| 国产河南妇女毛片精品久久久| 亚洲人成在线观看一区二区| 日韩欧美成人激情| 在线免费观看视频一区| 国产精品一区专区| 91美女蜜桃在线| 精品一区二区在线视频| 亚洲成人av福利| 亚洲欧美怡红院| 久久精品一区四区| 在线成人av网站| 日本久久电影网| 北条麻妃一区二区三区| 国产乱码精品一区二区三区忘忧草| 午夜a成v人精品| 亚洲午夜一区二区| 亚洲三级在线播放| 国产精品久久久久一区二区三区| 精品欧美黑人一区二区三区| 欧美精品日韩一本| 欧美色综合久久| 欧美性色黄大片| 色婷婷国产精品| 色婷婷综合激情| 色偷偷久久一区二区三区| k8久久久一区二区三区| 处破女av一区二区| 国产在线日韩欧美| 国产综合成人久久大片91| 日韩在线卡一卡二| 五月婷婷欧美视频| 亚洲电影你懂得| 亚洲国产成人tv| 亚洲动漫第一页| 亚洲综合色区另类av| 亚洲伦在线观看| 亚洲黄色小说网站| 一区二区三区免费看视频| 国产精品不卡视频| 亚洲欧美激情一区二区| 亚洲黄色在线视频| 午夜成人免费电影| 琪琪一区二区三区| 国产一区二区剧情av在线| 国产精品一色哟哟哟| 成人午夜碰碰视频| 91在线视频播放地址| 91精品91久久久中77777| 在线区一区二视频| 91精品婷婷国产综合久久性色| 91麻豆精品国产91久久久久| 欧美一区二区三区在| 精品福利一区二区三区| 亚洲国产成人私人影院tom| 国产精品成人在线观看| 亚洲综合视频网| 日韩精品一区第一页| 久久99久久99小草精品免视看| 国产乱国产乱300精品| 不卡的电影网站| 亚洲欧洲日韩一区二区三区| 日韩理论在线观看| 亚洲国产sm捆绑调教视频| 热久久国产精品| 国产在线精品国自产拍免费| 99国内精品久久| 欧美伦理视频网站| 久久综合国产精品| 综合久久给合久久狠狠狠97色| 亚洲一区二三区| 狠狠色丁香婷婷综合| 99久久久精品免费观看国产蜜| 欧美日韩一区二区在线观看视频| 精品国产乱码久久久久久夜甘婷婷 | 国产精品久久久久久久久久免费看| 亚洲欧美在线高清| 美女视频网站久久| av日韩在线网站| 欧美精品三级在线观看| 国产嫩草影院久久久久| 亚洲一区二区av电影| 国产一区二区三区黄视频| 日本道色综合久久| 欧美成人免费网站| 一区二区三区欧美在线观看| 久久精品国产秦先生| 色婷婷综合久久久久中文一区二区 | 国产婷婷一区二区| 亚洲二区视频在线| 成人app在线观看| 91精品国产综合久久小美女| 亚洲视频在线一区二区| 日本vs亚洲vs韩国一区三区二区| 日本一区二区三区四区| 亚洲不卡一区二区三区| 成人av中文字幕| 日韩精品中文字幕一区| 亚洲已满18点击进入久久| 国产精品一二三四区| 91精品国产91久久久久久最新毛片| 国产精品成人免费精品自在线观看 | 国产一区二区不卡| 欧美电影一区二区| 亚洲欧美视频在线观看| 国产在线播放一区三区四| 欧美性色综合网| 亚洲人成网站在线| 国产一区中文字幕| 欧美一区二区三区色| 亚洲午夜在线视频| 91亚洲国产成人精品一区二区三 | 国产精品国产馆在线真实露脸 | 欧美人妇做爰xxxⅹ性高电影| 国产视频一区二区在线| 欧美aaaaaa午夜精品| 欧美亚洲一区三区| 中文字幕一区二区三区四区| 国产成人精品影视| 久久综合狠狠综合久久激情| 强制捆绑调教一区二区| 欧美日韩一区二区三区四区| 亚洲精品菠萝久久久久久久| 成人av片在线观看| 中文字幕av资源一区| 丁香五精品蜜臀久久久久99网站| 精品国产91九色蝌蚪| 国产综合久久久久久鬼色 | 欧美色大人视频| 一二三区精品福利视频| 色欧美片视频在线观看在线视频| 中文av字幕一区| 成人午夜免费视频| 亚洲欧洲av在线| 91在线观看污| 亚洲激情校园春色| 色哟哟精品一区| 一区二区三区四区视频精品免费| 91亚洲男人天堂| 一区二区三区四区精品在线视频| 91蝌蚪porny成人天涯| 亚洲精品午夜久久久| 欧美在线一区二区三区| 五月天久久比比资源色| 91精品国产91久久久久久一区二区| 日本免费新一区视频| 欧美xingq一区二区| 国产在线精品一区二区夜色 | 91福利社在线观看| 亚洲国产中文字幕在线视频综合| 欧美特级限制片免费在线观看| 午夜精品一区二区三区免费视频| 欧美一区二区三区在| 国产一区二区免费看| 亚洲欧美自拍偷拍色图| 欧美日韩一区二区三区免费看| 欧美亚洲尤物久久| 视频一区二区三区中文字幕| 日韩欧美高清在线| 丁香激情综合国产| 一区二区三区蜜桃| 欧美一区二区三区在线| 国产盗摄视频一区二区三区| 国产精品污www在线观看| 色天使色偷偷av一区二区| 日韩电影在线一区二区三区| 精品不卡在线视频| 91在线小视频| 男女男精品视频| 国产精品乱码人人做人人爱 | 欧洲精品在线观看| 精品影视av免费| 亚洲欧洲美洲综合色网| 51久久夜色精品国产麻豆| 国产69精品久久久久毛片| 亚洲综合视频在线观看| 久久综合精品国产一区二区三区| 91丝袜高跟美女视频| 免费在线看一区| 亚洲欧美日韩国产成人精品影院 | 成人欧美一区二区三区在线播放| 欧美久久久久久蜜桃| 国产成人在线看| 天天做天天摸天天爽国产一区| 久久亚区不卡日本| 欧美日韩一卡二卡三卡| 国产成人免费av在线| 午夜电影网一区| 国产精品久久久久久久蜜臀| 91精品国产综合久久久久久久久久 | 美女视频黄 久久| 亚洲色图在线视频| 久久麻豆一区二区| 欧美日韩一区精品| 99精品视频在线播放观看| 九九九久久久精品| 午夜欧美在线一二页| 亚洲人成在线播放网站岛国| 久久久99久久精品欧美|