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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? main.pas

?? 一個通過串口讀寫WAV語音文件的的小程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,  ComCtrls, ToolWin, Menus,Registry, StdCtrls, Buttons,
  CPort, CPortCtl, ExtCtrls;

type
  TparaArray = array [0..7] of   byte;
  //********數據傳送命令格式******************
      {發送格式 命令號0X00~0X0F}
  Tdatasend = packed Record
      Sendpc : byte;
      Recpc  : byte;
      mlh    : byte;
      databuff : TparaArray;
      momedata : array [0..3] of byte;
      Rec      : byte;
  end;
      {回應格式}
  TdataRec = packed Record
      Recpc  : byte;
      mlh    : byte;
      databuff : TparaArray;
      momedata : array [0..4] of byte;
      Rec      : byte;
  end;

  //************寫頁命令格式**************
          {發送格式 命令號 := 0X10}
  TWriteCard = packed Record
      Sendpc : byte;
      Recpc  : byte;
      mlh    : byte;
      card_k : Smallint;
      card_y : byte;
      momedata: array [0..8] of byte;
      Rec      : byte;
  end;
         {回應格式}
  TRe_WriteCard = packed Record
      Recpc  : byte;
      mlh    : byte;
      card_k : Smallint;
      card_y : byte;
      momedata: array [0..9] of byte;
      Rec      : byte;
  end;

  //***************執行讀頁命令************
        {發送格式 命令號 := 0x11}
  TReadCard = packed Record
      Sendpc : byte;
      Recpc  : byte;
      mlh    : byte;
      card_k : Smallint;
      card_y : byte;
      momedata: array [0..8] of byte;
      Rec      : byte;
  end;
       {接受格式}
  TRe_ReadCard = packed Record
      Recpc  : byte;
      mlh    : byte;
      card_k : Smallint;
      card_y : byte;
      momedata: array [0..9] of byte;
      Rec      : byte;
  end;

  //***************擦出指定塊**********
           {發送格式 命令號  :=0x12}
  TEarseCard = packed Record
      Sendpc : byte;
      Recpc  : byte;
      mlh    : byte;
      card_k : Smallint;
      momedata: array [0..9] of byte;
      Rec      : byte;
  end;
  TRe_EarseCard = packed Record
      Recpc  : byte;
      mlh    : byte;
      card_k : Smallint;
      momedata: array [0..10] of byte;
      Rec      : byte;
  end;

  //**************停止語音輸出************
             {發送格式 命令號 := 0x13}
  TStopSound = packed Record
      Sendpc : byte;
      Recpc  : byte;
      mlh    : byte;
      momedata: array [0..11] of byte;
      Rec      : byte;
  end;
  TRe_StopSound = packed Record
      Recpc  : byte;
      mlh    : byte;
      momedata: array [0..12] of byte;
      Rec      : byte;
  end;

  //**************啟動語音輸出************
             {發送格式 命令號 := 0x13}
  TopenSound = packed Record
      Sendpc : byte;
      Recpc  : byte;
      mlh    : byte;
      momedata: array [0..11] of byte;
      Rec      : byte;
  end;
  TRe_openSound = packed Record
      Recpc  : byte;
      mlh    : byte;
      momedata: array [0..12] of byte;
      Rec      : byte;
  end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    ComLed1: TComLed;
    ComLed2: TComLed;
    ComLed3: TComLed;
    ComLed4: TComLed;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ComLed5: TComLed;
    ComLed6: TComLed;
    Label1: TLabel;
    Label6: TLabel;
    ComLed7: TComLed;
    Label7: TLabel;
    Memo1: TMemo;
    ComPort: TComPort;
    sbtn_open: TSpeedButton;
    sbtn_seting: TSpeedButton;
    sbtn_selectFile: TSpeedButton;
    sbtn_send: TSpeedButton;
    OpenDialog1: TOpenDialog;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    procedure sbtn_setingClick(Sender: TObject);
    procedure sbtn_openClick(Sender: TObject);
    procedure sbtn_selectFileClick(Sender: TObject);
    procedure ComPortAfterClose(Sender: TObject);
    procedure ComPortAfterOpen(Sender: TObject);
    procedure sbtn_sendClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure ComPortRxChar(Sender: TObject; Count: Integer);
    procedure SpeedButton4Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    hevent : THandle;
    sendtype : integer;   //0:語音數據;1:寫卡指令;2:讀卡指令;3:擦卡指令;4:停止放音;5:開始放音
    datasend  : Tdatasend;
    dataRec,DataRec_bak   : TDataRec;
    WriteCard : TWriteCard;
    Re_writeCard,Re_writeCard_bak  : TRe_WriteCard;
    ReadCard  : TReadCard;
    Re_ReadCard,Re_ReadCard_Bak  : TRe_ReadCard;
    EarseCard     : TEarseCard;
    Re_Earsecard ,Re_Earsecard_bak : TRe_EarseCard;
    stopsound     : TStopSound;
    Re_stopsound,Re_stopsound_Bak  : TRe_StopSound;
    Opnesound     : TopenSound;
    Re_opensound,Re_opensound_Bak  : TRe_openSound;

    isbuscc : boolean;

    WavFileName : string;
    procedure GetCOMName(Sender : TCombobox);
    procedure SendData(pFileName : string);

    function GetDatasend(pMlh : byte; pdata : TparaArray) : Tdatasend;
    function GetWritecard(pcard_k : smallint; pcard_y : byte) : TWriteCard;
    function GetReadcard(pcard_k : smallint; pcard_y : byte) : TReadCard;
    function GetEarsecard(pcard_k : smallint) : TEarseCard;
    function Getstopsound : TStopSound;
    function Getopensound : TopenSound;
    function GetdataRec(pMlh : byte; pdata : TparaArray) : TdataRec;
    function GetRe_Writecard(pcard_k : smallint; pcard_y : byte) : TRe_WriteCard;
    function GetRe_Readcard(pcard_k : smallint; pcard_y : byte) : TRe_ReadCard;
    function GetRe_Earsecard(pcard_k : smallint) : TRe_EarseCard;
    function GetRe_stopsound : TRe_StopSound;
    function GetRe_opensound : TRe_openSound;
    function CompareDataRec(DataRec1,DataRec2 : TdataRec) : Boolean;
    function CompareRe_writecard(DataRec1,DataRec2 : TRe_WriteCard) : Boolean;
    function CompareRe_ReadCard(DataRec1,DataRec2 : TRe_ReadCard) : Boolean;
    function compareRe_Earsecard(DataRec1,DataRec2 : TRe_EarseCard) : Boolean;
    function CompareRe_stopsound(DataRec1,DataRec2 : TRe_StopSound) : Boolean;
    function CompareRe_opensound(DataRec1,DataRec2 : TRe_openSound) : Boolean;
  end;

var
  Form1: TForm1;

implementation
uses ucomThread;
{$R *.dfm}

{ TForm1 }

procedure TForm1.GetCOMName(Sender: TCombobox);
var
  Registry: TRegistry;
  Value:TRegKeyInfo;
  i:integer;
  List:TStringList;
begin
  //在注冊表中查找可用串口
  Sender.Items.Clear;  //清空選擇項
  try
    Registry:=TRegistry.Create;       //創建注冊表
    try
      List:=TStringList.Create;       //創建字符串列表,裝入注冊表的鍵名
      Registry.RootKey:=HKEY_LOCAL_MACHINE;
      //如果打開成功
      if Registry.OpenKey('\HardWare\DeviceMap\SerialComm',False) then
      begin
        Registry.GetKeyInfo(Value);   //得到鍵數量
        Registry.GetValueNames(List); //得到鍵名
        for i:=0 to Value.NumValues-1 do
        begin
        //加入選擇項
          Sender.items.Add(Registry.ReadString(List.Strings[i]));
        end;
      end;
    finally
      List.Free;
    end;
  finally
    Registry.Free;
  end;
end;

procedure TForm1.sbtn_setingClick(Sender: TObject);
begin
   ComPort.ShowSetupDialog;
end;

procedure TForm1.sbtn_openClick(Sender: TObject);
begin
   try
      if ComPort.Connected then
      begin
        ComPort.Close ;
        Memo1.Lines.Add('串口已關閉!');
      end
      else
      begin
        ComPort.Open;
        Memo1.Lines.Add('串口已打開!');
      end;
   except
       Memo1.Lines.Add('串口操作失敗!');
       MessageBox(Application.Handle,pchar('端口打開失??!'),pchar('信息提示'),MB_OK);
   end;
end;

procedure TForm1.sbtn_selectFileClick(Sender: TObject);
begin
    if opendialog1.Execute then
    WavFileName := OpenDialog1.FileName;
    sbtn_send.Enabled := True;
end;

procedure TForm1.SendData(pFileName: string);
var  wavFile : TFileStream;
     wavLen  : integer;
     stempstr : string[4];
     swavLen : array [0..3] of byte;
     sendnum,EndNum,cardy_num ,i, sendID : integer;
     cardk_num : Word;
     sdata : TparaArray;
     stemp1 : TdataRec;
     stemp2 : TdataRec;
begin
    cardk_num :=0;
    stopsound := Getstopsound;
    Re_stopsound_Bak := GetRe_stopsound;
    sendtype := 4;
    isbuscc := False;
    ComPort.Write(stopsound,16);
    resetevent(hevent);
    if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
    begin
       Re_stopsound := Re_stopsound_Bak;
       memo1.Lines.Add('接收超時,重新發送');
       ComPort.Write(stopsound,16);
       if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
       begin
         memo1.Lines.Add('接收超時,重新發送');
         ComPort.Write(stopsound,16);
       end;
    end;

    EarseCard := GetEarsecard(cardK_num);
    Re_Earsecard_bak := GetRe_Earsecard(cardk_num);
    sendtype := 3;
    isbuscc := False;
    ComPort.Write(Earsecard,16);
    ResetEvent(hevent);
    if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
    begin
       Re_Earsecard := Re_Earsecard_bak;
       memo1.Lines.Add('接收擦卡超時,重新發送');
       ComPort.Write(Earsecard,16);
       ResetEvent(hevent);
       if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
       begin

       memo1.Lines.Add('接收擦卡超時,重新發送');
       ComPort.Write(Earsecard,16);
       end;
    end;

    memo1.Lines.Add('開始發送語音文件......');
    sendnum :=0;
    endnum  := 0;

    cardy_num := 0;
    sendID := 0;
    wavLen := 0 ;
    stempstr := '';
    wavFile := TFileStream.Create(pFileName,fmopenRead);
    wavLen :=  wavFile.Size -44;
    wavFile.Position :=45 ;

    EndNum := wavLen mod 8 ;
    if EndNum = 0 then sendnum := wavlen div 8  else sendnum := wavlen div 8 + 1;
    for i := 0 to sendnum - 1 do
    begin
        if (EndNum <> 0) and (i = sendnum - 1 )then
        begin
            wavFile.Read(sData,EndNum);
            DataSend := GetDatasend(sendID,sdata);
            DataRec_Bak := getDataRec(SendID,sData);
            sendtype := 0;
            ComPort.Write(DataSend,16);
            {resetevent(hevent);
            if WaitForSingleObject(hevent,500) = WAIT_TIMEOUT then
            begin
                stemp1 := DataRec_bak;
                stemp2 := dataRec;
                memo1.Lines.Add('接收超時,重新發送');
                ComPort.Write(DataSend,16);
                resetevent(hevent);
               if WaitForSingleObject(hevent,500) = WAIT_TIMEOUT then
               begin
                  stemp1 := DataRec_bak;
                  stemp2 := dataRec;
                  memo1.Lines.Add('接收超時,重新發送');
                 ComPort.Write(DataSend,16);
               end;
            end; }

            WriteCard := GetWritecard(cardK_num,cardy_num);
            Re_writeCard_bak := GetRe_Writecard(cardk_num,cardy_num);
            sendtype := 1;
            isbuscc := False;
            comport.Write(writecard,16);
           { resetevent(hevent);
            if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
            begin
                Re_writeCard := Re_writeCard_bak;
                memo1.Lines.Add('接收超時,重新發送');
                ComPort.Write(writecard,16);
                resetevent(hevent);
              if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
              begin

                memo1.Lines.Add('接收超時,重新發送');
                ComPort.Write(writecard,16);
              end;
            end;   }
            Break;
        end
        else WavFile.Read(Sdata,8);
        DataSend := GetDatasend(sendID,sdata);
        DataRec_Bak := getDataRec(SendID,sData);
        sendtype := 0;
        ComPort.Write(DataSend,16);
       { resetevent(hevent);
        if WaitForSingleObject(hevent,500) = WAIT_TIMEOUT then
            begin
                stemp1 := DataRec_bak;
                stemp2 := dataRec;
                memo1.Lines.Add('接收超時,重新發送');
                ComPort.Write(DataSend,16);
                resetevent(hevent);
               if WaitForSingleObject(hevent,500) = WAIT_TIMEOUT then
               begin
                stemp1 := DataRec_bak;
                stemp2 := dataRec;
                memo1.Lines.Add('接收超時,重新發送');
                ComPort.Write(DataSend,16);

              end;

            end; }

        if sendID = 15 then
        begin
            WriteCard := GetWritecard(cardK_num,cardy_num);
            Re_writeCard_bak := GetRe_Writecard(cardk_num,cardy_num);
            sendtype := 1;
            isbuscc := False;
            comport.Write(writecard,16);
            resetevent(hevent);
            if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
            begin
                memo1.Lines.Add('接收寫卡超時,重新發送'+inttostr(cardK_num)+'--'+inttostr(cardy_num));
                Re_writeCard := Re_writeCard_bak;
                ComPort.Write(writecard,16);
                resetevent(hevent);
               if WaitForSingleObject(hevent,1000) = WAIT_TIMEOUT then
               begin
                  memo1.Lines.Add('接收寫卡超時,重新發送'+inttostr(cardK_num)+'--'+inttostr(cardy_num));

                  ComPort.Write(writecard,16);

               end;

            end;

            SendID := 0;
            if cardy_num = 31 then
            begin
                cardy_num := 0;
                inc(cardK_num,1);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
