《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Windows環境下PC與單片機串行通信的實現
Windows環境下PC與單片機串行通信的實現
摘要: 以往在Windows平臺上的串行通信多使用其提供的API函數來實現,這種方法使用起來需要許多底層設置,因而較為繁瑣,且難以理解。本文結合筆者在開發遙感CCD相機控制子系統的過程中對串行通信編程的一些經驗,介紹在32 b Windows操作系統下,用VisualC++6.0的ActiveX技術實現PC機與單片機之間串行通信的一些方法。
Abstract:
Key words :

串行通信是計算機和外設進行通訊、對外設進行監控并獲取由外設采集到的監測數據的一個非常重要的手段。由于其所用的傳輸線少,成本低,實現起來方便易行,因而得到廣泛的應用。

以往在Windows平臺上的串行通信多使用其提供的API函數來實現,這種方法使用起來需要許多底層設置,因而較為繁瑣,且難以理解。本文結合筆者在開發遙感CCD相機控制子系統的過程中對串行通信編程的一些經驗,介紹在32 b Windows操作系統下,用VisualC++6.0的ActiveX技術實現PC機與單片機之間串行通信的一些方法。

1 硬件組成

系統中采用80C31單片機作為下位機,PC機為上位機,二者通過RS232串行口接收或上傳數據。接線圖如圖1所示。

由于RS232信號的電平為:

25.jpg

而單片機串口信號電平為TTL電平: 
  邏輯1為大于3.6 V; 
  邏輯0為小于0.3 V;

26.jpg
  
所以必須進行二者之間的電平轉換。在此使用集成電平轉換芯片MAX232來進行RS232C/TTL電平轉換。他使用單+5 V為其工作,配接4個1μF電解電容即可完成RS232電平與TTL電平之間的轉換。其原理圖如圖2所示。轉換完畢的串口信號TXD,RXD直接和 80C31的串行口連接。

2 通信協議

通信協議是指通信雙方的一種約定。在PC機與單片機通信中,PC機承擔主控任務,負責控制參數的設定,單片機接收PC機指令,并根據指令信息來上傳數據或控制被控對象。通信協議如下:

采用RS232串口異步通信,1位起始位,8位數據位,1位停止位,無奇偶校驗位。波特率為9 600 b/s。傳輸數據采用二進制傳輸模式。以一個數據包為例,其幀頭字符“~”,字符值為7EH(十六進制),然后是數據串,幀尾是字符值為2A的“*”字符,則整個數據包為“~XXXX*”。其中“XXXX”就是已經約定好的指令碼。每個“X”表示一個十六進制數,如“~1AFF*”中“1A”表示命令下位機系統進行增益設置,而“FF”表示某個已經約定好的增益參數。下位機系統接收到此命令后,應立即向PC機回送應答命令,然后再進行相應的操作。如果在 1 s內PC機沒有收到應答,PC機再重發命令。根據通信協議,結合Visual C++6.0的特點,提出了如下的編程方法。

27.jpg

3 程序設計

3.1 MSComm控件介紹

MSComm(MicrosoftCommunication Control)控件,是Microsoft為簡化Windows下串行通信編程而提供的ActiveX控件。在串口編程中其提供了2種處理通信問題的方法:一是事件驅動(Event-driven)法;一是查詢法。

事件驅動通訊是處理串行端口交互作用的一種非常有效的方法。當通信事件發生時,MSComm控件會觸發OnComm事件,調用者可以捕獲該事件,通過檢查其CommEvent屬性便可確認發生的是哪種事件或錯誤,從而再做相應的處理。這種方法的優點是程序響應及時,可靠性高。

查詢方式實質上還是事件驅動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關鍵功能之后,可以通過檢查CommEvent屬性的值來查詢事件和錯誤。如果應用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產生事件,因為惟一等待接收的字符是調制解調器的“確定”響應。

每個MSComm控件對應著一個串行端口,在使用MSComm控件時,1個MSComm控件只能同時對應1個串口。如果應用程序需要訪問多個串口,那么必須使用多個MSComm控件。

