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

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

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

開(kāi)通VIP
串口通信IN C (適用于Microsoft Visual Studio 2010/2012/20...

                向無(wú)數拼命工作的 程序猿 及 攻城獅 致敬!

  1. 軟硬件平臺簡(jiǎn)介      

        CPUP4 2G及以上兼容于80x86架構的中央處理器

        內存:1G及以上

        硬盤(pán):80G及以上

        網(wǎng)卡:100M及以上

         操作系統:Windows XP及以上

        軟件:VS2010/2012/2013  Visual C++ 6.0  Keil uVision3-4   STC_ISP_V488/友善串口助手

        硬件:眾多、不勝數

2.總體設計思想

    串口通訊把數據的字節分解成單個(gè)的二進(jìn)制比特流依次傳輸,其結構簡(jiǎn)單,連接線(xiàn)少,應用非常廣泛。實(shí)現串口通信的方法很多。如:利用標準通信函數實(shí)現串口通信、利用API實(shí)現串口通信和利用ActiveX控件實(shí)現。

    本文主要采用ActiveX控件Microsoft Communications Control(MSComm)編程,Windows平臺先進(jìn)的ActiveX技術(shù)使得對串口編程不再需要處理煩瑣的細節。利用已有的AxtiveX控件,只需要編寫(xiě)少量的代碼,就可以輕松高效地完成任務(wù)。

    以下對ActiveX控件屬性進(jìn)行簡(jiǎn)單介紹,在ClassWizard中為新創(chuàng )建的通信控件定義成員對象(CMSComm m_comm),通過(guò)該對象便可以對串口屬性進(jìn)行設置,MSComm控件共有27個(gè)屬性,這里只介紹其中幾個(gè)常用屬性:

CommPort:設置并回通訊端口號。

  • Settings:以字符/其他的形式設置并返回波特率、奇偶校驗、數據位、停止位。
  • PortOpen:設置并返回通訊端口的狀態(tài),也可以打開(kāi)和關(guān)閉端口。
  • Input:   從接收緩沖區返回和刪除字符。
  • Output:  向發(fā)送緩沖區寫(xiě)一個(gè)字符串。
  • InputLen:設置每次Input讀入的字符個(gè)數,缺省值為0,表明讀取接收緩沖區中的全部?jì)热荨?/span>
  • InBufferCount:返回接收緩沖區中已接收到的字符數,將其置0可以清除接收緩沖區。
  • InputMode:定義Input屬性獲取數據的方式(0:文本方式;為1:二進(jìn)制方式)。
  • RThresholdSThreshold:表示在OnComm事件發(fā)生之前,接收緩沖區或發(fā)送緩沖區中可以接收的字符數。

3.具體設計截面圖

   

    1、建立應用工程

          》》》》(1)以VC++60為例:

                       創(chuàng )建一個(gè)基于對話(huà)框的MFC應用程序項目,選擇Project菜單下Add to Project子菜單

                       中的Components and Controls選項,在彈出的對話(huà)框中雙擊Registered

                       ActiveX Controls項,則所有注冊過(guò)的ActiveX控件出現在列表框中。選擇Microsoft

                       Communications Controlversion 60,單擊insert按鈕即可將通信控件插入該工

                       程。添加該控件到對話(huà)框中,設置控件ID號為IDC _MSCOMM.

          》》》》(2)以VS2010為例,具體參考此鏈接:

    2、添加界面控件

           將對話(huà)框中的按鈕“取消”刪除,將“確定”按鈕改為“退出”。在對話(huà)框中添加適當的界面控件。

           本實(shí)驗中需添加的標注用的靜態(tài)控件、用于選擇串口和設置波特率的組合框分別設置控件ID號為

           IDC_COMBO_SELECT和IDC _COMBO_BTL SET、添加控制開(kāi)始發(fā)送/接收按鈕控件并設置控件ID號為

           IDC_BUTTON_START,添加用于輸入發(fā)送數據和輸出接收數據的編輯框并設置控件ID號為

           IDC_EDIT_SEND和IDC_EDIT_RECEVE,同時(shí)為其設置各種屬性。


-----------------------------分割分割分割--------------------------------------------

      添加完后如下圖

                                                                 

 

3、映射控件通用消息

   (1)打開(kāi)MFC ClassWizard對話(huà)框,單擊Member Valuable為相應控件添加變量。添加變量名和類(lèi)型如下表:

控件ID號

變量名

變量類(lèi)似

IDC_EDIT_RECEVE

CString

m_strReceive

IDC_EDIT_SEND

CString

m_strSend

IDC_MSCOMM

CMSComm

m_MScomm

IDC_PORT

int

m_nPort

如下圖:

                                                             

 

4、為對應控件添加代碼

1為按鈕IDC_BUTTON_OPEN添加單擊響應函數void CMyDlg::OnButtonOpen();函數代碼如下:

   

CMyDlg::OnButtonOpen();函數代碼如下: void CMyDlg::OnButtonOpen() { // TODO: Add your control notification handler code here if(m_MSComm.GetPortOpen()) { AfxMessageBox(_T('親,請先關(guān)閉串口!')); return; } UpdateData(TRUE); if(m_nPort==-1) { AfxMessageBox(_T('親,請選擇串口!')); return; } m_MSComm.SetCommPort(m_nPort);//選擇com m_MSComm.SetInBufferSize(1024);//設置輸入緩沖區的大小 m_MSComm.SetOutBufferSize(1024);//設置輸出緩沖區的大小 m_MSComm.SetInputLen(0);//設置當前接收區數據長(cháng)度為0 m_MSComm.SetInputMode(1);//1:表示以二進(jìn)制方式檢取數據 m_MSComm.SetRThreshold(1); /* 接收緩沖區有1個(gè)及1個(gè)以上字符時(shí),將引發(fā)接收數據的Oncomm事件*/ m_MSComm.SetPortOpen(TRUE);//打開(kāi)串口 if(m_MSComm.GetPortOpen()) { GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(FALSE); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(TRUE); } else { m_MSComm.SetOutBufferCount(0); CString strInfo=_T(''); strInfo.Format(_T('啊哦!打開(kāi)串口COM%d失??!'),m_nPort); AfxMessageBox(strInfo); GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(FALSE); }}

2)為按鈕IDC_BUTTON_SEND添加單擊響應函數void CMyDlg::OnButtonSend();函數代碼如下:

   

void CMyDlg::OnButtonSend() { // TODO: Add your control notification handler code here if(!m_MSComm.GetPortOpen()) { AfxMessageBox(_T('親,請先打開(kāi)串口!')); return; } UpdateData(TRUE); //讀取編輯框內容 int nSendLength=m_strSend.GetLength();//要發(fā)送的字符串送字符數組 CByteArray ByteArray; ByteArray.RemoveAll(); ByteArray.SetSize(nSendLength); for(int i=0;i

3)為按鈕IDC_BUTTON_CLOSE添加單擊響應函void CMyDlg::OnButtonClose();函數代碼如下:

   

void CMyDlg::OnButtonClose() { // TODO: Add your control notification handler code here if(!m_MSComm.GetPortOpen()) { AfxMessageBox(_T('親,請先打開(kāi)串口!')); return; } m_MSComm.SetPortOpen(FALSE); GetDlgItem(IDC_BUTTON_OPEN)->EnableWindow(TRUE); GetDlgItem(IDC_BUTTON_CLOSE)->EnableWindow(FALSE);}

(4)為組合框添加初始化函數void CMyDlg::OnSelchangeBps();編輯加入代碼如下

void CMyDlg::OnSelchangeBps() { // TODO: Add your control notification handler code here UpdateData(true); int nlndex=m_bps.GetCurSel();a=nlndex; switch(nlndex) { case 0: m_MSComm.SetSettings('19200,n,8,1'); break; case 1: m_MSComm.SetSettings('14400,n,8,1'); break; case 2: m_MSComm.SetSettings('9600,n,8,1'); break; case 3: m_MSComm.SetSettings('4800,n,8,1'); break; default: break; } /*參數1表示每當串口接收緩沖區中有多于或等于 1個(gè)字符時(shí)將引發(fā)一個(gè)接收數據的OnComm事件*/ UpdateData(false);}

  (5IDC _MSCOMM添加消息映射函數void CMyDlg::OnOnCommMscomm()以便當接收緩沖區有數據時(shí)做相應處理。添加代碼如下:

void CMyDlg::OnOnCommMscomm() { // TODO: Add your control notification handler code here VARIANT varinant_Input; COleSafeArray safearray_Input; BYTE RcvData[2048]; //設置BYTE數組 An 8-bit integerthat is not signed. CString strTmp=_T(''); if(m_MSComm.GetCommEvent()==2)//事件值為2表示接收緩沖區內有字符 { varinant_Input=m_MSComm.GetInput(); //讀緩沖區 safearray_Input=varinant_Input; /*--VARIANT型變量轉換為ColeSafeArray型變量--*/ int Length=safearray_Input.GetOneDimSize();//得到有效數據長(cháng)度 for(long i=0;i

   

  (6)數據

void CMyDlg::OnRadio1() { // TODO: Add your control notification handler code here b=true;}void CMyDlg::OnRadio2() { // TODO: Add your control notification handler code here b=false;}

接收形式添加函數void CMyDlg::OnRadio添加代碼如下:


  5.生成可執行的EXE文件

編譯、鏈接、運行會(huì )相應工程目錄下的debug目錄下生成可執行的EXE文件。連接好串口線(xiàn)后運行該文件可進(jìn)行串口通信。運行如下

                            

 

五、軟件流程圖

符號設定

        流程開(kāi)始符號:      

          流程結束符號:       

         判定符號:           

        路由符號:          

        文檔輸出:  

 

在概念設計中,我采用單向策略.用自頂向下設計一個(gè)全局概念結構的框架,以它為骨架集成由自底向上策略中設計的各局部概念結構.

、測試結果截圖

筆記本電腦運行如下:(分整數和字符兩種顯示格式)

A.整數顯示

                                                                         

 

B.字符顯示

                                                                        

 

C.外設測試運行如下:

                             

 

轉載請注明來(lái)源,么么噠!原創(chuàng )聲明:本文為-Sure-原創(chuàng )作品,轉載時(shí)請注明“轉自-Sure-”及原文鏈接。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
vc++6.0使用串口控件例程
CMSComm控件串口編程
(三)MSComm控件進(jìn)行串口編程的基本步驟
VC++.NET和VC++6.0串行通信控件的使用區別(精華)
VC上應用mscomm控件
VS2010/MFC 入門(mén)編程七(基于MSCOMM32.OCX控件的串口編程)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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