韩剧1988免费观看全集_久久影视三级福利片_亚洲视频在线观看免费_在线观看欧美日韩_国产亚洲激情在线_亚洲精品美女久久久_欧美国产日韩一区二区在线观看_91在线观看免费高清完整版在线观看_日韩av免费看_国产又爽又黄的激情精品视频_琪琪亚洲精品午夜在线_欧美性猛xxx_不卡毛片在线看_国产亚洲日本欧美韩国_91国内在线视频_精品国产福利视频

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

運(yùn)用ActiveX控件開(kāi)發(fā)串口通信軟件

運(yùn)用ActiveX控件開(kāi)發(fā)串口通信軟件

更新時(shí)間:2022-10-12 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

摘要:本文介紹了在Microsoft Visual C++ 6.0環(huán)境下通過(guò)對(duì)Active X控件的編程來(lái)實(shí)現(xiàn)串口的通信的一般方法。

  一、 引言

  當(dāng)我們?cè)赪indows操作系統(tǒng)下開(kāi)發(fā)串行通信程序時(shí)通常不得不面對(duì)許多復(fù)雜的API函數(shù),因?yàn)樵赪indows操作系統(tǒng)下不能直接對(duì)設(shè)備端口進(jìn)行操作,也不能在系統(tǒng)級(jí)(Ring 3級(jí)別)使用任何DOS或BIOS中斷,如要對(duì)端口進(jìn)行編程則只能以文件的形式來(lái)對(duì)端口進(jìn)行操作,這就使開(kāi)發(fā)人員不得不面對(duì)非常煩瑣的API函數(shù)編程。本文對(duì)此提出了另外一種封裝性很好的使用Microsoft Visual C++ 6.0自帶的"Microsoft Communications Control,version 6.0"Active X控件的編程方法,通過(guò)對(duì)該控件的正確使用,我們可以比較輕松地編寫(xiě)出所需的串行通信程序。

  下面,我們將結(jié)合一個(gè)實(shí)際的程序示例來(lái)對(duì)此方法進(jìn)行說(shuō)明。本程序的編程環(huán)境是Windows 98和Microsoft Visual C++ 6.0。在本程序示例中對(duì)為避免阻塞而對(duì)線(xiàn)程的使用以及在使用中遇到的一些問(wèn)題也做了詳細(xì)的介紹。

  二、 程序的設(shè)計(jì)實(shí)現(xiàn)

  在開(kāi)始進(jìn)行代碼編程前,首先以在工程中插入組件或控件的方式將Active X控件"Microsoft Communications Control,version 6.0"加入到工程中來(lái),此時(shí)將會(huì)在工程中添加一個(gè)關(guān)于此控件的新類(lèi)。使用該控件的一些方法和屬性時(shí)不能象使用類(lèi)一樣簡(jiǎn)單的聲明一個(gè)實(shí)例對(duì)象,而要通ClassWizard為該控件和一個(gè)成員變量建立起綁定關(guān)系,在此我們將該控件同變量m_Comm相綁定后就可以通過(guò)該控件提供的方法來(lái)對(duì)串口的各種通訊參數(shù)進(jìn)行設(shè)置了。為了編程方便起見(jiàn),也可以在資源視圖中直接對(duì)該控件的屬性進(jìn)行設(shè)置,如無(wú)特別要求,對(duì)下表所列屬性進(jìn)行設(shè)置就基本可以滿(mǎn)足編程要求了。現(xiàn)將常用的屬性列表如下:


屬性 設(shè)定值 屬性說(shuō)明
CommPort 1 串口號(hào),一般從1到4
InBufferSize 30720 接收緩沖區(qū)大小,為保持程序的穩(wěn)定,建議設(shè)得值足夠大
InputMode 0-Text 接收數(shù)據(jù)的類(lèi)型,0表示文本類(lèi)型,1表示二進(jìn)制類(lèi)型
InputLen 0 從接收緩沖區(qū)讀取的字節(jié)數(shù),0表示全部讀取
OutBufferSize 512 發(fā)送緩沖區(qū)大小
Settings 4800,n,8,1 串口的參數(shù)設(shè)置,依次為波特率、奇偶校驗(yàn)(n-無(wú)校驗(yàn),e-偶校驗(yàn),o-奇校驗(yàn))、數(shù)據(jù)位數(shù)、停止位數(shù)
RThreshold 1 設(shè)定當(dāng)接收幾個(gè)字符時(shí)觸發(fā)OnComm事件,0表示不產(chǎn)生事件,
1表示每接收一個(gè)字符就產(chǎn)生一個(gè)事件
SThreshold 0 設(shè)定在觸發(fā)OnComm事件前,發(fā)送緩沖區(qū)內(nèi)所允許的最少的字符數(shù),
0表示發(fā)送數(shù)據(jù)時(shí)不產(chǎn)生事件,1表示當(dāng)發(fā)送緩沖區(qū)空時(shí)產(chǎn)生OnComm事件


  我們要求能在程序啟動(dòng)的同時(shí)就打開(kāi)串口以便即時(shí)對(duì)從串口到達(dá)的數(shù)據(jù)進(jìn)行接收、處理。一般來(lái)說(shuō)可以將下面的打開(kāi)端口的代碼寫(xiě)在OnCreate()、OnInitialUpdate()、InitInstance ()等程序入口函數(shù)中:

