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

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

?? tcomm1.pas

?? RS232串口通訊隨書源碼
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
     //指定新值
     dcb.BaudRate := tmpValue;
     dcb.Flags := 1; //必須指定為1
     dcb.Parity := Ord( FParity );//Parity的指定
     FParityCheck:=False;
     if Ord(FParity)<>0 then FParityCheck:=True;
     if FParityCheck then
        dcb.Flags := dcb.Flags or dcb_ParityCheck;          // Enable parity check
     // 設置硬件流量控制
     Case FHwHandShaking of
      hhNone:;
      hhNoneRTSON:
          dcb.Flags := dcb.Flags or dcb_RTSControlEnable;
      hhRTSCTS:
          dcb.Flags := dcb.Flags or dcb_RTSControlHandShake or dcb_OutxCtsFlow;
     end;
     //設置軟件流量控制
     Case FSwHandShaking of
      shNone:;
      shXonXoff:
          dcb.Flags := dcb.Flags or dcb_OutX or dcb_InX;
     end;
     //設置數據位數
     dcb.ByteSize := Ord( FDataBits ) + 5;
     //設置停止位數
     dcb.StopBits := Ord( FStopBits );
     //將設置寫入
     SetCommState( hComm, dcb )
end;

procedure TComm.SetPortOpen(b:Boolean);
begin
  if b then //若指定打開通信端口,則…
  begin
   if FPortOpen then
   begin
     MessageDlg('COM Port has been opened!', mtError, [mbOK], 0);
     exit;
   end; //FportOpen loop
   OpenComm; //打開通信端口
   exit;
  end; //b loop
  CloseComm;
end;

//指定傳輸速度
procedure TComm.SetBaudRate( Rate : TBaudRate );
begin
     if Rate = FBaudRate then
        Exit;
     FBaudRate := Rate;
     if hComm <> 0 then
        _SetCommState
end;

//硬件流量控制
procedure TComm.SetHwHandShaking( c: THwHandShaking);
begin
     if c = FHwHandShaking then
        Exit;
     FHwHandShaking := c;
     if hComm <> 0 then
        _SetCommState
end;

//軟件交握指定
procedure TComm.SetSwHandShaking( c : TSwHandShaking );
begin
     if c = FSwHandShaking then
        Exit;
     FSwHandShaking := c;
     if hComm <> 0 then
        _SetCommState
end;

//設置數據位數
procedure TComm.SetDataBits( Size : TDataBits );
begin
     if Size = FDataBits then
        Exit;
     FDataBits := Size;
     if hComm <> 0 then
        _SetCommState
end;

//設置極性檢查方式
procedure TComm.SetParity( p : TParity );
begin
     if p = FParity then
        Exit;
     FParity := p;
     if hComm <> 0 then
        _SetCommState
end;

//設置停止位
procedure TComm.SetStopBits( Bits : TStopBits );
begin
     if Bits = FStopBits then
        Exit;
     FStopBits := Bits;
     if hComm <> 0 then
        _SetCommState
end;

//讀取CD狀態
function TComm.ReadCDHolding():Boolean;
begin
   Result:=FCDHolding;
end;

//讀取DSR狀態
function TComm.ReadDSRHolding():Boolean;
begin
   Result:=FDSRHolding;
end;

//讀取RI狀態
function TComm.ReadRIHolding():Boolean;
begin
   Result:=FRIHolding;
end;

//讀取CTS狀態
function TComm.ReadCTSHolding():Boolean;
begin
   Result:=FCTSHolding;
end;

//設置DTR狀態
procedure TComm.SetDTRStatus(b:Boolean);
begin
  if hComm=0 then exit ;
  FDTR:=b;
  if b then
   EscapeCommFunction(hComm,SETDTR) //將DTR升至高電壓
  else
   EscapeCommFunction(hComm,CLRDTR);//將DTR降至低電壓
end;

//設置RTS狀態
procedure TComm.SetRTSStatus(b:Boolean);
begin
  if hComm=0 then
   begin
    ECommError.Create('COM Port is not opened yet!');
    exit ;
   end;
  FRTS:=b;
  if b then
   EscapeCommFunction(hComm,SETRTS) //將RTS升至高電壓
  else
   EscapeCommFunction(hComm,CLRRTS); //將RTS降至低電壓
