串口接收字節數組 (BYTE rxdata[]),在 MFC 編輯框 (CEdit) 中以十六進制格式顯示 (如 0xA1 0xB2 0x0F)。
CString strHex;
for (int k = 0; k < len; k++) {
CString byteStr;
byteStr.Format(_T("%02X "), rxdata[k]); // 大寫十六進制,兩位補零,帶空格
strHex += byteStr;
}
// 追加到編輯框
m_strRecvData += strHex;
SetDlgItemText(IDC_EDIT_RECV, m_strRecvData);
// 或直接追加
GetDlgItem(IDC_EDIT_RECV)->SetWindowText(m_strRecvData);
if (m_cComm.get_CommEvent() == 2) { // 接收事件
VARIANT variant_inp = m_cComm.get_Input();
COleSafeArray safearray_inp(variant_inp);
long len = safearray_inp.GetOneDimSize();
BYTE rxdata[512];
for (long k = 0; k < len; k++) {
safearray_inp.GetElement(&k, rxdata + k);
}
// 格式化為十六進制字符串
CString strHex;
for (long k = 0; k < len; k++) {
CString tmp;
tmp.Format(_T("%02X "), rxdata[k]);
strHex += tmp;
}
strHex += _T("\r\n"); // 換行分隔每次接收
// 顯示
m_strRecvData += strHex;
SetDlgItemText(IDC_EDIT_RECV, m_strRecvData);
// 自動滾動到底部
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_RECV);
pEdit->SetSel(m_strRecvData.GetLength(), m_strRecvData.GetLength());
}
%02X 格式化:大寫、兩位、不足補零。RichEdit 支持更大文本。