日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

串口数据visual c++ MSComm 串口控件程序开发

發(fā)布時間:2024/1/8 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 串口数据visual c++ MSComm 串口控件程序开发 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

時間緊張,先記一筆,后續(xù)優(yōu)化與完善。

????? ? ? ? 在計算機中,數(shù)據(jù)通信主要有兩種:一種是串口通信,每一個字符的二進制位按位排列停止傳輸,速度慢,但傳輸距離較遠。鼠標口和usb口都屬于串口。另一種是并行通信,每一個字符的二進制位使用多條數(shù)據(jù)線同時停止傳輸,傳輸速度快,但傳輸距離相對比較近。計算機外部傳輸一般使用這種方式,打印口也屬于并行端口。

????? ? ? ? 一、串口通信道理

????? ? ? ?串行端口是cpu和串行設備間的編碼轉(zhuǎn)換器,當數(shù)據(jù)從串口發(fā)送出時,字節(jié)數(shù)據(jù)轉(zhuǎn)化為串行的位。在接收時,串行的位轉(zhuǎn)化為字節(jié)數(shù)據(jù)。在Windows下串口是系統(tǒng)的一種資源,應用程序要使用串口停止通信,必須向計算機申請該串口資源,使用完畢,應釋放資源。

????? ? ? ?二、串口通信特點

????? ? ? ? ? ? 1,通信成本低,僅一條通信鏈路

????? ? ? ? ? ? 2,傳輸速度慢。

????? ? ? 三、串口通信傳輸方式

????? ? ? ? ? ? 1,單工通信,固定的由發(fā)送端發(fā)送數(shù)據(jù)到接收端 電臺與電視機

????? ? ? ? ? ? 2,半雙工通信,允許雙向互相發(fā)送數(shù)據(jù),但是不能同時 對講機

????? ? ? ? ? ? 3,雙工通信,允許兩邊互相同時發(fā)送和接收數(shù)據(jù) 手機

????? ? ? ?四、MSComm控件串口通信開發(fā)

????? ? ? ? MSComm空間是微軟公司供給的ActiveX空間,用于簡化串口程序開發(fā)。在Visual C++和VS2005環(huán)境中都可以方便地添加該控件。當導入CMSComm類后,就能夠在程序中使用MSComm控件了。

????? ? ? ? 1,MSComm常用方法

????1)GetCommPort() 獲得串口號

????2)SetCommPort() 設置端口號

????3)GetRThreshold()與SetRThreshold()用于獲得與設置接收緩沖區(qū)接收到多少個字符,MSComm控件觸發(fā)Oncomm事件。

????4)GetInputMode()與SetInputMode()用于獲得和設置傳輸數(shù)據(jù)的類型,參數(shù)為1,二進制傳輸,參數(shù)為0,文本傳輸。

????5)SetSettings()用于設置波特率、奇偶校驗,數(shù)據(jù)位和停止位參數(shù)

????6)GetInput()用于從接收緩沖區(qū)獲得數(shù)據(jù)

????7)SetOutput()用于向發(fā)送緩沖區(qū)寫入數(shù)據(jù)

????8)GetPortOpen()/SetPortOpen()獲得串口狀態(tài),打開或關閉串口

????9)GetCommEvent()獲得串口發(fā)生的事件。1----發(fā)送數(shù)據(jù);2---接收數(shù)據(jù);3----CTS信號發(fā)生變化,預備發(fā)送數(shù)據(jù);4---DSR信號發(fā)生變化,預備接受數(shù)據(jù)。

?????????? 2,串口配置代碼

??????? ???if(m_com.GetPortOpen())

?????????? ? m_com.SetPortOpen(FALSE);

??????? ?? ?m_com.SetCommPort(com);??//設置端口

??????? ???if(!m_com.GetPortOpen())

?????????? ? m_com.SetPortOpen(TRUE);??//打開串口

每日一道理
信念是巍巍大廈的棟梁,沒有它,就只是一堆散亂的磚瓦;信念是滔滔大江的河床,沒有它,就只有一片泛濫的波浪;信念是熊熊烈火的引星,沒有它,就只有一把冰冷的柴把;信念是遠洋巨輪的主機,沒有它,就只剩下癱瘓的巨架。

??????? ?? ?else

?????????? ? AfxMessageBox("cannot open serial port");

??????? ?? ?m_com.SetSettings("9600,n,8,1");//設置波特率,校驗,數(shù)據(jù)位,停止位

?????

??????? ???m_com.SetInputMode(0);?//以文本方式撿取數(shù)據(jù)

??????? ?? m_com.SetRThreshold(1);?//參數(shù)表現(xiàn)每當串口接收緩沖區(qū)中有多于或者即是個字符時將激發(fā)一個接收數(shù)據(jù)的OnComm事件

????? ? ?m_com.SetInputLen(0);?//設置以后接收區(qū)數(shù)據(jù)長度為

????2,串口接收OnComm事件代碼如下

????? ???intresEvent;

???????? resEvent =m_mscom.GetCommEvent();

???????? switch(resEvent)

???????? {

???????? case 2: //接收數(shù)據(jù)

??????????????? {

?????????????????????? if(IsSended) //開始接收數(shù)據(jù)

?????????????????????? {

????????????????????????????? VARIANTdata;

????????????????????????????? data= m_mscom.GetInput();

?????

????????????????????????????? CStringstr;

????????????????????????????? str= data.bstrVal;

????????????????????????????? IsSended= FALSE;

????????????????????????????? MessageBox(str);

?????????????????????? }

??????????????? }

??????????????? break;???

???????? }???????????

????3,串口發(fā)送數(shù)據(jù)代碼如下

????CString str ;

???????? m_data.GetWindowText(str);

???????? IsSended =FALSE; //發(fā)送完成

???????? m_mscom.SetOutput((COleVariant)str);??

???????? IsSended =TRUE; //發(fā)送完成

???????? Sleep(1000);//延時1妙

文章結束給大家分享下程序員的一些笑話語錄: 剎車失靈
有一個物理學家,工程師和一個程序員駕駛著一輛汽車行駛在阿爾卑斯山脈 上,在下山的時候,忽然,汽車的剎車失靈了,汽車無法控制地向下沖去, 眼看前面就是一個懸崖峭壁,但是很幸運的是在這個懸崖的前面有一些小樹 讓他們的汽車停了下來, 而沒有掉下山去。 三個驚魂未定地從車里爬了出來。
物理學家說, “我覺得我們應該建立一個模型來模擬在下山過程中剎車片在高 溫情況下失靈的情形”。
工程師說, “我在車的后備廂來有個扳手, 要不我們把車拆開看看到底是什么 原因”。
程序員說,“為什么我們不找個相同的車再來一次以重現(xiàn)這個問題呢?”

轉(zhuǎn)載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/18/3085886.html

總結

以上是生活随笔為你收集整理的串口数据visual c++ MSComm 串口控件程序开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。