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

MFC 串口通訊:接收編輯框資料異或運算並顯示

     編輯:程式設計疑難解答

需求

從串口接收編輯框讀取資料,執行異或(XOR)運算,結果輸出到另一編輯框。

核心 API

  • GetDlgItemInt(nID, NULL, FALSE):從編輯框讀取整數(無號)。
  • SetDlgItemInt(nID, value, FALSE):將整數寫入編輯框。
  • 異或運算子:^(位元級 XOR)。

實作範例

void CMyDlg::OnBnClickedXorCalc() {
    UINT val1 = GetDlgItemInt(IDC_EDIT_SRC, NULL, FALSE); // 來源編輯框
    UINT val2 = GetDlgItemInt(IDC_EDIT_KEY, NULL, FALSE); // 金鑰編輯框(可選)
    UINT result = val1 ^ val2; // 異或
    SetDlgItemInt(IDC_EDIT_DEST, result, FALSE); // 目標編輯框
}

若資料為十六進制字串

CString strHex;
GetDlgItemText(IDC_EDIT_SRC, strHex);
DWORD val = 0;
for (int i=0; i='0'&&c<='9'? c-'0' : (c>='A'&&c<='F'? c-'A'+10 : c-'a'+10));
}
DWORD key = 0xA5A5A5A5; // 固定金鑰
DWORD res = val ^ key;
CString strRes;
strRes.Format(_T("%08X"), res);
SetDlgItemText(IDC_EDIT_DEST, strRes);

注意事項

  • 編輯框屬性設為 Number 可自動過濾非數字輸入。
  • 異或運算具可逆性:(A ^ B) ^ B == A,常用於簡易加密/校驗。
  • 串口接收緩衝區處理建議在 OnComm 事件中累積完整幀後再更新 UI,避免頻繁 SetDlgItemText 導致閃爍。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved