亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        PC機串口通信幾種編程方法探究與實現

        2017-11-17 02:14:12
        微處理機 2017年5期

        趙 沖

        (湖北縱橫科技有限責任公司,宜昌443003)

        PC機串口通信幾種編程方法探究與實現

        趙 沖

        (湖北縱橫科技有限責任公司,宜昌443003)

        串口通信技術簡單成熟,性能可靠,價格低廉,所要求的軟硬件開發(fā)環(huán)境都很低,廣泛應用于計算機、自動控制及相關領域。PC機開發(fā)圖形界面軟件現階段主要使用VC6.0、C++Builder(C++)或者Vistual studio(C#)等開發(fā)軟件,其中,VC6.0歷史悠久,早期使用人數比較多,資料也相對豐富,但只適合比較有經驗的開發(fā)者。使用C#開發(fā)界面,軟件上手更快,相比VC來說也更簡單,更適合于初學者。針對實際開發(fā)過程中使用的兩種開發(fā)環(huán)境,對相應的串口通信所采用的不同的處理方法做了整理歸納,此類方法都經過驗證和長期測試,具有很強的實踐借鑒意義。

        串口通信;編程;軟件

        1 引言

        串口通訊(Serial Communication),是指外設和計算機間,通過數據信號線、地線等,按位進行傳輸數據的一種通訊方式。

        串口是一種接口標準,它規(guī)定了接口的電氣標準,沒有規(guī)定接口插件電纜以及使用的協(xié)議。串口通信是一個字符一個字符地進行傳輸,每個字符一位一位地傳輸,并且傳輸一個字符時,總是以“起始位”開始,以“停止位”結束,字符之間沒有固定的時間間隔要求。

        每一個字符的前面都有一位起始位(低電平),字符本身由7位數據位組成,接著字符后面是一位校驗位(檢驗位可以是奇校驗、偶校驗或無校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長的空閑位,停止位和空閑位都規(guī)定為高電平。實際傳輸時每一位的信號寬度與波特率有關,波特率越高,寬度越小,在進行傳輸之前,雙方一定要使用同一個波特率設置。

        2 串口通信常用的軟件及編程方法

        在工作中使用PC機和其他設備進行串口通信,開發(fā)串口通信軟件較常使用的編程工具和語言主要有 VC6.0(使用 C 語言或者 C++)、VS2008(C#、VB、C語言、C++)等。在幾年的工作實踐中,根據這些編程工具和語言,開發(fā)了相應的圖形界面軟件,運行比較穩(wěn)定,有一定的參考價值,現在將具體的實現細節(jié)分享給大家,希望對大家在串口編程方面有所啟發(fā)。

        3 VS2008(C#)使用 SerialPort類實現串口通信

        使用SerialPort類實現串口通信的方法很簡單,SerialPort類提供了具體的函數來進行串口操作。具體的細節(jié)可以參考VS2008 MSDN。這里主要闡述如何進行串口接收。當串口緩沖區(qū)有數據來臨時,就調用DataReceived事件。而在這里它不會像單片機或者ARM進行串口通信時,串口接收緩沖區(qū)有一個字節(jié)就可以觸發(fā)一次中斷,有可能數個字節(jié)才會調用DataReceived事件。

        1.首先定義了List對象buffer222來存放接收的數據。Private Listbuffer222=new List(1024);

        2.在接收過程中,考慮到不知道什么時候觸發(fā)DataReceived事件,每次讀取時都先獲取串口緩沖區(qū)可讀取的字節(jié)數,然后將這些數據全部讀取出來并添加到buffer222中。

        3.查找一幀數據的幀頭和幀尾并進行處理。具體的實現細節(jié)如下:

        此種方法還適用于VB.NET、VC++.NET編寫Windows窗體應用程序。

        4 VC6.0使用第三方串口類CSerialPort串口編程

        多線程串口編程工具CserialPort類是由Remon Spekreijse提供的免費串口類,它也封裝了一些函數來對串口進行操作。具體的函數網上都可以搜到,不再一一羅列。

        用CserialPort類進行串口接收首先要進行WM_COMM_RXCHAR消息映射以及添加消息處理函數OnComm()。使用CserialPort類進行串口通信可以做到逐個字節(jié)進行接收,當串口接收緩沖區(qū)內有一個字符時,就會產生一個WM_COMM_RXCHAR消息,觸發(fā)OnComm()函數。

        此方法具體操作步驟是:

        1.找到連續(xù)的幀頭(可以是數個字節(jié));

        2.接收剩余數據并將數據存儲在數組或者結構體中;

        3.接收完成后對一幀數據進行校驗和幀頭幀尾判斷,如果校驗正確以及幀頭幀尾正確說明接收數據正確,此時再做后續(xù)處理。

        具體代碼如下所示:

        5 C#利用線程接收處理串口數據

        在很多485通信場合中,一般應用的是“一問一答”式的通信方式,即:主機呼叫從機,主機等待從機應答,主機下達指令。在這里使用C#中線程來實現這一過程。

        1.利用SerialPort類初始化相應串口并打開串口;

        2.創(chuàng)建AutoResetEvent對象等待串口數據就緒:

        3.創(chuàng)建線程并啟動線程,使用線程需要添加System.Threading命名空間;

        4.借助DataReceived事件獲取串口數據來臨:

        5.編寫線程循環(huán)執(zhí)行:

        6 結束語

        以上闡述的各種方法是經過長期工作實踐測試的,具有穩(wěn)定可靠的優(yōu)點,分享給讀者希望給從事這方面工作的人提供一條思路。

        [1]龔建偉,熊光明.Visual C++/Turbo C串口通信編程實踐[M].北京:電子工業(yè)出版社,2004.Gong Jianwei,Xiong Guangming.Visual C++/Turbo C serial communication programming practice[M].Beijing:Publishing House of electronics industry,2004.

        [2]明日科技.C#從入門到精通[M].北京:清華大學出版社,2012.tomorrow technology.C#from entry to mastery[M].Beijing:Tsinghua University press,2012.

        [3]Christian Nagel.C#高級編程[M].北京:清華大學出版社,2006.Christian Nagel.C#advanced programming[M].Beijing:Tsinghua University press,2006.

        [4]譚浩強.C++程序設計[M].北京:清華大學出版社,2015.Tan Haoqiang.C++programming[M].Beijing:Tsinghua U-niversity press,2015.

        [5]Stephen Prata.C++Primer Plus(第6版中文版)[M].北京:人民郵電出版社,2012.Stephen Prata.C++Primer Plus(sixth edition Chinese version)[M].Beijing:Posts&Telecom Press,2012.

        [6]明日科技.Visual C++從入門到精通[M].北京:清華大學出版社,2012.tomorrow technology.Visual C++from entry to mastery[M].Beijing:Tsinghua University press,2012.

        [7]孫鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.Sun Xin,Yu Anping.VC++in-depth explanation[M].Beijing:Publishing House of electronics industry,2006.

        [8]馬克·米凱利斯(Mark Michaelis),埃里克·利珀特(Eric Lippert).C#6.0 本質論[M].北京:人民郵電出版社,2017.Mark Michaelis,Eric Lippert.ESSENTIAL C#6.0[M].Beijing:People's Posts and Telecom Press,2017.

        Research and Implementation of Several Programming Methods for Serial Communication of PC

        Zhao Chong
        (Hubei 710 Cross Tech Co.Ltd.,Yichang 443003,China)

        Serial communication technology is simple,mature,reliable and low cost,and the hardware and software development environment required is very low.It is widely used in computers,automatic control and related fields.At this stage,graphical interfaces software such as VC6.0,c++Builder(c++)or Vistual studio(c#)are mainly used in the PC development,among them,the VC6.0 has a long history,early users are more,and the data are relatively abundant,but is only suitable for experienced developers.Using c#development interface,the software can be mastered quickly and is easier than VC,so it is better for beginners.In view of the two kinds of development environment in the actualdevelopmentprocess,differentprocessing methods adopted by the corresponding serial communication are arranged and summarized.Such methods are validated and long-term tested,and has strong practical significance.

        Serial communication; Programming; Software

        事件編程的步驟如下:

        10.3969/j.issn.1002-2279.2017.05.012

        A

        1002-2279-(2017)05-0044-03

        趙沖(1985—),男,湖北宜昌人,工程師,主研方向:自動化和軟件開發(fā)。

        国产成人精品一区二区不卡| 久亚洲一线产区二线产区三线麻豆| 日韩肥臀人妻中文字幕一区 | 精品区2区3区4区产品乱码9| 亚洲一区二区三区国产精华液| 探花国产精品三级在线播放| 亚洲一区在线二区三区| 人妻熟妇乱又伦精品视频| 免费国产黄网站在线观看| 婷婷色综合成人成人网小说 | 成人av鲁丝片一区二区免费| 久久无码人妻一区二区三区午夜| 亚洲综合无码无在线观看| 亚洲日韩图片专区小说专区| 成人黄网站免费永久在线观看| 亚洲国产成人久久精品不卡| 国产精品久久人妻无码| 国产2021精品视频免费播放| 丰满少妇一区二区三区专区| 丝袜美腿福利一区二区| 三年在线观看免费大全下载| 亚洲欧洲精品国产二码| 久久精品伊人久久精品| 精品国产天堂综合一区在线| 人妻系列无码专区久久五月天| 国产av综合一区二区三区最新 | 欧美亚洲日本国产综合在线美利坚 | 超级少妇一区二区三区| 天堂蜜桃视频在线观看| 欧美亚洲熟妇一区二区三区| 中国大陆一级毛片| 日本在线观看一区二区视频| 欧美性高清另类videosex| 国产精品无套内射迪丽热巴| 杨幂Av一区二区三区| 亚洲av无一区二区三区| 人人爽久久涩噜噜噜av| 成年奭片免费观看视频天天看| 国产成人av区一区二区三| 日本真人做爰免费视频120秒 | 50岁退休熟女露脸高潮|