999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2013-08-15 00:44:35長江大學電子信息學院
電子世界 2013年4期
關鍵詞:用戶

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

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

1.基于MFC的多線程

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

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

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

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;//標志和串口的連接狀態};

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

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

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

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

(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)://重新設置讀寫緩沖區大小。SetComm-Timeouts(hCom,&Cs);//設置超時參數。SetCommMask(hCom,EV一XCHAR);//設定監視事件。GetComm-State(hCom,&dcb);//獲取串口的初始配置。SetCommState(hCom,&dc);//用新的DCB結構重新配置串口設備。

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

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

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

2.3 建立監控線程處理串口通信事件

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

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

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

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

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

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

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

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

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

猜你喜歡
用戶
雅閣國內用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請稍后再哭
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網新媒體用戶之間有何差別
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應用
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
100萬用戶
創業家(2015年10期)2015-02-27 07:54:39
主站蜘蛛池模板: 欧美日韩中文字幕在线| 亚洲中文字幕国产av| 亚洲一区二区视频在线观看| 小说 亚洲 无码 精品| 国产亚洲欧美日本一二三本道| 久久久久亚洲精品无码网站| www亚洲天堂| 91年精品国产福利线观看久久 | 国产欧美日本在线观看| 国产流白浆视频| 天天干天天色综合网| 精品91视频| 国模视频一区二区| 久久亚洲日本不卡一区二区| 欧美笫一页| 国产精品网址你懂的| 国产精品第一区| 日韩精品亚洲人旧成在线| 福利一区在线| 伊人天堂网| 一级毛片高清| 国产精品成人一区二区不卡| 亚洲精品成人福利在线电影| 一级爆乳无码av| 国语少妇高潮| 18禁影院亚洲专区| 亚洲伦理一区二区| 久久亚洲国产最新网站| 欧美一级一级做性视频| 波多野结衣亚洲一区| 亚洲国产欧美中日韩成人综合视频| 精品自窥自偷在线看| 波多野结衣中文字幕久久| 亚洲欧美国产五月天综合| 国产精品久久久久久搜索| 在线观看视频一区二区| 午夜激情婷婷| 日韩在线欧美在线| 伊人久久大线影院首页| 亚洲无线视频| 日韩一级毛一欧美一国产| 国内精品视频区在线2021| 欧美一区二区三区欧美日韩亚洲 | 精品一区二区三区视频免费观看| 久草性视频| 色婷婷在线影院| 天堂岛国av无码免费无禁网站| 就去色综合| 亚洲AV一二三区无码AV蜜桃| 国产综合精品日本亚洲777| 97成人在线视频| 亚洲熟女偷拍| 亚洲美女久久| 丰满人妻被猛烈进入无码| 亚洲系列中文字幕一区二区| AV天堂资源福利在线观看| aⅴ免费在线观看| 国产成人精品无码一区二| 亚洲国产精品人久久电影| AV熟女乱| 色妺妺在线视频喷水| 97色婷婷成人综合在线观看| 国产尤物jk自慰制服喷水| 国产黑丝视频在线观看| 在线观看国产精品日本不卡网| 亚洲乱码精品久久久久..| 国产免费精彩视频| 亚洲精品黄| 国产成人精品高清不卡在线 | 国产欧美在线观看视频| 激情無極限的亚洲一区免费| 男人天堂亚洲天堂| 国产理论最新国产精品视频| 99偷拍视频精品一区二区| 在线观看无码a∨| 亚洲精品中文字幕无乱码| 一本大道香蕉高清久久| 男人天堂亚洲天堂| 国产精品无码AV中文| 毛片基地美国正在播放亚洲 | 日韩在线欧美在线| 午夜福利无码一区二区|