C语言 串口传输 结构体


串口传输 结构体 就是 把结构体 转换为 数组 ,然后传输 数组中的 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;
} 

  

运行结果:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM