亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MFC的多線程與串口通信

        2013-08-15 00:44:35長江大學電子信息學院
        電子世界 2013年4期
        關鍵詞:句柄本船程序開發(fā)

        長江大學電子信息學院 王 偉

        隨著信息技術的發(fā)展,更新更快更方便的通信方式才會滿足大眾口味,本文基于曾經參與的雷達模擬器項目的相關經驗完成,該項目主要是實現在微機室中能夠模擬海上航行工程中教練的與學員的船只之間的指揮、調度等通信過程,有著很大的實用價值。本項目用VC6.0開發(fā),大致分為三部分即教練船,本船和操作舵,本文提取的是教練船與本船(即學員船)之間的通信部分,基于此基礎上研究多線程技術在串口通信中的應用。

        1.基于MFC的多線程

        在Windows應用程序開發(fā)時, 有兩種主要方法: 基于Windows API 的開發(fā)方法和基于Windows MFC 的開發(fā)方法。后者借助于類向導的幫助,簡化了程序開發(fā)的過程并減少了開發(fā)的工作量和難度。本文研究的重點就是基于VC ++的MFC 多線程通信程序及其在串口通信中的應用。多線程應用程序比單線程應用程序要考慮更多的因素,但它有著明顯的好處。在MFC類庫中,提供了多線程編程的支持,基本原理與基于Win32 API函數的設計一致,但由于MFC對同步對象作了封裝,因此對用戶編程實現來說更加方便。在MFC 中,線程分為兩種:用戶接口線程(User Interface Thread)和工作者線程(Worker T hread)。前者常用來獨立地處理用戶輸入和響應用戶事件。后者常用于任務處理不要求用戶輸入的后臺任務。

        2.多線程在串口通信中的應用

        串口1/0通常是很費時的操作,如果程序需要實時監(jiān)聽串口同時又想要避免很長時間等待1/0操作結束,可以利用多線程技術。下面是簡單的串口通信程序,并創(chuàng)建工作線程分別監(jiān)視串口。

        2.1 串口通信類

        程序專門建立了一個串口通信類class CMyCOM

        {Public:CMyCOM(Cstring set[6]);~CMyCOM();BOOL InCOM();BOOL OpCoM();

        DWORD WrCOM(char*buf,DWORD dN);DWORD ReCOM(char*buf,DWORD dN);

        void CloseCOM();HANDLE hCom://串行口句柄;HANDLE ht;//用于WM一COMMNOTIFY消息事件對象B00L bt;//標志和串口的連接狀態(tài)};

        2.2 串口通信類成員函數的說明

        對串口通信類CCOM中各成員函數的說明:

        (l)CMyCOM(Cstring set[6]);//串口構造函數。

        (2)~CMyCOM();//該析構函數主要用于刪除串口初始化時所創(chuàng)建的事件對象。

        (3)BOOL InCOM();//初始化。

        (4)BOOL OpCoM()://打開串口連接該成員函數以重疊方式打開串口設備其中用到以下一些函數:hCom=CreateFile(m_Port,GENERIC-READ,!GENERIC-WRITE,0,NULL,OPEN-EXISTING,FILE一FLAGOVERLAPPED,NULL)SetupComm(hCom,MAXBLOCK,MAXBLOCK)://重新設置讀寫緩沖區(qū)大小。SetComm-Timeouts(hCom,&Cs);//設置超時參數。SetCommMask(hCom,EV一XCHAR);//設定監(jiān)視事件。GetComm-State(hCom,&dcb);//獲取串口的初始配置。SetCommState(hCom,&dc);//用新的DCB結構重新配置串口設備。

        (5)DWORD WrCOM(char*buf,DWORD dN);//寫串口函數;該成員函數將指定數量的字符從串口輸出,其中用到以下一些API函數即:ClearCommError(hCom,&dr,&Ct);//清理錯誤標志并返回當前狀態(tài)信息;WriteFil e(hCom,buf,dm,&dm,&We);//寫串口。

        (6)DWORD RdCOM(char*buf,DWORD dm);//讀串口函數;該成員函數可以從串口接收緩沖區(qū)中讀入指定數量的字符,其中用到以下一些函數:ClearCommError(hCom,&d r,&Ct);ReadFile(hCom,buf,mN,&mN,&Rd);//讀串口。

        (7)void CloseCOM();//關閉串口。

        2.3 建立監(jiān)控線程處理串口通信事件

        如下是該線程的關鍵代碼:

        UINT ComThread(LPVOID pPm)//用于監(jiān)控串口的工作者線程

        {CMyCOM*pm=(CMyCOM*)pPm;memse t(&os,0,sizeof(OVERLAPPED));//初始化OVERLAPPED結構。os.hEvent=CreatEv ent(NULL,TRUE,FALSE,NULL);//初始為無信號狀態(tài)。B00L bt=FALSE;while(pm->bt)//一直監(jiān)視串口設備,直到串口連接被掛斷。{ClearCommErrort(pm一>hCom,&dr,&Ct);//清除所有I/O錯誤,并返回設備當前狀態(tài);if(Ct.cblnQue){WaitForsingleobjeet(pm一>ht,INFLNITE);

        ResetEvent(pm一>ht);PostMessage(pm一>ht,WM-COMMNOTIFY,EV-CHAR,0);

        Continue;if(!WaitCommEvent(pm一>hCom,&dk,&os))if(GetLastError()==ERROR-IO-PENDING)//無限等待重疊操作結果Get-OverlappedResult(pm一>hCom,&os,&ds,TRUE);else{}//進行出錯處理}

        CloseHandle(os.hEvent);//關閉事件句柄Return(0);}

        3.結論

        本文給出了多線程的原理優(yōu)勢方面的介紹,結合本人參與的項目中的例子,一個串口類及其成員函數,以點帶面介紹了基于MFC的多線程技術在串口通信中的應用。

        [1]劉勇.如何利用MFC 實現線程間的同步[J].計算機應用,2001.

        [2]于華.多線程應用程序中的同步控制技術及應用[J].計算機系統(tǒng)應用,2001,07.

        [3]深入淺出MFC (第二版),侯俊杰,華中科技大學出版社,2001,1.

        [4]孫鑫,余安萍.VC++深入詳解(附光盤)[M].北京:電子工業(yè)出版社,2006.

        [5]孔鵬.Visual C++ 6.0 完全自學手冊(附光盤)[M].北京:機械工業(yè)出版社,2007.

        猜你喜歡
        句柄本船程序開發(fā)
        不同會遇態(tài)勢下目標船行為模擬及其特征分析
        基于虛擬力的船舶導航建模方法*
        APP應用程序開發(fā)模式探究
        電子制作(2019年19期)2019-11-23 08:42:02
        基于TestStand的自動檢測程序開發(fā)
        電子測試(2018年11期)2018-06-26 05:56:16
        高校圖書館持久標識符應用研究
        基于嵌入式系統(tǒng)Windows CE的應用程序開發(fā)
        基于App inventor 2手機程序開發(fā)過程的學習與實——以“喵喵定時器”APP開發(fā)為例
        電子制作(2017年1期)2017-05-17 03:54:08
        編譯程序語法分析句柄問題分析與探討
        基于速度障礙的多船自動避碰控制方法
        中國航海(2015年3期)2015-11-29 01:02:53
        兩船距離與轉向避讓難度關系量化研究
        又粗又大又黄又爽的免费视频| 日本区一区二区三视频| 美女张开腿黄网站免费| 亚洲欧美激情在线一区| 日本中文字幕不卡在线一区二区| 日韩精品中文字幕免费人妻| 久久久中文字幕日韩精品| 蜜臀色欲av在线播放国产日韩| 四虎精品视频| 久久国产精品一区二区| 国产一区二区精品亚洲| 欧美成人精品午夜免费影视| 午夜一级在线| 国产99视频一区二区三区| 人妻少妇哀求别拔出来| 国内精品久久久久影院一蜜桃| 免费国产黄线在线播放| 在线观看免费的黄片小视频| 夜夜高潮夜夜爽夜夜爱爱一区 | 国产乱子伦农村xxxx| 看黄网站在线| 韩国日本在线观看一区二区| 亚洲天堂丰满人妻av| 国产av精国产传媒| 人妻无码人妻有码不卡| 性做久久久久久久| 日本美女性亚洲精品黄色| 人与人性恔配视频免费| 色噜噜狠狠色综合成人网| 国产精品美女一级在线观看| 一区二区三区av在线| 国产av旡码专区亚洲av苍井空| 国产免费资源高清小视频在线观看 | 欧洲熟妇色xxxxx欧美老妇伦| 亚洲AV无码一区二区二三区我 | 色综合色综合久久综合频道| 亚洲一区二区三区在线最新| 67194熟妇人妻欧美日韩| 色丁香久久| 国产精品亚洲最新地址| 欧美丰满老熟妇aaaa片|