串口传输 结构体 就是 把结构体 转换为 数组 ,然后传输 数组中的 char。
即 struct - - - - - - ->> char [ ] ;
然后 char[ ] - - - -- - - - -->> struct 。
给出一下简单实例代码 :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct data{
int id;
int score;
char name[10];
};
#define SIZE sizeof(struct data)
void struct_array(char* des, struct data *src)
{
int num;
char *temp = (char *)src ;
for(num=0; num<SIZE; num++)
*(des+num)= temp[num];
}
void array_struct(struct data * des ,char * src)
{
int num;
char* temp = (char *)des;
for(num=0; num<SIZE; num++)
*(temp++) = src[num];
}
void show_array(char *str ,int len )
{
while(len--)
{
putchar('|');
putchar(*str++);
}
printf("|\n");
}
int main()
{
printf("struct size %d\n",SIZE);
struct data *shm = (struct data *)malloc(SIZE);
shm->id=1;
shm->score=98;
strcpy(shm->name, "admin");
char buf[SIZE]={"\0"};
struct data *str = (struct data *)malloc(SIZE);
struct_array(buf, shm);
show_array(buf , SIZE);
array_struct(str, buf);
printf("%d\n%d\n%s\n", str->id, str->score, str->name);
free(shm);
free(str);
return 0;
}
运行结果: