首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

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

热点排行