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

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

?? uscontrol.pas

?? 通達OA短信程序 通達OA短信程序
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit USControl;

interface

uses
  Windows,SysUtils;

const
  //RS232 pin 2 cts
  CTSBit  = $00000008;
  //RS232 pin 3 dsr
  DSRBit  = $00000004;
  //RS232 pin 4 dtr
  DTRBit  = $00000010;
  //RS232 pin 7 rts
  RtsBit  = $00001000;


type
  TSerialSet=Record                                                             //參置串口參數
    BaudRate:DWord;                                                             //波特率
    ByteSize:Byte;                                                              //數據位
    Parity:Byte;                                                                //校檢位
    StopBits:Byte;                                                              //停止位
    TimeOuts:COMMTIMEOUTS;                                                      //超時時間
  end;

type
  TSerialControl = Class
  protected
    m_hComm:DWord;                                                              //定義串口操作句柄
  public
    m_Opened:Boolean;                                                           //定義串口打開結果
    m_SerialSet:TSerialSet;                                                     //定義串口參數設置記錄類變量
  Constructor
    Create;                                                                     //TSerialControl構造方法聲明
  published                                                                     //函數與過程聲明
    Function  OpenSerial(CommPort:Integer;ShareMode:Boolean=FALSE):Integer;
    Procedure setSerialStatus;
    Function  CloseSerial:Integer;
    Function  ReadCom(var RetStr:string;var TotalBytes:Integer;NumberOfBytesToRead:DWord;PurgeFlag:Boolean=FALSE;TimeOut:DWord=1000):Integer;
    Function  WriteCom(var SendStr:string;NumberofBytesToWrite:DWord;PurgeFlag:Boolean=FALSE;TimeOut:DWord=1000):Integer;
    Procedure SetDTR(Status:Boolean);
    Procedure SetRTS(Status:Boolean);
    Procedure GetCtsDsr(Var CTSStatus,DSRStatus:Boolean);
    Function  WaitForCTSDSR(Var CTSStatus,DSRStatus:Boolean):Boolean;
    procedure purgeReadWrite(RWFlag:Integer);
  end;

implementation

function StrToAsc(mstr:string):integer;forward;


///////////////////////////////////////////////////////////////////////////////////////////////////////////


constructor TSerialControl.Create;                                              //TSerialControl類對象構造方法實現區
begin
    inherited Create;                                                           //執行父類的Create方法
                                                                                //以下為變量初始化
    m_hComm := DWord(-1);                                                       //把-1賦給串口操作句柄,并聲明-1為DWord類型
    m_SerialSet.BaudRate := CBR_9600;                                           //波特率默認值為9600
    m_SerialSet.ByteSize := 8;                                                  //數據位默認值為8
    m_SerialSet.Parity := NOPARITY;                                             //校驗方式默認值為無
    m_SerialSet.StopBits := ONESTOPBIT;                                         //停止位默認值1
    m_SerialSet.TimeOuts.ReadTotalTimeoutMultiplier := 0;                       //超時
    m_SerialSet.TimeOuts.ReadTotalTimeoutConstant := 0;                         //超時
    m_SerialSet.TimeOuts.ReadIntervalTimeout := MAXDWORD;                       //超時
    m_Opened := FALSE;                                                          //串口打開結果默認值為FALSE
end;


//////////////////////////////////
//打開指定的串口
//返回: =0表示打開成功,
//      -1串口打開失敗,
//      -2串口已打開
//////////////////////////////////
function TSerialControl.OpenSerial(CommPort:Integer;ShareMode:Boolean=FALSE):Integer;
var
  sCommPort:String;
  dwShareMode:DWord;
