首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MFC 程序中實現定時發送串口數據的正確方式

     編輯:程式設計綜合問答

錯誤思路

在 `WinMain` / `CWinApp::InitInstance` 中寫 `while(true)` 循環發送 → 阻塞消息泵,界面卡死。

正確方式:定時器

// 初始化
SetTimer(TIMER_SEND_ID, 1000, NULL); // 1秒

// 消息映射
ON_WM_TIMER()

void CMyDlg::OnTimer(UINT_PTR nIDEvent) {
    if (nIDEvent == TIMER_SEND_ID) {
        SendSerialData(); // 非阻塞發送
    }
    CDialog::OnTimer(nIDEvent);
}

替代方案

  • 工作線程 (`AfxBeginThread`) + 事件同步,發送耗時操作放線程。
  • I/O 完成端口 (IOCP) 異步串口通信 (高性能)。

參考

MFC 消息循環與定時器用法

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved