|
我用了EVC高级编程里面的串口通讯类
接收数据时字符变量可以正常显示,我想接收16进制的数据应该怎么显示。
在发送数据的时候,我在电脑上用ASCII码显示数据时,只能显示第一个字符,用HEX编码显示时能都显示出来但是在每个两个字符中间都加了00,如发送1234时,ASCII码显示只有一个1,HEX码却显示3100320033003400,
下面是部分代码:
发送:
void CSeriesSampleDlg::OnBtnsend()
{
UpdateData(TRUE);
BYTE * buf;
int bufLen = m_strSend.GetLength()*2;
buf = new BYTE(bufLen);
CopyMemory(buf,m_strSend.GetBuffer(m_strSend.GetLength()),bufLen);
if (!m_ceSeries.WritePort(buf,bufLen))
{
AfxMessageBox(L"写入失败");
}
}
接收:
void CSeriesSampleDlg::OnSeriesRead(CWnd* pWnd,BYTE* buf,int bufLen)
{
CSeriesSampleDlg *pDlg = (CSeriesSampleDlg *)pWnd;
CEdit * pEdit;
pEdit = (CEdit*)pDlg->GetDlgItem(IDC_EDTRECV);
CString strRecv((char*)buf);
CString strOld;
pEdit->GetWindowText(strOld);
pEdit->SetWindowText(strOld + strRecv);
delete[] buf;
}
|
|