精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
在C++ Builder中用MSCOMM32實現(xiàn)串行通訊
在C++ Builder中用MSCOMM32實現(xiàn)串行通訊
 更新時間:2009-11-21 11:16:57  點擊數(shù):0
【字體: 字體顏色
用C++ Builder來編寫串行通信程序,我們需要用到幾個Windows API函數(shù)而不像在DOS下那樣直接操作串口和中斷芯片。這幾個函數(shù)有OpenFile、CloseFile,GetCommState、SetCommState等。Microsoft的Visual Basic 中有一個OCX控件MSComm32,在VB中用它做串行通信程序很方便,將它裝入Builder 3中,它的Input和Output屬性是UnKnown,即Builder 3不認(rèn)識MSComm32的這兩個屬性。升級到Borland 的C++ Builder4.0,在Object Inspector中將不再看到這兩個屬性,但它們?nèi)匀淮嬖冢@兩個屬性的類型是OleVariant。使用這種類型方法如下:

  在要發(fā)送數(shù)據(jù)時,我們聲明一個發(fā)送數(shù)據(jù)緩沖區(qū),然后重置它的大小,填充它的元素,發(fā)送它,例如:

  unsigned char buff[200];//請聲明為全局變量,應(yīng)該是動態(tài)數(shù)組,否則會出現(xiàn)亂碼

  OleVariant TxBuff;//聲明一個OleVariant 變量

  TxBuff=VarArrayCreate(OPENARRAY(int,(0,200)),varByte);//重置它的大小,為0~n,int 為n的類型。

 。痸arByte為TxBuff每一個元素的類型。
    for(int i=0;ibr<200+1;i++)TxBuff.PutElement(buff[i],i);

 。畛湓,其中buff為你定義的一個固定數(shù)組,其中有你要發(fā)的數(shù)據(jù)。

  MSComm1->Output=TxBuff;//發(fā)送數(shù)據(jù),MSComm1為你放在窗體上的一個MSComm32控件。

  按收數(shù)據(jù)時請看下面的例子:

  unsigned char buff[200];//聲明一個存儲接收數(shù)據(jù)的緩沖區(qū),全局變量

  int ByteNum;//收到的字節(jié)數(shù)

  int BuffPtr;//接收緩沖區(qū)的指針,請聲明為全局變量,

  OleVariant RxBuff;//一個用于接收的OleVariant變量,

  if(MSComm1->InBufferCount>0)RxBuff=Communica1->Input;//如果緩沖區(qū)中有多于一個字節(jié)的數(shù)據(jù)

  ByteNum=RxBuff.ArrayHighBound(1);//將實際讀的字節(jié)數(shù)取出
    for(int i=0;ibr<ByteNum+1;i++)
       {buff[BuffPtr++]=RxBuff.GetElement(i);}//將接收數(shù)據(jù)讀入自己的緩沖區(qū)>

  在Object Inspector的Event標(biāo)簽中只有一個事件OnComm,這個事件在MSComm32控件收到數(shù)據(jù)時會被調(diào)用,但你必須設(shè)置RThreshold屬性。這是一個門檻,表示收到幾個字節(jié)就發(fā)送通知消息,如果為零,就不發(fā)送通知消息,這樣你的OnComm函數(shù)就不會得到執(zhí)行,TThreshold是發(fā)送門檻,不要忘記Settings。

  另外值得注意的是MSComm32的OnComm事件不是很準(zhǔn)確,有時候會丟失,你不能過分依賴這個事件,否則,經(jīng)常發(fā)生的不是發(fā)不出數(shù)據(jù),就是接收不到數(shù)據(jù),最好的辦法是使用一個定時控件,需要的時候就去讀MSComm32控件的緩沖區(qū)。

  • 上一篇: C5單片機串口通訊程序
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    巴彦县| 凌海市| 兰西县| 长乐市| 策勒县| 玛沁县| 盐源县| 陕西省| 灵山县| 元谋县| 西华县| 偏关县| 井研县| 新巴尔虎左旗| 舞钢市| 资源县| 社旗县| 铁力市| 临西县| 洛隆县| 页游| 永福县| 铜陵市| 拉萨市| 淳安县| 平利县| 福建省| 施秉县| 南城县| 曲阜市| 乐陵市| 榆社县| 宿州市| 呼玛县| 永安市| 股票| 句容市| 来宾市| 庄河市| 四会市| 南汇区|