问题:
我在VC++下面通过串口发送了
 typedef struct 
  {
  afAddrType_t End_Message_t;   //自己定义的结构体
  BYTE data_array[1][19];       //typedef unsigned char     byte;
  BYTE Command_Word;
  }Send_M;
结构到单片机上,单片机上是用C语言,&msg[2] :是指向我发送的数据区的起始地址
我同样定义Send_M  *p1;能否作以下操作:p1 = (Send_M *)(&msg[2])
byte Word = p1->Command_Word ;
afAddrType x;
x.x1 = p1->End_Message_t.x1;
byte ar[1][19] = p1 -> data_array[1][19];请大家帮忙顶上去,我在C/C++发过,有200闲分.请各位,帮我,我全部送上.

解决方案 »

  1.   

    好像是可以。
    memset(Word,p1->Command_Word ,sizeof(BYTE);
    afAddrType x;
    x.x1 = p1->End_Message_t.x1;
    memset(ar, p1 -> data_array,sizeof(BYTE) * 19);
    这样可能会好些。
      

  2.   

    单片机我不是很熟,不过都是差不多:
    读数据到缓冲区msg,p1 = (Send_M *)(&msg[2]),然后byte Word = p1->Command_Word。
    至于数据在单片机里面怎么存储,如何从单片机读数据到缓冲区,我不是很清楚了。
    另外可能需要传送数据的大小。
      

  3.   

    请问一下,要不要先: 
      Send_M *ptr_Get;  ptr_Get = osal_mem_alloc(sizeof(Send_M)); //为指针分配内存
      osal_memcpy(ptr_Get,&msg[2],msg[1]);     //拷贝到分配的内存
      ptr_Get = (Send_M *)&msg[2];             //转换进行以上操作后,得出的结构是,可以显示出我的传出动的数据,但是,我在在传送的数据中有一个数组:
    struct Send_M{
    byte Word;
    struct afddr{
       byte x;
       byte x1[8]; 
    }
    byte Da_array[1][19];
    }接收的时候,我用ptr_Get ->Da_array[0][0]来读Da_array[1][19]的时候,却发现前移到了afddr的x1[8]的后五位,也就职指针乱了五个字节.
      

  4.   

    我的发送是PC/VC++6.0,中间是单板8位机 programme notapd.
      

  5.   

    我的发送是PC/VC++6.0,中间是单板8位机 programme notapd.