|
自己在CE下面写了个串口通讯程序,发送字符已经没有问题了,现在想添加支持16进制发送,在网上查了下,改了代码,可是接收的还是不正确,请教高手~~
接收16进制的时候,PC端用串口调试助手,发送A0,CE下面接收FFFFFFA0,但是发送00的时候就没有问题,我把关键的代码贴出来
[code]
void CALLBACK CSerialPortDlg::OnCommRecv(CWnd* pWnd, char *buf, int buflen)
{
CString tmp;
CSerialPortDlg * pDlg = (CSerialPortDlg*)pWnd;
CEdit *pRecvStrEdit = (CEdit*)pDlg->GetDlgItem(IDC_REC_DISP); /* 取得控件指针 */
if (pDlg->m_CtrlHex.GetCheck())
{
tmp.Format(_T("%02X "),*buf);
pDlg->m_strRecDisp += tmp;
}
else
{
for (int i = 0; i < buflen; i++, buf++)
{
tmp.Format(_T("%c"), *buf); /* 将字符转换为字符串 */
pDlg->m_strRecDisp += tmp;
}
}
pRecvStrEdit->SetWindowText(pDlg->m_strRecDisp); /* 显示在窗口上 */
DWORD temp = pDlg->m_strRecDisp.GetLength();
pRecvStrEdit->SetSel(temp);
pDlg->m_RecvChar += buflen;
tmp.Format(L"%ld",pDlg->m_RecvChar);
pDlg->GetDlgItem(IDC_DISPLAY_CHACTER)->SetWindowText(tmp);
}
|
|