假如我想传一组数据到单片机,先把要传的数据放入一个Buffer中,象这样
typedef struct{
__int16 day;
__int16 month;
__int16 year;
}DateTimeType;
另外还有char name[10];char id[4];int age;事先已经定义了他们的值,程序如下:
........
DateTimeType Time;
Time.day = 23;
Time.Year = 2002;
Time.month = 12;
memcpy(buffer,name,10);
memcpy(buffer+4,&Time,14);
memcpy(buffer+10+14,id,4);
memcpy(buffer+14+10+4,age,4);
.......
对不对?

解决方案 »

  1.   

    你要按单片机的通信协议来也就是说,如果单片机说中文,你就不能用英文搞,他不懂
    比如  帧头   站号   数据长度   数据1,数据2,数据3,。校验
    你按协议写 例:帧头 eb90 eb90 eb90  03 , day,month,year , 校验
    单片机收到 eb90 db90 db90 就知有数据来了,根据协议处理后面的数据
    你上面写的东西不太懂
      

  2.   

    __int16 是多大,没用过,不过,建议把memcpy(buffer+4,&Time,14);改成memcpy(buffer+4,&Time,sizeof(DateTimeType)); 确信buffer分配了空间和空间足够!
      

  3.   

    其实我主要想知道我传DateTimeType是不是这样传?
      

  4.   

    DateTimeType的大小应该为2+2+2=6,
    所以:
    memcpy(buffer,name,10);
    memcpy(buffer+10,&Time,6);
    memcpy(buffer+10+6,id,4);
    memcpy(buffer+10+6+4,age,4);