begin
  sCommPort:='\\.\COM'+IntToStr(CommPort);                                      //串口號由函數參數CommPort傳遞而來

  if m_Opened Then                                                              //串口已被打開(被本程序打開過)
  begin
    Result:=-2;
    Exit;
  end;

  if ShareMode Then                                                             //串口是否采用共享方式打開
  begin
    dwShareMode:=FILE_SHARE_READ;
  end else
  begin
    dwShareMode:=0;
  end;

  m_hComm := CreateFile(                                                        //創建文件(串口),取得操作句柄
                        PChar(sCommPort),                                       //文件名稱
                        //'\\.\COM10',
                        GENERIC_READ or GENERIC_WRITE,                          //操作方式(讀或寫)
                        dwShareMode,                                            //共享方式
                        nil,                                                    //SD
                        OPEN_EXISTING,                                          //文件創建方法
					              FILE_ATTRIBUTE_NORMAL,                                  //文件屬性
                        0);                                                     //handle to template file

  if( m_hComm = INVALID_HANDLE_VALUE ) then                                     //串口打開失敗
  begin
    Result:=-1;
    Exit;
  end;

  m_Opened:=True;                                                               //設置串口打開標志
  Result:=0;                                                                    //成功返回
end;

///////////////////////////
//設置串口參數
//////////////////////////
procedure TSerialControl.setSerialStatus;
var
    dcbComm:DCB;
    ctosComm:CommTimeOuts;
begin
    GetCommState(m_hComm,dcbComm);                                              //Windows.GetCommState(hFile:Cardinal,var lpBCD:_BCD):LongBool;
    dcbComm.Flags    := dcbComm.Flags and $FFFFFBFF;
    dcbComm.BaudRate := m_SerialSet.BaudRate;
    dcbComm.ByteSize := m_SerialSet.ByteSize;
    dcbComm.Parity   := m_SerialSet.Parity;
    dcbComm.StopBits := m_SerialSet.StopBits;
    SetCommState(m_hComm, dcbComm);                                             //Windows.SetCommState(hFile:Cardinal,const lpBCD:_BCD):LongBool;
    //GetCommState(m_hComm,dcbComm);                                              //Windows.GetCommState(hFile:Cardinal,var lpBCD:_BCD):LongBool;

    GetCommTimeouts(m_hComm,ctosComm);                                          //Windows.GetCommTimeouts(hFile:Cardinal,var lpCommTimeOuts:_COMMTIMEOUTS):LongBool;
    ctosComm.ReadIntervalTimeout:=m_SerialSet.TimeOuts.ReadIntervalTimeout;
    ctosComm.ReadTotalTimeoutMultiplier := m_SerialSet.TimeOuts.ReadTotalTimeoutMultiplier;
    ctosComm.ReadTotalTimeoutConstant := m_SerialSet.TimeOuts.ReadTotalTimeoutConstant;
    SetCommTimeouts(m_hComm,ctosComm);                                          //Windows.SetCommTimeouts(hFile:Cardinal,const lpCommTimeOuts:_COMMTIMEOUTS):LongBool;
end;

///////////////////////////
//關閉串口
//////////////////////////
function TSerialControl.CloseSerial:Integer;
begin
  if m_Opened then
  begin
    CloseHandle(m_hComm);                                                       //利用創建文件(串口)時的句柄關閉串口
    m_Opened:=FALSE;
  end;
  Result:=0;
end;

///////////////////////////////////
//從串口讀入指定字節數的數據
//返回: >0表示返回的字節數,
//      -1表示讀錯誤,
//      -2表示超時
//////////////////////////////////
function TSerialControl.ReadCom(var RetStr:string;                              //讀到字節緩沖區
                                var TotalBytes:Integer;                         //讀取到的字節數
                                NumberOfBytesToRead:DWord;                      //需要讀取的字節數
                                PurgeFlag:Boolean=FALSE;                        //是否先清緩沖區
                                TimeOut:DWord=1000                              //超時設置(默認為1000ms)
                                ):Integer;
