<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 用PComm開發(fā)PC機與單片機的通信程序

    時間:2024-05-29 23:47:15 理工畢業(yè)論文 我要投稿
    • 相關(guān)推薦

    用PComm開發(fā)PC機與單片機的通信程序

    摘要:介紹了分布式控制系統(tǒng)中上位PC機與下位單片機異步串行通信的通信協(xié)議;同時介紹了在VC 6.0環(huán)境下用PComm編寫的PC機通信程序來實現(xiàn)上位機和下位機異步串行通信的方法,給出了PComm編程實例和下位機程序模塊流程圖。

    在由一臺PC機(上位機)和多臺單片機(下位機)構(gòu)成的分布式控制系統(tǒng)中,單片機主要負(fù)責(zé)實時數(shù)據(jù)采集,并將初步處理后的數(shù)據(jù)通過串行口傳送給PC機?以便由PC機串行口的命令對單片機進(jìn)行控制,同時通過打印機或顯示器向用戶隨時提供各種統(tǒng)計報表和整個控制過程的具體數(shù)據(jù)。在這樣的分布式控制系統(tǒng)中,單片機與微機之間的多路通信是整個系統(tǒng)的關(guān)鍵,本文將介紹在提高通信的準(zhǔn)確性、可靠性和效率的前提下,用PComm開發(fā)PC機與單片機的通信程序的解決方案。

    1 通信協(xié)議

    為了保證可靠的通信,必須有一套完善的通信協(xié)議。分布式控制系統(tǒng)中的每臺單片機均有唯一的番號。通信開始時,先由PC機呼叫被叫單片機的番號,單片機在接收到微機的呼叫后,首先判斷是不是自己的番號,如果是,則發(fā)送呼叫應(yīng)答信號,否則不予理睬。微機在接收到呼叫應(yīng)答信號之后,將向單片機發(fā)出通信命令字符串。以下是上位PC機協(xié)議的格式:

    單片機號單片機號命令碼命令碼停止標(biāo)志 

    其中,單片機號代表現(xiàn)場第幾臺單片機,占用1個字節(jié),發(fā)送兩次的目的是為了防止干擾;命令碼則代表上位機向下位機發(fā)布的工作命令,它也占用1個字節(jié),發(fā)送兩次的目的也是為了防止干擾。而停止標(biāo)志則表明一次命令發(fā)送完畢。使用時可依據(jù)該標(biāo)志判斷上位機的命令是否發(fā)送完畢。

    下位機協(xié)議格式如下:

    數(shù)據(jù)塊校驗位

    該格式中,數(shù)據(jù)塊為下位機上傳到上位PC機的數(shù)據(jù)。校驗位則用于PC機對收到的數(shù)據(jù)進(jìn)行奇偶校驗(占1個字節(jié))。校驗正確后,可將數(shù)據(jù)寫入內(nèi)存,否則發(fā)出數(shù)據(jù)傳輸錯誤信息,以要求單片機重新傳輸數(shù)據(jù)。

    另外,作為一個完整的通信協(xié)議,只有上述約定還不夠,還必須在發(fā)送和接收數(shù)據(jù)的時間間隔上加以限制。否則,很可能由于某些原因而造成無限制的等待對方應(yīng)答,使整個系統(tǒng)處于工作不正常狀態(tài),或者延誤其它動作的處理。具體時間限制可根據(jù)通信內(nèi)容、CPU處理速度,再加上適當(dāng)?shù)挠嗔縼泶_定。

    2 單片機通信程序設(shè)計

    設(shè)計單片機通信程序時,必須充分發(fā)揮單片機的效率。由于單片機多應(yīng)用于實時性較強的控制場合,因此,應(yīng)將及時響應(yīng)和控制對象的動作放在優(yōu)先考慮的位置,以盡量減少通信等輔助性操作所占用的CPU時間。基于上述考慮,筆者在設(shè)計單片機通信程序時,將通信程序分為接收中斷處理程序、發(fā)送中斷處理程序和通信處理程序3部分,并將這3部分程序巧妙地進(jìn)行組合,從而構(gòu)成整個單片機的通信程序。

    2.1 接收中斷處理程序

    接收中斷處理程序主要負(fù)責(zé)接收微機發(fā)送到單片機接收緩沖區(qū)(不對數(shù)據(jù)進(jìn)行處理,以減少中斷占用的時間)的數(shù)據(jù),當(dāng)接收到規(guī)定的字符數(shù)或在一定等待時間內(nèi)無后續(xù)數(shù)據(jù)之后,置接收完畢標(biāo)志,以表明接收緩沖區(qū)中有待處理的數(shù)據(jù)并請求通信處理程序?qū)ζ溥M(jìn)行處理。其流程圖如圖1所示。

    2.2 發(fā)送中斷處理程序

    發(fā)送中斷處理程序主要負(fù)責(zé)向微機發(fā)送數(shù)據(jù),發(fā)送中斷一般處于禁止?fàn)顟B(tài),只有在通信處理程序?qū)⑿枰l(fā)送的數(shù)據(jù)寫入單片機的發(fā)送緩沖區(qū),并將發(fā)送中斷置為允許方式后,發(fā)送中斷才開始工作,并將緩沖區(qū)數(shù)據(jù)逐一發(fā)送給微機。當(dāng)發(fā)送完指定長度的數(shù)據(jù)后(發(fā)送緩沖區(qū)為空),發(fā)送中斷處理程序?qū)l(fā)送中斷置為禁止(關(guān)閉)狀態(tài),直到通信處理程序?qū)⑵湓僖淮伍_放。其流程如圖2所示。

    2.3 通信處理程序

    考慮到盡量減少通信中斷程序所占用的CPU時間,通信處理程序被放在普通主循環(huán)中調(diào)用。只有在接收到上位機送來的一串?dāng)?shù)據(jù),且接收完畢標(biāo)志為“ON”時,才能真正進(jìn)行處理,否則不進(jìn)行處理。這樣就可利用送信后等待微機回答的時間進(jìn)行別的處理,從而消除了空等待時間,提高了CPU的利用率。通信處理程序可根據(jù)通信處理狀態(tài)的不同來分別執(zhí)行不同的路徑。在進(jìn)入相應(yīng)路徑后,首先對接收緩沖區(qū)的內(nèi)容進(jìn)行正確性檢查,檢查正確后再根據(jù)通信要求或協(xié)議規(guī)定對緩沖區(qū)的內(nèi)容進(jìn)行處理(包括內(nèi)存的寫入和讀出),同時重新組織數(shù)據(jù)到發(fā)送緩沖區(qū)以向微機發(fā)送數(shù)據(jù),最后退出通信處理程序以執(zhí)行其它的程序。待接收中斷程序重新接收到數(shù)據(jù)并將接收完標(biāo)志置為“ON”后,可重新進(jìn)入通信處理程序進(jìn)行處理。

    3 PC機通信程序設(shè)計

    在VC++6.0環(huán)境下,利用PC機串口進(jìn)行通信的常用方法有兩種?第一是調(diào)用Windows API?Appli- cation Program Interface?函數(shù);第二是使用ActiveX的MSComm控件。第一種方法需聲明及調(diào)用許多API函數(shù),十分煩瑣。而第二種方法是將API函數(shù)封裝起來,這種方法雖較為簡便,但不能滿足復(fù)雜情況下的通信要求。本文將介紹另外一種用PComm處理PC機的串口通信方法。

    PComm是一種用于處理多進(jìn)程/多線程的串口通信軟件開發(fā)工具,它提供了許多基于API函數(shù)的命令集來處理串口通信,可以在Visual C++、Visual Basic、Delphi 5.0等多種開發(fā)工具下使用,且具有傳輸速度快、使用靈活方便等特點,能夠滿足復(fù)雜情況下的串口通信要求。

    3.1 Pcomm的主要命令碼

    PComm的主要命令碼有以下幾種:

    ● sio open(port);

    用于設(shè)置并打開串口,其中port的1、2、3、4分別代表COM1、COM2、COM3、COM4。當(dāng)返回值為0時,表示串口已經(jīng)打開,否則為串口打開出錯。

    ● sio close(port);

    關(guān)閉串口,當(dāng)返回值為0時,表示串口已經(jīng)關(guān)閉,否則為串口關(guān)閉出錯。

    ● sio ioctl(port?baud?mode);

    用于設(shè)置串口波特率、校驗位、數(shù)據(jù)位、停止位等參數(shù)。

    ● sio getch();

    從串口輸入緩沖區(qū)讀出一個字符,返回值為0表示已收到數(shù)據(jù)。

    【用PComm開發(fā)PC機與單片機的通信程序】相關(guān)文章:

    利用VB實現(xiàn)PC機與多單片機通訊03-18

    用PICC編譯器開發(fā)PIC系列單片機的代碼03-19

    DSP與單片機通信的多種方案設(shè)計03-18

    單片機通信性能分析和評價方法03-18

    在VC 中用ActiveX控件實現(xiàn)與單片機的串行通信03-19

    用CPLD實現(xiàn)單片機讀寫模塊03-20

    一種用于單片機的紅外串行通信接口03-18

    利用EPP并行口實壩PC機之間通信的CAN總線設(shè)計03-19

    熟悉PIC系列單片機的開發(fā)環(huán)境及簡單編程(一)03-07

    主站蜘蛛池模板: 精品国产午夜理论片不卡| 大胸国产精品视频| 国产精品视频免费观看| 久久精品中文字幕一区| 狠狠色丁香婷婷综合精品视频| 完整观看高清秒播国内外精品资源| 四虎成人欧美精品在永久在线| 亚洲国产精品高清久久久| 精品一区二区三区色花堂| 一区二区三区四区精品视频| 国产成人精品2021| 亚洲av成人无码久久精品 | 久久精品人人做人人爽电影| 亚洲国产精品无码久久SM| 国产精品亚洲二区在线观看 | 国产一区二区三区欧美精品| 久久成人影院精品777| 国产精品综合色区在线观看| 亚洲国产一成人久久精品| 久久久亚洲精品蜜桃臀| 国产精品免费观看视频| 久久青青草原精品影院| 国产精品久久免费| 国产成人精品精品欧美| 99久久99久久精品免费看蜜桃| 精品久久8x国产免费观看| 久久精品www人人爽人人| 无码人妻精品一区二区在线视频| 中文精品99久久国产| 亚洲精品国产V片在线观看| 欧美成人精品第一区二区| 久久国产精品无码网站| 精品精品国产高清a毛片| 国产精品无码v在线观看| 国产精品国产三级国产AⅤ| 国产精品美女WWW爽爽爽视频| 3级黄性日本午夜精品| 97久视频精品视频在线老司机| 99久久国产主播综合精品| 国产精品一区二区三区99| 久久精品国产色蜜蜜麻豆|