MFC下對串列埠的操作以及定時器的呼叫

2022-08-17 18:09:17 字數 2002 閱讀 8843

最近研究了一下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.設定串列埠通訊引數

1

dcb 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新增訊息響應

1

void

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)214

else

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可以用來區分不同的定時器...