end;

//返回數據
function TComm.ReadInputData():String;
begin
  if hComm=0 then
   begin
    ECommError.Create('COM Port is not opened yet!');
   end;
  //決定每一次的指令要返回多少的字符(以Byte為單位)
  ReadProcess;
  Result:=FInputData;
end;

//返回數據
function TComm.ReadInputByte(var AP:PByte):DWORD;
begin
  if hComm=0 then
  begin
    ECommError.Create('COM Port is not opened yet!');
  end;
  ReadProcess;//執行讀取函數
  AP:= @FInputByteData[0];//取得數據地址
  Result:=High(FInputByteData);//取得數據數組的最高索引值
end;


//讀取數據的字節數
function TComm.ReadInDataCount():DWORD;
var
    CS:         TCOMSTAT;
    dwCommError:DWORD;
begin
  ClearCommError(hComm,dwCommError,@CS);  //取得狀態
  Result:=CS.cbInQue;
end;

//清空數據緩沖區
procedure TComm.SetInDataCount(StrNO:DWORD);
begin
 if StrNo<>0 then exit ;
 PurgeComm(hComm, PURGE_RXCLEAR)  // 清除COM 數據
end;

//線路狀態的數值
function TComm.ReadCommEvent():DWORD;
begin
  Result:=FCommEvent;
end;

//錯誤狀態值的讀取
function TComm.ReadCommError():DWORD;
begin
  Result:=FCommError;
end;


//設置引發接收事件的閥值
procedure TComm.SetRThreshold(RTNo:DWORD);
begin
  FRThreshold:=RTNo;
end;

//以下是實際的讀取動作
Procedure TComm.ReadProcess;
var
   nBytesRead:            DWORD;
   dwCommError:           DWORD;
   CS:                    TCOMSTAT;
   i,ReadLen:             DWORD;
begin
     //使用ClearCommError得知有多少的數據在緩沖區中
     //并得知錯誤種類
     ClearCommError(hComm,dwCommError,@CS);  //取得狀態
     FCommError:=dwCommError; //錯誤數值
     if cs.cbInQue <>0 then //若緩沖區有數據,則讀取
     begin
       if InputLen=0 then //指定讀取的數據數
         ReadLen:=cs.cbInQue
       else
         ReadLen:=InputLen;
       if cs.cbInQue > sizeof(szInputBuffer) then
         PurgeComm(hComm, PURGE_RXCLEAR)  // 清除COM 數據
       else
         begin
           //讀取數據
           if ReadFile(hComm, szInputBuffer,ReadLen,nBytesRead,nil) then // 接收COM 的數據
           begin
             //取出數據
             FInputData:=Copy(szInputBuffer,1,ReadLen);
             //設置字節數組長度
             SetLength(FInputByteData,ReadLen);
             //將數據搬到數組中
               for i:=0 to ReadLen-1 do
                FInputByteData[i]:=ord(szInputBuffer[i]);
           end;  //ReadFile Loop
         end;//else Loop
     end; //cs.binQue Loop
end;

//取得線路的狀態
procedure TComm.GetModemState;
var
   dwModemState : DWORD;
begin
     if hComm=0 then
     begin
      raise ECommError.Create('COM Port is not opened yet!');
     end;
     //取得線路狀態
     FCommEvent:=0;
     if GetCommModemStatus( hComm, dwModemState ) then
      begin
       //判斷CD狀態
       if (dwModemState and  MS_RLSD_ON)=MS_RLSD_ON then
        begin
          if not FCDHolding then FCommEvent:= EV_RLSD;
          FCDHolding:=True;
        end
       else
        begin
          if FCDHolding then FCommEvent:= EV_RLSD;
          FCDHolding:=False;
        end;
       //判斷DSR狀態
       if (dwModemState and  MS_DSR_ON)=MS_DSR_ON then
        begin
          if not FDSRHolding then FCommEvent:=FCommEvent + EV_DSR;
          FDSRHolding:=True;
        end
       else
        begin
          if FDSRHolding then FCommEvent:=FCommEvent + EV_DSR;
          FDSRHolding:=False;
        end;
       //判斷RI狀態
      if (dwModemState and  MS_RING_ON)=MS_RING_ON then
        begin
          if not FRIHolding then FCommEvent:=FCommEvent + EV_RING;
          FRIHolding:=True;
        end
       else
        begin
          if FRIHolding then FCommEvent:=FCommEvent + EV_RING;
          FRIHolding:=False;
        end;
      //判斷CTS狀態
      if (dwModemState and  MS_CTS_ON)=MS_CTS_ON then
        begin
          if not FCTSHolding then FCommEvent:=FCommEvent + EV_CTS;
          FCTSHolding:=True;
        end
       else
        begin
          if FCTSHolding then FCommEvent:=FCommEvent + EV_CTS;
          FCTSHolding:=False;
        end;
      end;
end;


procedure Register;
begin
     RegisterComponents('System', [TComm])
end;
//組件的定時器程序,在此會決定事件是否被觸發
procedure TComm.ProcTimer(Sender: TObject);
var
 tmpValue:   DWORD;
 dwCommError:DWORD;
 CS:         TCOMSTAT;
begin
    if hComm=0 then exit;
    //若設置讀取的字符數,檢查并觸發事件
     ClearCommError(hComm,dwCommError,@CS);  //取得狀態
     FCommError:=dwCommError; //錯誤數值
    if FRThreshold>0 then
    begin
     if cs.cbInQue >=FRthreshold then
       ReceiveData();
    end;
    GetModemState;
    Application.ProcessMessages; //看有無其它的指令需執行,以免鎖住
    //檢查線路狀態是否發生改變,若改變則觸發事件
    tmpValue:=ReadCommEvent;
    if tmpValue<>0 then  ModemStateChange(tmpValue);
     Application.ProcessMessages; //看有無其它的指令需執行,以免鎖住
    //若發生錯誤,則引發錯誤
    tmpValue:=ReadCommError;
    if tmpValue<>0 then ReceiveError(tmpValue);
     Application.ProcessMessages; //看有無其它的指令需執行,以免鎖住
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久图片| 国产精品久久久久久久久久免费看| 久久精品亚洲精品国产欧美kt∨| 日韩美女视频一区| 久久精品国产99久久6| 一本久久a久久精品亚洲| 2021久久国产精品不只是精品| 亚洲一区二区三区在线看| 国产高清精品在线| 欧美一级黄色大片| 亚洲一卡二卡三卡四卡无卡久久| 国产激情91久久精品导航 | 久久久久久久综合日本| 亚洲国产成人高清精品| 色哟哟在线观看一区二区三区| 久久久久免费观看| 国产制服丝袜一区| 日韩精品中午字幕| 一区二区三区精品在线| 色综合一个色综合亚洲| 成人免费一区二区三区在线观看| 国产一区91精品张津瑜| 久久一留热品黄| 韩国一区二区在线观看| 精品入口麻豆88视频| 蜜臀国产一区二区三区在线播放 | 一区二区三区加勒比av| 91日韩一区二区三区| 国产精品久久久99| 99久久99精品久久久久久| 成人欧美一区二区三区小说 | 国内外成人在线视频| 日韩欧美国产一二三区| 乱中年女人伦av一区二区| 91精品国产入口| 理论片日本一区| 26uuu亚洲婷婷狠狠天堂| 久久99精品国产麻豆不卡| 精品欧美久久久| 不卡av免费在线观看| 欧美经典一区二区三区| 菠萝蜜视频在线观看一区| 亚洲欧美综合在线精品| 在线亚洲免费视频| 丝袜脚交一区二区| 欧美成人精品1314www| 国产麻豆精品久久一二三| 国产精品国产三级国产a| 色国产综合视频| 天堂影院一区二区| 久久久久综合网| 91在线码无精品| 日韩电影一区二区三区四区| www久久久久| 色天天综合色天天久久| 三级一区在线视频先锋| 久久精品一区蜜桃臀影院| 99精品国产91久久久久久| 亚洲国产另类av| 精品久久久久久久久久久久久久久 | 国产大陆亚洲精品国产| 日韩理论片一区二区| 在线不卡一区二区| 国产成人在线视频免费播放| 成人欧美一区二区三区视频网页| 欧美区一区二区三区| 国产成人精品免费| 视频一区二区三区入口| 国产精品视频在线看| 制服丝袜亚洲精品中文字幕| 国产大陆亚洲精品国产| 五月婷婷久久综合| 国产精品久久久久久久久免费丝袜 | 久久久五月婷婷| 色哟哟一区二区在线观看| 狠狠色丁香久久婷婷综合丁香| 亚洲美女精品一区| 久久久另类综合| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区在线视频| 成人97人人超碰人人99| 麻豆极品一区二区三区| 亚洲综合色自拍一区| 国产片一区二区三区| 欧美日韩高清不卡| 91在线观看视频| 国产伦精品一区二区三区在线观看| 亚洲一区av在线| 自拍偷拍亚洲综合| 欧美精品一区二区精品网| 欧美日韩美少妇| 91九色最新地址| 99re成人在线| 成人动漫在线一区| 国产乱码精品一区二区三| 免费在线欧美视频| 亚洲6080在线| 亚洲国产一区在线观看| 中文字幕在线一区| 国产日本一区二区| 国产日韩欧美精品在线| 欧美成人精品高清在线播放 | 九九久久精品视频| 日本欧美在线看| 午夜激情综合网| 亚洲国产精品欧美一二99| 亚洲美女电影在线| 一级做a爱片久久| 综合久久久久综合| 亚洲精品成人天堂一二三| 日韩伦理免费电影| 亚洲日本成人在线观看| 亚洲欧洲www| 一区二区三区精品视频| 亚洲一区二区综合| 亚洲午夜影视影院在线观看| 亚洲无人区一区| 午夜欧美在线一二页| 亚洲国产精品一区二区尤物区| 亚洲午夜免费视频| 日av在线不卡| 国模无码大尺度一区二区三区 | 秋霞午夜av一区二区三区| 手机精品视频在线观看| 日韩1区2区日韩1区2区| 精品一区二区影视| 国产美女一区二区| 99免费精品视频| 日本道精品一区二区三区| 欧美日韩精品一区二区三区| 欧美一区二区不卡视频| 精品国产成人系列| 国产亚洲视频系列| 亚洲欧洲中文日韩久久av乱码| 亚洲激情图片qvod| 日本aⅴ亚洲精品中文乱码| 国产一区二区三区蝌蚪| 99久久精品国产一区| 欧美日韩综合色| www国产精品av| 亚洲日本丝袜连裤袜办公室| 天堂一区二区在线免费观看| 国内精品久久久久影院色| 91麻豆6部合集magnet| 欧美一区二区三区免费观看视频 | eeuss鲁片一区二区三区在线观看| 99久久er热在这里只有精品66| 欧美色欧美亚洲另类二区| 精品国产三级电影在线观看| 亚洲欧洲性图库| 免费高清成人在线| 亚洲天堂a在线| 色婷婷av一区二区三区之一色屋| 一本大道av伊人久久综合| 欧美美女黄视频| 欧美激情一区二区三区蜜桃视频 | 91一区二区在线观看| 欧美久久一二三四区| 欧美极品aⅴ影院| 日韩黄色免费电影| www.亚洲激情.com| 日韩欧美不卡在线观看视频| 亚洲欧美日韩一区| 韩国一区二区视频| 欧美巨大另类极品videosbest| 国产精品狼人久久影院观看方式| 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人激情黄色小说| 欧美一区二区三区视频在线观看| 国产精品国模大尺度视频| 经典三级视频一区| 欧美精品日韩一本| 亚洲精选一二三| aaa国产一区| 国产欧美精品一区二区三区四区| 无码av免费一区二区三区试看| 不卡视频一二三四| 日本一区二区综合亚洲| 精品亚洲aⅴ乱码一区二区三区| 欧美视频一区二| 亚洲欧美日韩中文播放| 成人免费观看视频| 久久尤物电影视频在线观看| 久久国产婷婷国产香蕉| 91精品国产综合久久小美女| 亚洲国产视频一区二区| 色综合久久久久久久久久久| 国产精品久久久久久久蜜臀| 国产麻豆一精品一av一免费 | 中文字幕一区二区三区色视频 | 日本va欧美va精品发布| 欧美男人的天堂一二区| 亚洲国产精品久久久久秋霞影院| 91国偷自产一区二区开放时间 | 亚洲欧洲性图库| av动漫一区二区| 中文字幕一区二区视频| 91在线观看美女| 一区2区3区在线看| 欧美高清视频www夜色资源网|