亚洲免费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ā)。

        欧美乱妇日本无乱码特黄大片| 中文字幕av伊人av无码av| 国产精品视频免费播放| 国产喷水福利在线视频| 日韩不卡无码三区| 东京热加勒比视频一区| 又爽又黄又无遮挡网站| 日本高清一区二区三区水蜜桃| 久久久久AV成人无码网站| 久久日韩精品一区二区| 亚洲一区自拍高清亚洲精品| 日韩一欧美内射在线观看| 精品亚洲人伦一区二区三区| 李白姓白白又白类似的套路| 欧美熟妇性xxx交潮喷| 日韩国产欧美视频| 日本在线中文字幕一区| 可免费观看的av毛片中日美韩| 国产成人亚洲精品| 国产乱人伦AV在线麻豆A| 少妇一级内射精品免费| 免费a级毛片又大又粗又黑| 中文字幕日本特黄aa毛片| 亚洲 暴爽 AV人人爽日日碰| 精品福利一区二区三区| 久久久久亚洲精品无码蜜桃| 日本a天堂| 手机av在线观看视频| 免费的日本一区二区三区视频| 国产真实伦在线观看| 精品久久久久久午夜| 粉嫩人妻91精品视色在线看| 久久久久久久波多野结衣高潮 | 91久久国产精品视频| 长腿丝袜在线观看国产| 艳妇臀荡乳欲伦交换h在线观看| 狠狠色噜噜狠狠狠狠888奇禾| 亚洲人妻中文字幕在线视频| 国产自拍精品视频免费| 日韩制服国产精品一区| 国产乱子伦视频一区二区三区|