




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、31w當我們在用 VS 進行串口編程時,在打開串口前,經常想知道當前 PC 存在多少個串口, 哪些串口可用?哪些串口已經打開了,最好是在一個 Combo Box 中列表系統當前所有可用 的串口以供選擇,然而如何獲取系統當前可用的串口有哪些呢?這里介紹的方法也是最簡單也是最笨的一種方法,即一個一個去試,試完了就知道了。至于 還有沒有其它更好的方法,暫不在本文所討論的范圍之內。一個在對話框的 OnlnitDialog 函數內做如下操作:1初始化時檢測串口1BOOL Ctbox_debug_viewDlg:OnInitDialog()23CDialogEx:OnInitDialog();44/ Ad
2、d About menu item to system menu6/ IDM_ABOUTBOX must be in the system command range.8ASSERT(IDM_ABOUTBOX & OxFFFO) = IDM_ABOUTBOX);9ASSERT(ID卜LABOUTBOX AppendMenu(MF_SEPARATOR);21pSysMenu-AppendMenu(MF_STRINGJIDM_ABOUTBOX, strAboutMenu);22232425/Set the icon for this dialogThe framework does thi
3、s automatically26/when the applications main window is not a dialog27Setlcon(m_hlcon TRUE);/ Set big icon28Setlcon(m_hlcon,FALSE);/ Set small icon29w30/TOGO: Add extra initialization hereW32 AddCom();/向紹r忝加串口設備m_CombolPortSetCurSel(O);34/.35AddCom 函數如下左義:void Ctbox_debug_viewDlg:AddCom(void)uicounte
4、r = portseGetSize();/如果個數大于0if(uicounter 0)545556EnumerateSerialPorts 函數如下:57void Ctbox_debug_viewDlg:EnumerateSerialPorts(CUIntArray& ports, CUIntArray& portse, CUIntArray&portsu)5859晴除串口數組內容60portsRemoveAll();61portseRemoveAll();62portsuRemoveAll();63因為至多有255個串口 所以依次檢査各串口是否存在3637383940
5、41EnumerateSerialPortsCportsportseportsu); unsignedshort uicounter;unsigned short uisetcom;CString str;4243獲取可用串口個數4445464748/初始化串口列表框495051for(int i=0; iuicounter; i+)5253uisetcom = portseElementAt(i);str.Format(_T(COM%d ”)uisetcom);m_CombolPortAddString(str);w64/如果能打開某一串口,或打開串口不成功.但返回的是ERROR_ACCES
6、S_DENIED錯誤信息.65都認為串口存在,只不過后者表明串口已經被占用66否則串口不存在67for (int i=l; iSetWindowText (_T(“打開”);106ShouInfo(_T(H關閉串 口成功! ”);107m_OpenStatus =false;108return;109110UpdateData(TRUE);111mOpenStatus =true;112當前端口號113int curPort =portse.ElementAt(m_CombolPort.GetCurSel();114mmscomm. put_CommPort(curPort); /端口115m
7、_mscomm. put_InBufferSize(1024);/接收緩沖區116m_mscomm.put_OutBufferSize(1024);/發送緩沖區119117m_mscomm. put_InputLen(0);/*,zi BU接收區數據長度為0.表示全部瀆取118m_mscommput_InputMode(1.);/以-進制方弋謨數抑:119m_mscomm. put_RThreshold( 1); / /沖區有1個及1個以上字符時,將引發接收數押;的OnComm爭件123124125120/波特率121DWORD baudrate;122switch(m_CombolBaudr
8、ate.GetCurSel()123124case 0:125baudrate=115200;126break;127case 1:128baudrate=9600;129break;130default:131ASSERT(FALSE);132break;133134CString setting;w135setting. Format (_T(”d,8J1M)baudrate);136m_mscomm.put_Settings(setting/_T(M115200n8?lM)/);/波特率,無校驗,8個 數據位,1個停止1位143137m_mscommput_PortOpen (TRUE)
9、; /打開串口138GetDlgltem (IDC_BT_OPEN) - SetWindowText(_T(M關閉“);139ShoMlnfo(_T(u打開串 口成功! ”);147140 3串口熱拔插時檢測串口這里主要利用 Cwnd 的 ON_WM_DEVICECHANGE 消息來處理。ON_WM_DEVICECHANGE 消息在 VS2010 中好像只能通過手動來添加,反正我沒找到可 以通過對話的形式來添加的,后續有知道的兄臺麻煩告知我一下。因此,首先得手動添加 ON_WM_DEVICECHANGE 消息:第一步:在消息映射 BEGIN_MESSAGE_MAP(Ctbox_debug_vi
10、ewDlg, CDialogEx)中添力 II:141 ON_WM_DEVICECHANGE()第二步:在頭文件類的立義中添加函數聲明:142 afx_msg BOOL OnDeviceChange(UINT nEventType, DWORD dwData);第三步:實現函數143 BOOL Ctbox_debug_viewDlg:OnDeviceChange(UINT nEventTypeDWORD dwData)144 145/DEV_BROADCAST_DEVICEINTERFACE* dbd = (DEV_BROADCAST_DEVICEINTERFACE*)dwData;146sw
11、itch (nEventType)147148caseDBTDEVICEREMOVECOMPLETE:/移除設備149caseDBT_DEVICEARRIVAL:/添加設備W150RefreshCom();/刷新組合框的內容151break;160161default:162break;163164164return TRUE;166167 RefreshCom 函數如下:16S void Ctbox_debug_viewDlg:RefreshCom(void)169 170int count =m_CombolPort.GetCount();171171for(int i=0;icount;
12、i+)172173m_CombolPort.DeleteString(count -1 -i);174175AddCom();176m_CombolPort.SetCurSel(0);177 第四步:在 cpp 文件中包含頭文件178 #include 這是因為 DEV_BROADCAST_DEVICEINTERFACE,DBT_DEVICEREMOVECOMPLETE, DBT_DEVICEARRIVAL 這幾個東東在頭文件 Dbt.h 中泄義的,這樣才能編譯通過。而 AddCom 函數已經在之前講到過,回過頭去看看。這里的思想是通過檢測到設備的插入和拔出時刷新組合框的內容,是通過重新測試串口的方 式來實現的。列:需要注總的是,當插入和拔出設備時,系統會檢測
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年汽車尾氣處理市場分析報告
- 2025年中國咖啡磨砂膏行業市場全景分析及前景機遇研判報告
- 2025年模型制作行業市場需求分析報告及未來五至十年行業預測報告
- 各負其責教學課件
- 鹵素水份測定儀項目投資可行性研究分析報告(2024-2030版)
- 連鎖藥店新員工培訓課件
- 2024年中國鉻礦石行業市場調查報告
- 稅務師網課平臺課件下載
- 2025年 物流服務師高級考試練習題庫附答案
- 2025年中國腔體濾波器行業市場全景分析及投資策略研究報告
- 2025年全國新高考II卷高考全國二卷真題英語試卷(真題+答案)
- 江蘇省揚州市2023-2024學年高一下學期6月期末 英語試卷(含答案無聽力)
- 浙江省溫州市樂清市2022-2023學年五年級下學期6月期末科學試題
- 2025年中國城市禮物發展白皮書
- 2024年陜西省西安市初中學業水平模擬考試地理試卷
- 口腔門診放射管理制度
- cpsm考試試題及答案
- 匯川技術高壓變頻器技術標準教材
- 2025年玻璃鋼圍網漁船項目市場調查研究報告
- 完整版新修訂《厲行節約反對浪費條例》(課件)
- 廣東省東莞市2025屆九年級下學期中考二模地理試卷(含答案)
評論
0/150
提交評論