94-欧美-setu| 欧美日产国产精品| 丝袜亚洲另类丝袜在线| 久久久久久日产精品| 欧美亚洲禁片免费| 国产精品18久久久久久久久久久久| 一片黄亚洲嫩模| 国产欧美日韩精品a在线观看| 欧美日韩一区不卡| 99久久精品99国产精品| 精品制服美女久久| 亚洲mv大片欧洲mv大片精品| 亚洲欧美偷拍另类a∨色屁股| 久久久精品免费网站| 制服丝袜亚洲网站| 欧美日韩中文另类| k8久久久一区二区三区| 国产高清不卡一区二区| 奇米亚洲午夜久久精品| 亚洲成人在线观看视频| 综合婷婷亚洲小说| 国产精品伦理在线| 日本一区二区免费在线观看视频| 日韩免费看的电影| 欧美一级黄色大片| 制服丝袜成人动漫| 欧美精品在线观看播放| 欧美午夜精品免费| 欧洲色大大久久| 91性感美女视频| 91女厕偷拍女厕偷拍高清| 成人动漫一区二区| 国产v综合v亚洲欧| 国产盗摄精品一区二区三区在线 | 精品sm捆绑视频| 欧美一二三区在线| 日韩精品一区二区三区三区免费| 欧美人与禽zozo性伦| 欧美性感一类影片在线播放| 91国偷自产一区二区三区成为亚洲经典 | 亚洲与欧洲av电影| 一区二区高清在线| 亚洲一区二区三区在线播放| 亚洲线精品一区二区三区八戒| 亚洲精品国产精品乱码不99| 亚洲精品福利视频网站| 一区二区视频在线| 亚洲一区二区在线视频| 亚洲aⅴ怡春院| 日韩高清在线不卡| 麻豆成人免费电影| 国产精品一区一区| 99热在这里有精品免费| 91麻豆精品在线观看| 欧美吞精做爰啪啪高潮| 欧美精品日韩精品| 精品欧美乱码久久久久久1区2区| 精品粉嫩超白一线天av| 国产免费久久精品| 中文字幕在线不卡视频| 亚洲一区二区精品视频| 免费观看成人鲁鲁鲁鲁鲁视频| 激情综合网最新| 成人亚洲一区二区一| 色菇凉天天综合网| 日韩欧美国产综合| 国产精品免费视频观看| 亚洲精品国产成人久久av盗摄 | 欧美日韩精品电影| 精品久久人人做人人爽| 国产精品伦理在线| 午夜精品久久久久久久| 国产又黄又大久久| 91论坛在线播放| 日韩一级欧美一级| 国产精品理伦片| 午夜精品福利视频网站| 国产在线一区二区综合免费视频| 91在线视频网址| 精品国产精品网麻豆系列| 亚洲国产高清在线观看视频| 一区二区三区日本| 久久 天天综合| 色屁屁一区二区| 精品国产青草久久久久福利| 亚洲天堂中文字幕| 美女视频黄 久久| 色屁屁一区二区| 久久九九99视频| 亚洲一区二区三区免费视频| 国产99一区视频免费| 欧美日韩国产美女| 国产精品网站一区| 日韩精品一级中文字幕精品视频免费观看 | 国产乱子伦视频一区二区三区| 一本一道波多野结衣一区二区| 日韩精品一区国产麻豆| 亚洲美女免费视频| 国产精品88888| 在线成人av网站| 亚洲欧美日韩久久精品| 国产精品一级片| 欧美一级一区二区| 一区二区高清视频在线观看| 国产91在线看| 精品久久一二三区| 日本不卡视频在线| 一本色道久久综合精品竹菊| 国产亚洲精品bt天堂精选| 日本vs亚洲vs韩国一区三区二区| 日本黄色一区二区| 日韩美女精品在线| 国产91露脸合集magnet| 精品国内二区三区| 日韩av二区在线播放| 欧美怡红院视频| 亚洲特级片在线| 99综合影院在线| 国产欧美视频一区二区| 国产一区二区在线看| 日韩一区国产二区欧美三区| 首页综合国产亚洲丝袜| 在线国产电影不卡| 亚洲激情图片小说视频| av电影在线观看一区| 国产精品国产三级国产| 成人性视频网站| 国产精品乱码久久久久久| 国产成人久久精品77777最新版本| 精品久久久网站| 狠狠色丁香婷综合久久| 久久婷婷成人综合色| 国产又黄又大久久| 国产人成亚洲第一网站在线播放| 国产一区二区三区综合| 久久久不卡影院| 成人一二三区视频| 亚洲欧美综合另类在线卡通| 91网站视频在线观看| 亚洲精品中文在线| 欧美特级限制片免费在线观看| 一区二区三区四区高清精品免费观看 | 国产成人自拍网| 国产精品久久久久一区二区三区 | 成av人片一区二区| 1区2区3区欧美| 欧美怡红院视频| 黑人精品欧美一区二区蜜桃| 欧美精品一区二区三区一线天视频| 国产主播一区二区三区| 国产欧美日韩精品a在线观看| 北条麻妃国产九九精品视频| 亚洲三级久久久| 欧美日韩国产免费一区二区| 蜜臀久久99精品久久久久久9 | 亚洲精品乱码久久久久久久久 | 欧美日韩国产精品成人| 裸体在线国模精品偷拍| 久久综合九色综合97婷婷女人| 国产91丝袜在线播放| 亚洲你懂的在线视频| 7777精品伊人久久久大香线蕉超级流畅 | 91精品蜜臀在线一区尤物| 久久91精品久久久久久秒播| 国产免费观看久久| 欧洲av在线精品| 精品一区二区三区视频在线观看| 中日韩av电影| 欧美日韩在线观看一区二区 | 国产午夜亚洲精品不卡 | 精品福利一二区| 99久久久国产精品免费蜜臀| 性久久久久久久| 国产欧美一区二区精品秋霞影院| 色婷婷久久99综合精品jk白丝| 免费人成精品欧美精品| 国产精品萝li| 69堂亚洲精品首页| 成人久久久精品乱码一区二区三区| 亚洲一区二区美女| 久久久精品人体av艺术| 欧美日韩色一区| 国产成人精品aa毛片| 午夜精品久久久久久久99水蜜桃| 欧美国产1区2区| 欧美一卡二卡在线观看| 91麻豆精东视频| 韩国v欧美v亚洲v日本v| 亚洲香肠在线观看| 国产精品全国免费观看高清| 91精品国产色综合久久不卡电影| 成人免费的视频| 青娱乐精品在线视频| 自拍偷拍国产精品| 久久精品一区二区三区四区| 欧美视频精品在线观看| 波多野结衣精品在线| 国内精品国产三级国产a久久 | 91在线观看下载| 国产精品影视在线|