vc++串口通信数据处理问题
我用的serial port类做的串口通信,当接到数据后按协议解包,接收到得数是十六进制的,其中0xAA 0x22 是帧头0x12 0x22是数据包内容,.我现在要接收并解包,求大神指点。
LONG CTEST1Dlg::OnCommunication(WPARAM ch, LPARAM port)
//LONG CTEST1Dlg::OnComm(WPARAM ch, LPARAM port)
{
if(m_ctrlEditRXData.GetLineCount()>=15)
{
m_strEditRXData.Empty();
UpdateData(FALSE);
}
UpdateData(TRUE);
CString strtemp;
m_strPortRXData +=(char)ch;
DataProcessTemp(m_strPortRXData.Mid(0,2));
m_strEditRXData += ch;
UpdateData(FALSE);
return 0;
}
void CTEST1Dlg::DataProcessTemp(CString stRXData)
{
CString data1,data2;
BYTE db1,db2;
char *temp=(char*)((LPCTSTR)stRXData);
db1=Hex2ten(temp[0]);
db2=Hex2ten(temp[1]);
data1=dtob(db1);
data2=dtob(db2);
if(data1[3]=='1')
state(IDC_STATIC0,0x0000FF00);
else
state(IDC_STATIC0,0xAAAAAAAA);
if(data1[2]=='1')
state(IDC_STATIC1,0x0000FF00);
else
state(IDC_STATIC1,0xAAAAAAAA);
if(data1[1]=='1')
state(IDC_STATIC2,0x0000FF00);
else
state(IDC_STATIC2,0xAAAAAAAA);
if(data1[0]=='1')
state(IDC_STATIC3,0x0000FF00);
else
state(IDC_STATIC3,0xAAAAAAAA);
if(data2[3]=='1')
state(IDC_STATIC4,0x0000FF00);
else
state(IDC_STATIC4,0xAAAAAAAA);
if(data2[2]=='1')
state(IDC_STATIC5,0x0000FF00);
else
state(IDC_STATIC5,0xAAAAAAAA);
if(data2[1]=='1')
state(IDC_STATIC6,0x0000FF00);
else
state(IDC_STATIC6,0xAAAAAAAA);
if(data2[0]=='1')
state(IDC_STATIC7,0x0000FF00);
else
state(IDC_STATIC7,0xAAAAAAAA);
}