读书人

怎样检测串口接收到的结构体是不是发送

发布时间: 2012-08-08 14:32:45 作者: rapoo

怎样检测串口接收到的结构体是不是发送的结构体?新人求助。
void CProject2Dlg::OnSend()
{
// TODO: Add your control notification handler code here
UpdateData(true);

//结构体指针
struct Person *prPtr;
prPtr=&pr1;

WriteComm(prPtr,sizeof(Person));

char ch[1024];
memset(ch,0,1024);
ReadComm(ch, 1024);//用字符串读取串口数据

struct Person temp1;//接收结构体

memcpy(&temp1,ch,sizeof(struct Person));//将读取的字符串转化为结构体

m_receive.Format("%s,%s,%f",temp1.id,temp1.name,temp1.salary);


if (temp1==pr1)
{
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(TRUE);
}
else
{
((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(FALSE);
}


报错:
error C2678: binary '==' : no operator defined which takes a left-hand operand of type 'struct Person' (or there is no acceptable conversion)


[解决办法]
memcmp()
[解决办法]
加入CRC32校验
[解决办法]

C/C++ code
if(0 == memcmp(temp1,pr1,sizeof(Person ))){   // 相同}// 或者一项一项的比较if(temp1.id == pr1.id && 0 == strcmp(temp1.name, pr1.name)) //.....
[解决办法]
十有八九十字节对齐的问题,先补补字节对齐的知识吧

读书人网 >VC/MFC

热点推荐