欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
基于VC的接收機串口程序設計
  摘 要: 本文介紹了使用Visual C++開(kāi)發(fā)使用接收機與PC機通信的接口程序,利用ActiveX控件來(lái)簡(jiǎn)化程序設計難度的方法,并給出了詳細的實(shí)現方法,具有一定的實(shí)用意義。

  關(guān)鍵詞 串口通信 Visual C++ ActiveX控件

  一、 引言

  串行接口是微機與外部設備的主要通信接口之一。只需要一條信號線(xiàn)就可以進(jìn)行單向數據傳送。由于線(xiàn)路簡(jiǎn)單,價(jià)格相對較低,得到了廣泛應用。


圖1 近距離時(shí)系統連接方式

  如果想利用串行接口來(lái)實(shí)現近距離通信(通常15米以?xún)龋?,可以采用圖1的連接方式來(lái)實(shí)現。該接收機采用EIA-RS232C串行標準進(jìn)行通信,其數據通信信號形式如下表:

波特率(Baud)4800, 9600, or 19200 bps
數據位(Databit)8 bits
停止位(Stopbit)2 bits
校驗位(Parity)Non
流控制(Flow Control)XON / XOFF

  接收機接收通過(guò)串口接收來(lái)自PC機的控制命令后,進(jìn)行相應的動(dòng)作,完成相應的設置。那么如何在WINDOWS環(huán)境下快速有效地開(kāi)發(fā)串口通信程序呢?一般情況下的串口通信無(wú)非采用兩種方法:一是利用Windows 的通信API 函數, 二是利用一些高級語(yǔ)言(如VC++等)來(lái)實(shí)現。Windows 的API 函數雖然使用面很廣,但由于比較復雜而有一定的難度,而Visual C++ 的ActivateX 控件, 由于其靈活性與易用性而受廣大計算機開(kāi)發(fā)者的青睞,正成為主要的開(kāi)發(fā)工具。

  二、ActiveX控件介紹

  ActiveX是Windows 下進(jìn)行應用程序開(kāi)發(fā)的嶄新技術(shù),它的核心內容是組件對象模型COM(Component Object Model)。ActiveX控件包括一系列的屬性、方法和事件,使用ActiveX控件的應用程序和ActiveX控件之間的工作方式是客戶(hù)/服務(wù)器方式,即應用程序通過(guò)ActiveX控件提供的接口來(lái)訪(fǎng)問(wèn)ActiveX控件的功能。

  Microsoft Communication control是Microsoft公司提供的簡(jiǎn)化Windows下串行接口收發(fā)數據的簡(jiǎn)便方法。下面介紹在Visual C++6.0環(huán)境下,用ActiveX通信控件來(lái)編程實(shí)現串口通信的方法和技巧。

  三、串口通信的編程實(shí)現

  用VC++的Active X控件來(lái)實(shí)現串口通信,是一種快速簡(jiǎn)潔而又簡(jiǎn)單的編程方法。下面簡(jiǎn)單介紹實(shí)現過(guò)程。

  3.1 在程序中嵌入通信控件

  單擊Project菜單中選擇Add to Project,再單Components and Controls,從彈出的對話(huà)框中單擊Registered ActiveX Controls,然后在列表框中選擇Microsoft Communications Control, version 6.0,單擊OK。之后注意到Project中新增加了一個(gè)類(lèi)。通過(guò)查看類(lèi)MSComm的源文件mscomm.cpp,我們可以了解這個(gè)控件的屬性和使用方法,其中的Get...函數可以用來(lái)訪(fǎng)問(wèn)該屬性的當前值,而Set...函數則用來(lái)設置該屬性的新值。

  3.2 利用串口通信類(lèi)編程實(shí)現通信功能

  在添加了串口通信類(lèi)之后,就可以在相應的程序中創(chuàng )建一個(gè)通信控件,然后通過(guò)調用串口通信類(lèi)的成員函數來(lái)完成相應的數據接收和發(fā)送功能。
四、 串口通信的使用方法和技巧

  4.1 通過(guò)人工映射事件自動(dòng)響應函數

  通信控件的工作原理類(lèi)似與中斷方式,當有通信事件發(fā)生時(shí)(如發(fā)送數據、接收數據等),就會(huì )觸發(fā)OnComm事件,在該事件的處理函數中調用OnCommEvent()函數,通過(guò)返回值即可確定是那類(lèi)事件,再作出相應的處理。

  但需要注意的是,OnCommEvent()函數并不是自動(dòng)映射的,必須手工添加該事件映射函數。其方法如下:

  示例中是在主框架類(lèi)中調用通信控件類(lèi)函數。所以先要在Mainfrm.h添加如下消息映射函數。

afx_msg void OnCommEvent();

  然后在Mainfrm.cpp中添加如下代碼

BEGIN_EVENTSINK_MAP(CMainFrame, CFrameWnd)
ON_EVENT(CMainFrame, ID_COMMCTRL, 1, OnCommEvent, VTS_NONE)
END_EVENTSINK_MAP()

  接下來(lái)就可以在void CMainFrame::OnCommEvent()函數中處理各種串口響應事件。

  串口收發(fā)數據時(shí),若數據只用 ANSI 字符集,則用文本方式收發(fā)。對其它字符數據,如數據中有嵌入控制字符、Nulls 等等,則使用二進(jìn)制方式。

  其中一個(gè)需要注意的問(wèn)題是函數SetInput()發(fā)送的是VARIANT型變量,而我們輸入的一般是CString型變量,因此必須進(jìn)行轉換。先將CString型變量轉換為BYTE型數組,再將轉換為ColeSafeArray型變量,然后將其組轉換為VARIANT型變量發(fā)送出去。這個(gè)轉換過(guò)程看起來(lái)比較復雜,但它可以滿(mǎn)足用不同的變量類(lèi)型來(lái)發(fā)送數據。在串口接收數據時(shí),也要做類(lèi)似的變量類(lèi)型轉換處理。該轉換的主要代碼實(shí)現如下所示:

void CMainFrame::OnSendData(CString m_strInputData,int kind) 
{
CString str,string; 
VARIANT strReceive;

BYTE data[256];
long i,length;
COleSafeArray m_input2;

length=m_strInputData.GetLength();
//將Cstring型變量轉換為BYTE型數組
for(i=0;i<length;i++)
data[i]=m_strInputData.GetAt(i);

length++;
//創(chuàng )建一個(gè)ColeSafeArray型變量數組
m_input2.CreateOneDim(VT_UI1,length,data,0);

//把字節數組轉換成ColeSafeArray型變量
for(i=0;i<length;i++)
m_input2.PutElement(&i,data+i); 
//把ColeSafeArray型變量轉換成VARIANT型變量
strReceive=m_input2; 
//發(fā)送數據
m_commctrl.SetOutput(strReceive);
}

  我們知道,每個(gè)使用的串口通信控件對應著(zhù)一個(gè)串行端口。如果應用程序需要訪(fǎng)問(wèn)多個(gè)串行端口,必須使用多個(gè)控件。通常,PC機配有兩個(gè)串行接口,分別以COM1和COM2標稱(chēng)。所以如果需要在同一應用程序中,對兩個(gè)接收機進(jìn)行遙控時(shí),就可以通過(guò)創(chuàng )建兩個(gè)串口通信控件來(lái)實(shí)現。并且PC機也可以根據需要添加新的串行接口硬件,所以通過(guò)多個(gè)串口通信控件就能很容易地實(shí)現與多個(gè)外部設備的通信。

  五、 結束語(yǔ)

  本文實(shí)現了在windows98下用Visual C++來(lái)開(kāi)發(fā)某偵察接收機與PC機串行通信的接口程序,并且利用ActiveX控件大大簡(jiǎn)化了程序設計的難度。本文給出了部分關(guān)鍵實(shí)現的代碼,并根據作者開(kāi)發(fā)經(jīng)驗,指出了需要注意的問(wèn)題,具有一定的實(shí)用意義。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
采用VB實(shí)現組態(tài)軟件與下位機的串行通信方法研究
中基網(wǎng)-信息技術(shù)-軟件世界-應用實(shí)例
串口通信IN C (適用于Microsoft Visual Studio 2010/2012/20...
delphi SPCOMM的一些用法注意
利用Win32API開(kāi)發(fā)串行通信程序
VS2008中使用ACTIVEX控件
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久