……
if(!m_Comm.GetPortOpen()) //檢測(cè)是否已經(jīng)打開(kāi)過(guò)端口
m_Comm.SetPortOpen(TRUE); //如沒(méi)有打開(kāi)則將端口打開(kāi)
……
接下來(lái)的工作就是對(duì)數(shù)據(jù)的發(fā)送與接收了,這也是本文所要介紹的重點(diǎn)所在。發(fā)送數(shù)據(jù)的代碼原則上是可以寫(xiě)到一個(gè)成員函數(shù)中被直接調(diào)用的,但這并不是一個(gè)良好的編程習(xí)慣:我們應(yīng)當(dāng)把比較耗時(shí)的操作,如文件拷貝、打印、端口傳輸?shù)裙ぷ鞣诺揭粋(gè)單獨(dú)的線(xiàn)程當(dāng)中,以避免其在工作時(shí)會(huì)引起整個(gè)進(jìn)程的阻塞,以提高整個(gè)系統(tǒng)對(duì)CPU的利用率。例如我們可以在視類(lèi)中菜單或按鈕的響應(yīng)函數(shù)中用AfxBeginThread(WriteProc,this)函數(shù)來(lái)開(kāi)啟一個(gè)名為"WriteProc"的線(xiàn)程,由于在線(xiàn)程中還需要使用視類(lèi)的函數(shù)和變量,為了不產(chǎn)生新的視類(lèi)的實(shí)例對(duì)象,我們通過(guò)該函數(shù)的第二個(gè)參數(shù)將指向當(dāng)前的視類(lèi)的指針this作為參數(shù)傳遞給線(xiàn)程。在線(xiàn)程中可以用如下兩種方法之中的一種調(diào)用視類(lèi)的成員函數(shù):

((COLECommView*) pParam)->DoSendProc();

  或是:

COLECommView* view=(COLECommView*) pParam;
View->DoSendProc();


  其中從pParam傳來(lái)的變量就是指向視類(lèi)的指針。在線(xiàn)程中通過(guò)調(diào)用視類(lèi)中的DoSendProc函數(shù)來(lái)完成對(duì)數(shù)據(jù)的發(fā)送,正是由于該函數(shù)是被全局的線(xiàn)程所調(diào)用的,我們就不可以使用取編輯框上的數(shù)據(jù)時(shí)通常所用的UpdateData()函數(shù)了,取而帶之的是API 函數(shù)GetDlgItemText(),取到輸入的數(shù)據(jù)后通過(guò)控件的SetOutput() 方法就把數(shù)據(jù)從串口發(fā)出去了,其中發(fā)送數(shù)據(jù)必須經(jīng)ColeVariant類(lèi)將其轉(zhuǎn)換為通用的VARIANT型變量。實(shí)現(xiàn)
主要代碼如下:

……
char a[255];
HWND hwnd=GetSafeHwnd();
::GetDlgItemText(hwnd,IDC_EDIT1,a,255);
int i=0;
CString str;
while(a[i]!='\0')
{
str.Format("%c",a[i]);
m_SendData+=str;
i++;
}
str.Format("%c",10);
m_SendData+=str;
m_Comm.SetOutput(COleVariant(m_SendData));
……

  至于數(shù)據(jù)的接收,我們可以通過(guò)讓MS Comm控件響應(yīng)其OnComm事件來(lái)完成,通過(guò)ClassWizard加入其對(duì)事件的響應(yīng)后,通過(guò)下面的事件映射,當(dāng)有字符到達(dá)時(shí)便會(huì)通知 OnComm()函數(shù)去處理,從而實(shí)現(xiàn)數(shù)據(jù)的異步接收:

……
BEGIN_EVENTSINK_MAP(COLECommView, CFormView)
//{{AFX_EVENTSINK_MAP(COLECommView)
ON_EVENT(COLECommView, IDC_MSCOMM1, 1 /* OnComm */, OnComm, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
……
void COLECommView::OnComm()
{
VARIANT Input;
if(m_Comm.GetCommEvent()==2)//接收緩沖區(qū)內(nèi)有字符
{
Input=m_Comm.GetInput();//讀取緩沖區(qū)內(nèi)的數(shù)據(jù)
CString msg=Input.bstrVal;
CString str;
str.Format("%c",10);
if(msg.Right(1)==str)
{
m_RecvData+=msg;
m_History.AddString(m_RecvData);
m_RecvData="";
}
else
m_RecvData+=msg;
}
}


  當(dāng)數(shù)據(jù)被接收到接收緩沖區(qū)后,對(duì)于字符可以從VARIANT型結(jié)構(gòu)變量的bstrVal成員變量中獲取,VARIANT數(shù)據(jù)結(jié)構(gòu)相當(dāng)復(fù)雜,并牽扯到COM(Component Object Model,組件對(duì)象模型)中的一些概念,具體詳情請(qǐng)參閱Microsoft Corpration發(fā)布的MSDN中的有關(guān)論述。

  三、 測(cè)試與實(shí)驗(yàn)

  編譯運(yùn)行程序之前有必要對(duì)機(jī)器的端口做一番檢查,以確保端口的完好,可以用常見(jiàn)的DOS程序Comdebug來(lái)檢查。在確認(rèn)串口工作正常后,可用串口線(xiàn)將兩臺(tái)機(jī)器的串口相連,同時(shí)在兩臺(tái)機(jī)子上運(yùn)行該程序,如果沒(méi)有條件也可只用一臺(tái)微機(jī),將其串口的2腳和3腳短接,使其處于自發(fā)自收狀態(tài)。經(jīng)過(guò)數(shù)據(jù)的傳輸實(shí)驗(yàn)證明該程序是可靠、正確的。

  小結(jié):利用通訊控件可以很容易的編寫(xiě)出串行通信程序。但相對(duì)來(lái)說(shuō)通訊控件在VC中的使用要比在VB、Delphi中復(fù)雜的多,要想對(duì)串口通訊開(kāi)發(fā)出更多更靈活的使用方法還需要不斷的實(shí)踐中摸索。本程序在
Windows 98下,由Microsoft Visual C++ 6.0編譯通過(guò)。

溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!

本類(lèi)教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
国产成人在线中文字幕| 欧美激情国内自拍| 午夜视频福利在线| 国产视频精品免费| 亚洲视频免费在线| 在线不卡免费欧美| 污污网站在线观看| 懂色av蜜臀av粉嫩av分享吧| 99精品视频一区| 亚洲电影免费观看| 亚洲欧美在线磁力| 成人a免费在线看| 国产精品国产自产拍高清av王其| 久久国产精品久久久久久| 特黄特黄的视频| 300部国产真实乱| 国产麻豆电影在线观看| 人妻在线日韩免费视频| 亚洲天堂久久久久| 亚洲v日韩v欧美v综合| 国产欧美日韩在线看| 国产精品国产三级国产普通话三级| 欧美在线播放视频| av色男福利网| 欧美午夜精品一区二区| 久久er这里只有精品| 老牛影视av老牛影视av| 欧美限制电影| 欧美亚洲日本黄色| 国产成人aa精品一区在线播放| 最新精品在线| 国内国产区免费视频| jizzjizz中国精品麻豆| 亚洲人成免费网站| 成人在线高清视频| jizz视频播放器| 国产综合视频在线| 四虎4hu新地址入口2023| 亚洲毛片亚洲毛片亚洲毛片| 男女午夜视频在线观看| 中文在线资源天堂| 欧美激情国产精品日韩| 精品三级久久久久久久电影聊斋| 91精品视频免费看| 亚洲精品男人天堂| 欧美专区在线观看| 黑人极品ⅴideos精品欧美棵| 国内自拍视频在线看免费观看| 国产成人亚洲综合a∨婷婷| 88国产精品视频一区二区三区| 色猫视频免费观看| 成年人在线看| 欧美激情在线一区| 中文字幕第一页亚洲| 福利视频在线看| 2018国产精品| 国产精品香蕉视屏| 国产精品视频中文字幕| 99久久免费视频.com| 精品肉丝脚一区二区三区| 亚洲日本中文字幕在线| 天堂中文在线观看视频| 91精品久久久久久久久久不卡| 欧美二区不卡| 亚洲中文字幕无码一区| 一本久道久久综合| 亚洲精选一区二区三区| 精品一区二区日韩| 亚洲国产精彩中文乱码av| 成人羞羞视频播放网站| 第一站视频久草网| 国产精品美女一区二区| 亚洲三区在线| 亚洲欧美在线视频免费| 99久久99视频只有精品| 91麻豆精品国产91| 少妇按摩一区二区三区| 亚洲第一se情网站| 成人在线观看免费完整| 综合久久久久综合| 天天爽夜夜爽人人爽| 日韩精品在线网站| 国产在线精品91| 椎名由奈jux491在线播放| 800av在线播放| 国产对白videos麻豆高潮| 亚洲 自拍 另类 欧美 丝袜| 视频黄页在线| 国产成一区二区| 久久久久久三级| 成人在线视频亚洲| 91丨九色丨蝌蚪丨老版| 无码国产精品一区二区免费式直播| 一个人看的www久久| 国产妇女馒头高清泬20p多| 狠狠干夜夜操| 黄页在线免费观看| 日韩欧美国产成人| 国产精品久久久久久久| 黑人精品视频| 国产成人鲁鲁免费视频a| 国产精品久久久久久久久图文区| 国产亚洲色婷婷久久99精品91| 欧美另类极品videosbest视| wwwxx欧美| 91视频论坛| 欧美日韩国产黄色| 亚洲精品18| 天天操夜夜逼| 久久久亚洲精品无码| 麻豆成人免费电影| 欧美人乱大交xxxxx| 国产精品的网站| 国产精品福利导航| 日韩欧美激情在线| 欧美日韩在线视频一区| 丁香5月婷婷久久| 亚洲成人福利片| 一区二区影院| 欧美日韩亚洲在线观看| 欧美理论在线观看| 久久婷婷综合激情| 日韩1区2区3区| 国产三级电影在线观看| 日韩啪啪电影网| www.99久久热国产日韩欧美.com| 亚洲精品社区| 国产亚洲精品久久久久久豆腐| av中文资源在线资源免费观看| 国产精品h在线观看| 在线中文字幕网站| 欧美成人禁片在线www| 久久视频免费观看| 国产剧情av片巨作醉酒女邻居| 伊人久久久久久久久久久久久久| 中文字幕五月欧美| 久草视频精品在线| 成人疯狂猛交xxx| 亚洲视频一区二区三区四区| 亚洲一区二区三区av无码| 免费看美女隐私的视频| 国产精品xvideos88| 东北少妇不带套对白| 97香蕉久久超级碰碰高清版| 婷婷激情综合| av日韩电影| 日韩人妻精品无码一区二区三区| 免费成人直播| 久久一二三四| 好男人www在线视频| а√最新版地址在线天堂| 国产一级做a爱免费视频| 欧美一区二区在线观看| 亚洲视频一区二区免费在线观看| 黑人巨大精品欧美一区二区免费| 成人福利一区二区| 国产乱码精品一区二区三区五月婷| 2021年精品国产福利在线| 国内精品久久久久久久97牛牛| 亚洲一区3d动漫同人无遮挡| 先锋影音av资源站| 日韩精品免费综合视频在线播放| 日韩中文字幕综合| 99re在线视频这里只有精品| 中文字幕一区久久| 成人一区二区三区在线观看| 日韩成人av电影在线| 亚洲AV无码一区二区三区性| 国产福利不卡视频| 亚洲午夜影视影院在线观看| 一区二区不卡在线视频 午夜欧美不卡在| 久久久久久久久久久视频| 无套内精的网站| 精品国内二区三区| 最新中文字幕在线播放| 1769视频在线播放免费观看| 最新黄色片网站| 欧美精选一区二区| 国产精品天天摸av网| 欧美高清你懂的| 日韩激情欧美| 免费黄网站观看| 久久人人爽人人片| 在线观看h片| 亚洲一区二区三区在线视频| 久草综合在线视频| 日本亚洲色大成网站www久久| www.久久成人| 自拍视频在线播放| 精品日本12videosex| 成人一区二区三区视频| 国产一区二区不卡老阿姨| 狠狠色丁香久久婷婷综合丁香| 99草草国产熟女视频在线| 国产精品中文有码| 美女洗澡无遮挡| 亚洲深夜视频| 97超级碰碰碰久久久| 国产福利精品一区二区三区| 日韩成年人视频| 国产91高潮流白浆在线麻豆| 免费久久99精品国产自| 欧美日韩大陆在线| 隔壁老王国产在线精品| 第一社区sis001原创亚洲| 成人黄色免费片| 91视频观看| 成人黄色在线网站| 在线看视频你懂的| 麻豆蜜桃在线观看| av一区二区三区在线| 正义之心1992免费观看全集完整版| 国产又粗又长又爽又黄的视频| 91无套直看片红桃| 国产精品夜夜夜爽阿娇| 欧美国产精品v| 97久久网站| 一本加勒比波多野结衣| 精品一区二区三区免费看| 51ⅴ精品国产91久久久久久| 男女视频在线看| 91电影在线播放| 黄色小视频免费在线观看| 欧美一区二区三区激情| 狠狠色狠狠色综合系列| 三级全黄做爰视频| 国产精品久久久久久久天堂第1集| 国产九一视频| 久久久久久久久久久av| 精品婷婷色一区二区三区蜜桃| 色视频一区二区三区| 午夜视频久久久久久| 国产精品久久久久久久久免费樱桃| 久久成人小视频| 教室别恋欧美无删减版| 国产一级大片在线观看| 日韩视频在线直播| 特大巨黑人吊性xxxxn38| 91九色偷拍| 久久亚洲免费| 欧洲vodafone精品| 欧美成人高清| 国产精品免费电影| 欧美一区二区三区视频在线观看| 久久成人18免费网站| 奇米网人体黄视频| 手机福利视频欧美| 欧美另类在线播放| 欧美精品自拍| 2021中文字幕一区亚洲| 亚洲精品中文字幕乱码三区| 精品综合久久久| 狠狠操精品视频| 亚洲黄页网在线观看| 另类图片综合电影| 日韩国产伦理| 免费av网站大全久久| 九色成人搞黄网站| 5g影院5g天天爽永久免费影院| 妞干网免费在线视频| 久久亚洲免费| 性色av免费观看| www.色亚洲| 青草在线视频在线观看| 国产suv精品一区二区三区88区| 亚洲free性xxxx护士hd| 国产午夜精品一区二区三区四区| 精品视频一区二区三区在线观看| 亚洲五码在线观看视频| 天天做夜夜做人人爱精品| 久久精品人人做人人爽电影蜜月| 精品国偷自产一区二区三区| 国产呦精品一区二区三区网站| 日日夜夜国产| 日本暖暖在线视频| 欧美一区二区黄片| 成人97人人超碰人人99| 欧美精品aⅴ在线视频| 2014亚洲片线观看视频免费| 中文字幕久热在线精品| 日本精品一区二区三区在线播放视频| 男人猛进猛出女人屁股视频| 国产精品日日摸夜夜爽| 亚洲伊人久久综合| www红色一片_亚洲成a人片在线观看_| 久久九九久久九九| 亚洲a级精品| 超碰国产精品久久国产精品99| 欧美性www| 国产精品视频无码| 亚洲视频重口味| 午夜亚洲激情| 午夜偷拍福利视频| 影音先锋制服丝袜| 亚洲国产精品久久人人爱| 久草国产精品视频| 最近中文字幕在线中文视频| 国产日韩综合一区二区性色av| www.综合| 亚洲精品视频一二三| 免费看av成人| 久久久久久国产免费a片| 欧美电视剧在线看免费| 99久久久国产精品无码免费| 中文字幕日韩三级片| 在线精品一区| 精品一区二区三区免费看| 一女三黑人理论片在线| 2019中文字幕视频| 成人免费网址| 成人三级黄色免费网站| 熟女少妇精品一区二区| 中文字幕中文在线| 男女下面一进一出无遮挡| 国产精品久久久久久久久久久久久久| 国产午夜精品全部视频在线播放| 少妇高潮在线观看| 国产精品外国| 日本韩国欧美一区| 伊人久久大香线蕉无限次| 亚洲作爱视频| 中文字幕欧美区| 99成人在线视频| 视频在线观看一区二区| 欧洲女同同性吃奶| 五月天视频一区| 久久国产精品99精品国产| 老司机精品在线|