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

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

怎样检测串口接收到的结构体是不是发送的结构体?新人求助。
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)) //.....
[解决办法]
十有八九十字节对齐的问题,先补补字节对齐的知识吧