MSComm控件有很多重要的屬性,其中常用的是如下幾個:
 ?。?)CommPort 設置并返回通信口號,缺省值為COM1,可設置1~16個。
 ?。?)SetStrings 設置并返回波特率、奇偶校驗、數據位、停止位的字符串。其中波特率的范圍為300~19 200 b/s。
 ?。?)PortOpen 設置并返回通信口的狀態,同時用來打開和關閉通信口。
 ?。?)InputLen 決定每次Input讀入的字符個數,缺省為0,表示讀取接收緩沖區的全部內容。
 ?。?)Input 讀入并清除接收緩沖區的字符。
 ?。?)InBufferCount 返回接收緩沖區已接收的字符數,通過置0可清除接收緩沖區。
  (7)Output 將發送的字符串或數組寫到發送緩沖區。
  (8)InputMode 定義Input屬性獲得數據的方式:0為文本;1為二進制。

3.2 編程實現

從MSComm控件屬性可以看出,MSComm可以以2種不同的形式接收數據,即以文本形式和以二進制形式。因為幾乎所有以單片機為核心的控制系統所傳輸的原始數據都是二進制形式的,因此本文主要討論在二進制形式下的使用方法。

在VisualC++這種可視化界面中,采用基于對話框的應用程序,在對話框中插入MSComm控件后,根據通信協議,通過在主對話框的初始化函數OnInitDialog()中,加入如下代碼可以實現串口打開和屬性設置。

28.jpg

初始化后,接下來是對數據的發送與接收。

由通信協議可知,數據包中的數是以十六進制字符表示,因此在發送數據時,對數據還需做一定的處理。即先將需要發送的字符串轉換為相應的十六進制字節串,然后再經COleVariant類將其轉換為通用的VARIANT型變量,再通過控件的SetOutput()函數把數據從串口發出去。以發送1幀數據為例,其實現的主要代碼如下:

29.jpg

至于數據的接收,我們通過讓MSComm控件響應OnComm事件來完成,通過ClassWizard加入其對事件的響應,當有數據到達時便會通知 OnComm()函數去處理,從而實現數據的異步接收。由于接收的數據為變體數據VARIANT,因此,還必須做一些處理,具體實現代碼如下:

30.jpg

根據以上的方法,我們無需花很大的工作量,就能編寫出一個功能較強的串口通信程序。

4 結 語

按以上方法編寫的程序在Windows XP下由Microsoft VisualC++6.0編譯通過,并在PC機與遙控CCD相機控制子系統的串行通信過程中獲得了滿意的效果。同時串行通信的這種軟、硬件實現方法也可以用于PC機與其他外設之間的通信,實用范圍非常廣泛。

