• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用C++ Builder編程實現串行通信

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    武漢 劉紀鋒 用C++ Builder來編寫串行通信程序,我們需要用到幾個 Windows API函數而不像在DOS下那樣直接操作串口和中斷芯片。這幾個函數有OpenFile、CloseFile,GetCommState、SetCommState等。Microsoft的Visual Basic 中有一個OCX控件MSComm32,在 VB 中用
    武漢 劉紀鋒

      用C++ Builder來編寫串行通信程序,我們需要用到幾個Windows API函數而不像在DOS下那樣直接操作串口和中斷芯片。這幾個函數有OpenFile、CloseFile,GetCommState、SetCommState等。Microsoft的Visual Basic 中有一個OCX控件MSComm32,在VB中用它做串行通信程序很方便,將它裝入Builder 3中,它的Input和Output屬性是UnKnown,即Builder 3不認識MSComm32的這兩個屬性,我們升級到Borland 的C++ Builder4.0,在Object Inspector中將不再看到這兩個屬性,但它們仍然存在,這兩個屬性的類型是OleVariant,也就是Ole萬能變量,使用這種類型方法如下:
      在要發送數據時,我們聲明一個發送數據緩沖區,然后重置它的大小,填充它的元素,發送它,例如:
      buff[200];//請聲明為全局變量
      OleVariant TxBuff;//聲明一個OleVariant 變量
      TxBuff=VarArrayCreate(OPENARRAY(int,(0,n)),varByte);//重置它的大小,為0~n,int 為n的類型。
     ?。痸arByte為TxBuff每一個元素的類型。
      <n+1;i++)TxBuff.PutElement(buff[i],i);>
      for(int i=0;ibr>    //填充元素,其中buff為你定義的一個固定數組,其中有你要發的數據。
      MSComm1->Output=TxBuff;//發送數據,MSComm1為你放在窗體上的一個MSComm32控件。
      按收數據時請看下面的例子:
      int buff[200];//聲明一個存儲接收數據的緩沖區,全局變量
      int ByteNum;//收到的字節數
      int BuffPtr;//接收緩沖區的指針,請聲明為全局變量,
      OleVariant RxBuff;//一個用于接收的OleVariant變量,
      if(MSComm1->InBufferCount>0)RxBuff=Communica1->Input;//如果緩沖區中有多于一個字節的數據
      ByteNum=RxBuff.Array?HighBound(1);//將實際讀的字節數取出
    <ByteNum+1;i++){buff[BuffPtr++]=RxBuff.GetElement(i);}//將接收數據讀入自己的緩沖區>   for(int i=0;ibr>
      在Object Inspector的Event標簽中只有一個事件OnComm,這個事件在MSComm32控件收到數據時會被調用,但你必須設置RThreshold屬性。這是一個門檻,表示收到幾個字節就發送通知消息,如果為零,就不發送通知消息,這樣你的OnComm函數就不會得到執行,TThreshold是發送門檻,不要忘記Settings。
      另外值得注意的是MSComm32的OnComm事件不是很準確,有時候會丟失,你不能過分依賴這個事件,否則,經常發生的不是發不出數據,就是接收不到數據,最好的辦法是使用一個定時控件,需要的時候就去讀MSComm32控件的緩沖區?! ?/p>

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>