串口傳輸 結構體 就是 把結構體 轉換為 數組 ,然后傳輸 數組中的 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; }
運行結果: