最近研究了一下mfc下對串列埠的操作,測試了一下對裝置的讀寫。
1.開啟串列埠
1 getdlgitem(idc_button_open)->enablewindow(false);2 m_hcomm = createfile("
com1",
3 generic_read |generic_write,40
,5null,
6open_existing,70
,8null);
9if (m_hcomm ==invalid_handle_value)
10
2.設定串列埠通訊引數
1dcb dcb;
2 memset(&dcb,0,sizeof
(dcb));
3if (!::getcommstate(m_hcomm,&dcb))
47 dcb.baudrate = 9600
;8 dcb.fparity = 1
;9 dcb.parity = 0
;10 dcb.bytesize = 8
;11 dcb.stopbits = 0
;12 setcommstate(m_hcomm,&dcb);
1314
if (!::setupcomm(m_hcomm,1024,1024
))15
3.設定超時
1//設定讀超時
2 m_commtimeouts.readintervaltimeout=maxdword;
3 m_commtimeouts.readtotaltimeoutmultiplier=0
; 4 m_commtimeouts.readtotaltimeoutconstant=0; 5
//在讀一次輸入緩衝區的內容後讀操作就立即返回, 6//
而不管是否讀入了要求的字元。 7//
設定寫超時
8 m_commtimeouts.writetotaltimeoutmultiplier=100
; 9 m_commtimeouts.writetotaltimeoutconstant=500
; 10 ::setcommtimeouts(m_hcomm,&(m_commtimeouts)); //
設定超時
11 ::purgecomm(m_hcomm,purge_rxclear | purge_txabort);
4.開乙個執行緒
1 m_pscanthread = afxbeginthread(scanthreadproc,this);
5.設定定時器
快捷鍵ctrl+w在messagemaps新增訊息響應
1void
ctestdamdadlg::ontimer(uint nidevent)
2
16case
timer_4:
17
24case
timer_6:
2532
33case
timer_8:
34
41case
timer_10:
4249
50default:51
58}59cdialog::ontimer(nidevent);
60 }
執行緒裡開啟定時器
1 dlg->settimer(timer_2,5000,null);
6.呼叫寫串列埠操作
1 bool ctestdamdadlg::writecomm(byte *lpbyte,dword dwbytes)214else
1518 }
讀串列埠操作類似,這樣就完成了定時對串列埠的讀寫操作,測試通過!
MFC中的定時器
mfc中提供了定時器,可以實現每隔一段時間產生乙個定義器訊息的功能。這樣我們就可以在響應定時器訊息的函式中編寫 實現一定的功能。定時器的使用分三步 第一步,建立定時器,使用settimer函式。在這個函式中設定1 定時器的標號 這個標號唯一的標定了這個定時器,在多個定時器的時候有用 2 訊息時間間隔...
MFC定時器的用法
settimer是設定乙個計時器並開始執行計時器ontimer中的 ontimer是計時器所執行的 killtimer用於停止計時器。settimer是設定,ontimer是響應settimer訊息的。settimer函式的用法 1 用wm timer來設定定時器 先請看settimer這個api函...
MFC 定時器的使用
一 簡單定時器的使用 函式原型 timer functions uint ptr settimer uint ptr nidevent,uint nelapse,void callback lpfntimer hwnd,uint,uint ptr,dword nidevent可以用來區分不同的定時器...