var
  buffer:     array[1..500] of char;                                                    //讀緩沖區(臨時)
  dwTimer:    DWord;                                                            //開始時間
  crTimer:    DWord;                                                            //當前時間
  iReadNum:   DWord;                                                            //當前讀取到的字節數
  iTotalNum:  DWord;                                                            //總計讀到字節數
  Readsuccess:Boolean;                                                          //讀取成功狀態標志
  i:          Integer;                                                          //循環變量
Begin
  result    := 0;                                                               //函數返回值預設
  iReadNum  := 0;
  iTotalNum := 0;
  TotalBytes:= 0;
  RetStr    := '';

  if PurgeFlag then
  begin
    PurgeComm(m_hComm, PURGE_RXCLEAR or PURGE_RXABORT);                         //清除數據緩沖區
  end;

  dwTimer := GetTickCount;                                                      //計時開始
//  SetLength(bStr,Integer(NumberOfBytesToRead+1));                             //設置動態數據長度

  while True do
  begin
    Readsuccess := ReadFile(m_hComm,                                            //操作句柄
                            buffer,                                             //數據緩沖區
                            NumberOfBytesToRead,                                //要讀取的字節長度
                            iReadNum,                                           //實際讀取的字節長度
                            nil);                                               //overlapped buffer

    if(not ReadSuccess) then                                                    //讀取失敗
    begin
      Result := -1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品一区二区三区不卡 | 538prom精品视频线放| 9191国产精品| 亚洲视频在线一区观看| 免费黄网站欧美| 一本一本大道香蕉久在线精品| 日韩一级高清毛片| 亚洲国产va精品久久久不卡综合 | xvideos.蜜桃一区二区| 亚洲欧美国产高清| 国产成人在线电影| 日韩欧美亚洲国产精品字幕久久久| 亚洲乱码国产乱码精品精98午夜 | 久久男人中文字幕资源站| 一区二区三区蜜桃| 99久久er热在这里只有精品15| 久久青草欧美一区二区三区| 蜜臀精品久久久久久蜜臀| 日本韩国一区二区三区| 国产精品久久久久久久久动漫| 国产综合色精品一区二区三区| 欧美一区二区成人| 日韩成人精品视频| 欧美日韩国产经典色站一区二区三区| 亚洲欧美在线高清| 99国内精品久久| 国产精品乱人伦中文| 高清免费成人av| 国产精品国产精品国产专区不蜜 | 欧美午夜寂寞影院| 最新不卡av在线| gogogo免费视频观看亚洲一| 国产女主播一区| 国产福利91精品一区二区三区| 欧美电视剧免费观看| 日产国产欧美视频一区精品| 欧美一区二区私人影院日本| 日韩1区2区3区| 日韩欧美aaaaaa| 国产乱国产乱300精品| 国产欧美日韩另类一区| 成人国产在线观看| 亚洲黄色性网站| 欧美日韩免费在线视频| 日本欧美一区二区| 亚洲精品一区二区三区99| 国产麻豆视频一区二区| 国产精品久久久久影院| 91色乱码一区二区三区| 亚洲成人免费影院| 日韩色视频在线观看| 国产福利一区二区三区在线视频| 中文字幕中文字幕在线一区 | 中文字幕亚洲在| 91麻豆蜜桃一区二区三区| 亚洲大片精品永久免费| 欧美电影在哪看比较好| 狠狠色丁香久久婷婷综| 亚洲欧洲av在线| 69久久夜色精品国产69蝌蚪网 | 亚洲国产精品影院| 日韩一卡二卡三卡四卡| 国产福利一区二区三区视频| √…a在线天堂一区| 在线不卡一区二区| 懂色av噜噜一区二区三区av| 亚洲一区二区三区精品在线| 久久一区二区三区四区| 91成人国产精品| 国产综合色在线视频区| 亚洲精品免费在线观看| 日韩视频在线你懂得| av激情成人网| 久久精品久久99精品久久| 综合久久久久综合| 久久婷婷久久一区二区三区| av成人免费在线观看| 另类小说色综合网站| 亚洲女同一区二区| 久久人人97超碰com| 88在线观看91蜜桃国自产| 成人网在线免费视频| 日韩激情视频网站| 一区二区国产视频| 欧美国产精品一区| 91精品一区二区三区在线观看| 成人精品小蝌蚪| 美女被吸乳得到大胸91| 一区二区三区在线视频观看| 久久久国产精华| 3751色影院一区二区三区| 波多野结衣一区二区三区| 久久精品av麻豆的观看方式| 一区二区三区**美女毛片| 中文字幕不卡在线播放| 欧美大白屁股肥臀xxxxxx| 欧美视频一区二区三区四区| 不卡视频在线看| 韩国av一区二区| 男女激情视频一区| 日日夜夜精品视频免费| 亚洲伦在线观看| 国产精品国产馆在线真实露脸| 久久久高清一区二区三区| 精品卡一卡二卡三卡四在线| 777色狠狠一区二区三区| 欧美午夜片在线观看| 色综合天天综合网天天狠天天| 成人午夜伦理影院| 高清成人免费视频| 国产成人综合在线| 国产成人在线免费观看| 国产成人综合自拍| 国产精品一二三区在线| 国产精品99久久久久久有的能看| 久久99这里只有精品| 久久99久久99| 国产精品18久久久久久久网站| 激情综合网av| 国产精品中文字幕日韩精品| 粉嫩高潮美女一区二区三区 | 青青国产91久久久久久| 日韩不卡免费视频| 久久精品99国产国产精| 久久99久久久久| 国产黄人亚洲片| 成人av资源下载| 91成人免费电影| 3d动漫精品啪啪1区2区免费| 欧美一区二区三区日韩视频| 日韩美女主播在线视频一区二区三区| 日韩美女一区二区三区| 久久久久久久久久久久久女国产乱| 国产性色一区二区| 国产精品福利一区二区| 亚洲综合视频在线观看| 奇米影视7777精品一区二区| 国产一区三区三区| a在线播放不卡| 欧美日韩在线综合| 欧美一区二区三区免费视频| 久久人人97超碰com| 日韩一区欧美一区| 丝袜美腿高跟呻吟高潮一区| 国产在线不卡视频| 色婷婷一区二区三区四区| 欧美精品成人一区二区三区四区| 精品国产一区二区三区不卡| 亚洲色图欧美在线| 日韩va亚洲va欧美va久久| 成人妖精视频yjsp地址| 欧美日韩久久不卡| 中文字幕欧美激情| 亚洲成av人片一区二区三区| 国产麻豆91精品| 色婷婷综合久色| 久久这里只有精品视频网| 亚洲人妖av一区二区| 美腿丝袜亚洲色图| 色综合天天综合网国产成人综合天 | 欧美精品自拍偷拍| 国产精品天天看| 蜜芽一区二区三区| 色综合天天性综合| 久久网站最新地址| 婷婷夜色潮精品综合在线| 国产jizzjizz一区二区| 538prom精品视频线放| 综合av第一页| 国产又黄又大久久| 欧美日本一道本| 一区二区在线观看免费| 成人免费毛片aaaaa**| 日韩精品一区在线观看| 亚洲一区二区在线免费观看视频| 菠萝蜜视频在线观看一区| 欧美xxxx老人做受| 日韩精品每日更新| 欧美在线播放高清精品| 国产精品久久久久久久岛一牛影视 | 亚洲欧洲www| 国产成人自拍网| 精品入口麻豆88视频| 亚洲成av人片观看| 精品视频在线视频| 一区二区三区毛片| 色狠狠一区二区| 怡红院av一区二区三区| 99国产精品久| 亚洲三级电影网站| av日韩在线网站| 亚洲色图一区二区三区| 91亚洲永久精品| 中文字幕在线不卡视频| 成人免费的视频| 国产精品国产三级国产普通话99| 国产一区二区三区观看| 亚洲精品在线三区| 国产一区二区中文字幕| 久久夜色精品国产噜噜av|