參考文獻
[1]希望圖書創作室.Visual C++6.0技術內幕[M].第5版.北京:北京希望電子出版社,1999.
[2]何立明.單片機中級教程[M].北京:北京航空航天大學出版社,1999.
[3]嘯峰工作室.在VCA++中利用ActiveX控件開發串行通信程序[DB].http://www.gjwtech.com/serialcomm.htm,2002.

 

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美精品免费观看二区| 亚洲免费在线视频一区 二区| 欧美日韩综合视频网址| 久久视频国产精品免费视频在线| 国产精品jizz在线观看美国| 亚洲国产高清高潮精品美女| 亚洲男女自偷自拍| 久久久久久久一区二区三区| 亚洲人永久免费| 一区二区三区精密机械公司| 欧美成人精品三级在线观看| 国产精品欧美久久久久无广告| 欧美在线视频网站| 欧美好吊妞视频| 欧美国产日本高清在线| 国产香蕉久久精品综合网| 久久精品一区二区三区不卡| 亚洲高清视频的网址| 欧美怡红院视频一区二区三区| 亚洲精品在线电影| 国产亚洲精品综合一区91| 老牛嫩草一区二区三区日本| 香蕉久久夜色| 欧美成人有码| 一区二区三区在线视频免费观看| 国产精品久久久久aaaa九色| 欧美激情乱人伦| 欧美激情按摩| 国产精品免费久久久久久| 久久精品国产999大香线蕉| 亚洲午夜av| 久久视频在线看| 欧美精品国产一区二区| 欧美日韩亚洲精品内裤| 老牛嫩草一区二区三区日本| 国内精品久久国产| 欧美大片免费观看| 国产亚洲精品aa午夜观看| aa级大片欧美三级| 欧美成人一区二区三区在线观看| 亚洲视频中文| 国产精品区一区二区三区| 麻豆乱码国产一区二区三区| 老司机午夜精品视频| 亚洲天天影视| 正在播放日韩| 中日韩美女免费视频网址在线观看| 亚洲小说欧美另类社区| 亚洲另类在线视频| 韩国在线视频一区| 在线色欧美三级视频| 久久男女视频| 美女视频一区免费观看| 尤物网精品视频| 136国产福利精品导航网址| 亚洲国产日日夜夜| 国产最新精品精品你懂的| 一本综合精品| 欧美一二三区在线观看| 另类尿喷潮videofree| 亚洲日本欧美日韩高观看| 亚洲啪啪91| 在线精品国精品国产尤物884a| 韩国精品在线观看| 国产欧美日韩综合精品二区| 欧美成人午夜视频| 可以免费看不卡的av网站| 国产精品日韩久久久久| 亚洲欧美日韩一区二区三区在线| **性色生活片久久毛片| 亚洲一二三四久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲国产日韩欧美在线图片| 亚洲欧美乱综合| 国产日韩欧美自拍| 亚洲人成在线观看一区二区| 久久色在线观看| 久久久久久久高潮| 一区二区三区鲁丝不卡| 久久久www成人免费精品| 欧美成人性网| 裸体女人亚洲精品一区| 国产精品日日摸夜夜添夜夜av| 亚洲韩国精品一区| 国产精品qvod| 欧美高清视频| 午夜精品成人在线| 欧美精品综合| 亚洲国产免费| 久久亚洲欧美国产精品乐播| 欧美精品 日韩| 久久黄金**| 久久精品国产视频| 亚洲视频一区| 欧美日韩亚洲高清一区二区| 国产午夜精品久久久久久免费视| 99精品欧美一区二区三区综合在线| 99在线热播精品免费| 性色一区二区| 欧美日韩免费在线观看| 国产精品久久国产精品99gif| 欧美日韩亚洲精品内裤| 国外成人性视频| 欧美日韩国产在线播放网站| 亚洲素人一区二区| 欧美专区福利在线| 国产精品一级在线| 一区二区三区不卡视频在线观看| 亚洲一级二级| 国产一级久久| 亚洲天堂成人在线视频| 国产亚洲电影| 久久午夜羞羞影院免费观看| 亚洲国产精品视频| 欧美一区二粉嫩精品国产一线天| 亚洲乱码国产乱码精品精天堂| 久久久久久久综合色一本| 国产精品一二一区| 国产精品a久久久久久| 国产欧美大片| 欧美精品一区二区三区久久久竹菊| 亚洲一区中文字幕在线观看| 最新中文字幕亚洲| 欧美日韩国产欧美日美国产精品| 欧美肉体xxxx裸体137大胆| 久久久久中文| 欧美激情第二页| 欧美一区二区三区的| 欧美精品www在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美高清视频免费观看| 欧美国产第二页| 欧美另类女人| 亚洲免费观看| 久久久高清一区二区三区| 亚洲网站在线播放| 久久亚洲捆绑美女| 久久狠狠一本精品综合网| 久久久高清一区二区三区| 国产亚洲网站| 国产精品爱久久久久久久| 亚洲黄色免费电影| 久久亚洲春色中文字幕久久久| 欧美一区二视频在线免费观看| 久久久www成人免费精品| 免费在线看一区| 午夜在线一区二区| 亚洲国产精品国自产拍av秋霞| 亚洲永久精品大片| 18成人免费观看视频| 国产欧美日韩91| 欧美一区二区三区免费观看| 亚洲精品免费网站| 欧美高清在线视频观看不卡| 毛片精品免费在线观看| 免费看亚洲片| 欧美精品久久99| 国产精品大全| 亚洲美女在线一区| 久久天天综合| 亚洲视频在线视频| 欧美视频日韩视频在线观看| 亚洲精品视频中文字幕| 亚洲视频精品| 亚洲精品九九| 午夜在线视频观看日韩17c| 在线观看日韩| 久久久噜久噜久久综合| 国产亚洲精品自拍| 国产精品永久免费观看| 亚洲综合电影| 欧美一区二区三区在线播放| 久久亚洲不卡| 国产视频一区二区三区在线观看| 欧美日韩国产综合新一区| 亚洲精品乱码久久久久久| 欧美在线免费看| 欧美a级大片| 国产一区二区三区四区三区四| 欧美成人精品h版在线观看| 在线免费观看日本一区| 欧美一区二区精品久久911| 亚洲精品在线视频观看| 久久精品91久久久久久再现| 在线视频日本亚洲性| 中文在线资源观看网站视频免费不卡| 欧美精品一区二区三区很污很色的| 亚洲色图制服丝袜| 免费不卡在线视频| 国产欧美日本在线| 亚洲一二三区精品| 久久精品成人欧美大片古装| 国产精品一区免费视频| 免费久久99精品国产| 久久精品亚洲乱码伦伦中文| 国产精品入口| 亚洲一区二区三区色| 亚洲国产精品女人久久久| 亚洲精品日韩综合观看成人91| 欧美色大人视频| 欧美午夜视频| 久久久久在线| 欧美一区二区在线播放| 欧美三日本三级少妇三2023| 亚洲影视中文字幕| 久久婷婷蜜乳一本欲蜜臀| 欧美婷婷六月丁香综合色| 亚洲福利精品| 欧美一区二区啪啪| 欧美高清成人| 国产精品视频久久久| 国产精品一区二区三区乱码| 国产精品专区第二| 国产精品爱久久久久久久| 欧美一级二级三级蜜桃| 欧美特黄视频| 欧美jizzhd精品欧美喷水| 亚洲片区在线| 欧美视频在线观看 亚洲欧| 国产一区二区精品在线观看| 国产亚洲激情在线| 欧美精品国产精品日韩精品| 国产亚洲午夜高清国产拍精品| 欧美日韩福利| 亚洲韩国一区二区三区| 亚洲大片在线观看| 国产精品视频区| 欧美在线3区| 国产精品日日摸夜夜添夜夜av| 午夜国产精品视频免费体验区| 最新日韩在线视频| 久久久久中文| 亚久久调教视频| 欧美视频在线观看视频极品| 欧美日韩精品久久久| 亚洲人体影院| 亚洲网站视频| 欧美视频中文一区二区三区在线观看| 国产精品一区二区欧美| 激情亚洲一区二区三区四区| 国产精品乱码一区二三区小蝌蚪| 有坂深雪在线一区| 日韩视频在线你懂得| 久久久免费精品视频| 国产亚洲精品久久久| 久久亚洲高清| 久久人91精品久久久久久不卡| 午夜精品久久久久影视| 国产免费成人在线视频| 亚洲国产成人久久综合一区| 国语自产精品视频在线看抢先版结局| 亚洲性视频网址| 欧美日韩国产成人| 欧美视频1区| 狠狠综合久久| 亚洲精品国产品国语在线app| 欧美激情一二区| 女生裸体视频一区二区三区| 欧美高清一区二区| 欧美成年人视频网站欧美| 亚洲精品专区| 国产精品99久久久久久久久久久久| 国产精品理论片在线观看| 永久域名在线精品| 亚洲一区二区在线观看视频| 99在线观看免费视频精品观看| 欧美日产一区二区三区在线观看| 亚洲电影毛片| 欧美中日韩免费视频| 亚洲精品国产精品国产自| 国产精品视频| 久久成人av少妇免费| 国产精品永久在线| 欧美激情一区二区三区高清视频| 国产嫩草一区二区三区在线观看| 亚洲视频二区| 亚洲视频精品| 一区二区高清在线| 午夜在线一区二区| 亚洲高清在线播放| 国产一区二区在线免费观看| 在线视频精品一| 久久精品亚洲国产奇米99| 亚洲福利视频专区| 久久亚洲精品中文字幕冲田杏梨| 免费在线国产精品| 欧美性猛交xxxx乱大交蜜桃| 亚洲精品久久久久久一区二区| 亚洲最新在线视频| 国产农村妇女精品一二区| 亚洲在线不卡| 国产精品少妇自拍| 韩国av一区二区三区在线观看| 国产精品嫩草影院av蜜臀| 日韩亚洲国产欧美| 欧美亚洲自偷自偷| 日韩视频永久免费观看| 亚洲欧美日韩一区二区三区在线| 亚洲人成啪啪网站| 开心色5月久久精品| 久久精品卡一| 激情视频一区二区三区| 午夜精品一区二区在线观看| 久久激五月天综合精品| 亚洲欧洲99久久| 欧美成人亚洲成人日韩成人| 黄色一区二区三区四区| 亚洲高清资源| 国产在线拍偷自揄拍精品| 亚洲小说春色综合另类电影| 欧美中日韩免费视频| 国产一区二区三区四区五区美女| 免费观看欧美在线视频的网站| 欧美在线观看视频一区二区三区| 亚洲欧洲在线看| 激情欧美日韩一区| 欧美怡红院视频一区二区三区| 久久一区国产| 欧美屁股在线| 国产精品日韩在线观看| 欧美日韩播放| 欧美日韩影院| 国产亚洲精品一区二555| 亚洲欧美日韩在线播放| 亚洲中午字幕| 午夜欧美大尺度福利影院在线看| 国产精品你懂的在线| 欧美日韩一区二区视频在线观看|