資源描述:
《通信網(wǎng)絡(luò)設(shè)計(jì)課程設(shè)計(jì)-利用mscomm串口通信控件進(jìn)行異步串行通信的vc程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、通信網(wǎng)絡(luò)設(shè)計(jì)課程設(shè)計(jì)(w7):利用MSCOMM串口通信控件進(jìn)行異步串行通信的VC程序設(shè)計(jì)設(shè)計(jì)日期20081229----20090110利用MSCOMM串口通信控件進(jìn)行異步串行通信的VC程序設(shè)計(jì)一課程設(shè)計(jì)題目利用MSCOMM串口通信控件進(jìn)行異步串行通信的VC程序設(shè)計(jì)二課程設(shè)計(jì)要求●環(huán)境要求:Windows95/98/2000/XP●功能要求:能將鍵盤(pán)上輸入的數(shù)據(jù)發(fā)送到另一臺(tái)計(jì)算機(jī)上;能將接收到的數(shù)據(jù)顯示到屏幕窗口內(nèi);了解常用通信網(wǎng)絡(luò)設(shè)備的操作和應(yīng)用,掌握常用的通信協(xié)議的工作原理,能利用VisualC++、開(kāi)發(fā)工具完成相應(yīng)的通信程
2、序的設(shè)計(jì)工作。學(xué)習(xí)簡(jiǎn)明地介紹自己的設(shè)計(jì)工作。三課程設(shè)計(jì)目的用VisualC++編程工具主機(jī)提供的接口,解決網(wǎng)絡(luò)用戶(hù)之間的交互式對(duì)話問(wèn)題。進(jìn)一步深入掌握網(wǎng)絡(luò)設(shè)計(jì)和通信程序的設(shè)計(jì)原理。使學(xué)生對(duì)計(jì)算機(jī)通信網(wǎng)絡(luò)的設(shè)計(jì)實(shí)現(xiàn)有較深的了解,培養(yǎng)較高的通信網(wǎng)絡(luò)設(shè)計(jì)能力。四程序思路硬件連接方面:數(shù)據(jù)的發(fā)送和接收由軟件控制,不進(jìn)行硬件握手,其連接方法如圖真正需要互相連接的是RXD、TXD和GND;軟件方面:串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從CPU經(jīng)過(guò)串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時(shí),串行的位被轉(zhuǎn)
3、換為字節(jié)數(shù)據(jù)在Windows環(huán)境(WindowsNT、Win98、Windows2000)下,串口是系統(tǒng)資源的一部分。應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出資源申請(qǐng)要求(打開(kāi)串口),通信完成后必須釋放資源(關(guān)閉串口)。VC++6.0提供的MSComm控件通過(guò)串行端口發(fā)送和接收數(shù)據(jù),為應(yīng)用程序提供串行通信功能。使用非常方便?!、牛诋?dāng)前的Workspace中插入MSComm控件?! roject菜單------>AddtoProject---->ComponentsandControls----->Regist
4、ered ActiveXControls--->選擇Components:MicrosoftCommunicationsControl, version6.0插入到當(dāng)前的Workspace中。結(jié)果添加了類(lèi)CMSComm(及相應(yīng)文件:mscomm.h和mscomm.cpp)?!、疲趍scomm.h中加入MSComm控件。通信網(wǎng)絡(luò)設(shè)計(jì)課程設(shè)計(jì)(w7):利用MSCOMM串口通信控件進(jìn)行異步串行通信的VC程序設(shè)計(jì)設(shè)計(jì)日期20081229----20090110protected: CMSCommm_ComPort;在mscomm
5、.cpp::OnCreare()中: DWORDstyle=WS_VISIBLE
6、WS_CHILD; if(!m_ComPort.Create(NULL,style,CRect(0,0,0,0),this,ID_COMMCTRL)){TRACE0("FailedtocreateOLECommunicationsControl");return-1; //failtocreate }⑶.打開(kāi)并初始化串口voidCComDlg::OnOpencom(){if(m_Com.GetPortOpen())//打開(kāi)通信端口m
7、_Com.SetPortOpen(FALSE);m_Com.SetCommPort(1);//選擇com1if(!m_Com.GetPortOpen()){m_Com.SetPortOpen(TRUE);//打開(kāi)串口MessageBox("串口已經(jīng)打開(kāi)");}elseMessageBox("不能打開(kāi)串口!");m_Com.SetSettings("9600,n,8,1");//波特率9600,無(wú)校驗(yàn),8個(gè)數(shù)據(jù)位,1個(gè)停止位//以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位m_Com.SetInputMode(1);//
8、定義Input屬性獲取數(shù)據(jù)的方式(為0:文本方式;為1:二進(jìn)制方式)。m_Com.SetRThreshold(1);//為1表示有一個(gè)字符引發(fā)一個(gè)事件m_Com.SetInputLen(0);//設(shè)置每次Input讀入的字符個(gè)數(shù),缺省值為0,表明讀取接收緩沖區(qū)中的全部?jī)?nèi)容m_Com.GetInput();m_opened=TRUE;}⑷.捕捉串口事項(xiàng)。MSComm控件可以采用輪詢(xún)或事件驅(qū)動(dòng)的方法從端口獲取數(shù)據(jù)。我們介紹比較使用的事件驅(qū)動(dòng)方法:有事件(如接收到數(shù)據(jù))時(shí)通知程序。在程序中需要捕獲并處理這些通訊事件。在MainFrm.
9、h中:protected:afx_msgvoidOnCommMscomm();DECLARE_EVENTSINK_MAP()在ComDlg.cpp中:BEGIN_EVENTSINK_MAP(CComDlg,CDialog)//{{AFX_EVENTSINK_MA