打印

怎样发送一个结构体数据?(来个给力的爷们)

[复制链接]
12401|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qink2008|  楼主 | 2011-1-7 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
假设我的一个串口发送字符串子函数为
void sendbyte (uint8 byte)
void sendstring(uint8 *string)
我要发送一个结构体数据
struct dat
{
   uint8 a;
   int8 b;
   int16 c;
   int8 *d;
}shuju;
应该怎样调用串口发送函数把这个结构体发送出去呢

相关帖子

沙发
聆风| | 2011-1-7 11:16 | 只看该作者
将结构体数据指针转换成uint8* 发送

使用特权

评论回复
板凳
qink2008|  楼主 | 2011-1-7 11:26 | 只看该作者
咋转?来点具体的。
是这样?
struct dat *pshuju=&shuju;
sendstring((uint8)pshuju);

使用特权

评论回复
地板
huangqi412| | 2011-1-7 12:17 | 只看该作者
指针。。。

LZ自己发送以下不就知道了

使用特权

评论回复
5
new1988| | 2011-1-7 16:16 | 只看该作者
sendstring((uint*)&shuju);
就OK啦!!!
括号里面的意思是把shuju这个结构体的地址强制转换成uint型地址。

使用特权

评论回复
6
原野之狼| | 2011-1-7 22:50 | 只看该作者
调用发送字符串的函数是不行的 因为结构体的数据并不是字符类型 那么怎么去辨别数据的个数呢
因该这么做
设计一个底层函数
void send_dat(char *pdat, unsigned int len);
然后这样使用
send_dat((char*)(&shuju), sizeof(shuju));

使用特权

评论回复
评分
参与人数 2威望 +3 收起 理由
123jj + 1
古道热肠 + 2
7
古道热肠| | 2011-1-8 00:13 | 只看该作者
呵呵,楼上正解。sizeof用得很好。

使用特权

评论回复
8
qink2008|  楼主 | 2011-1-8 10:25 | 只看该作者
6# 原野之狼
这个貌似不错

使用特权

评论回复
9
tyj_3| | 2011-1-8 10:56 | 只看该作者
用send_dat((char*)(&shuju), sizeof(shuju))发送的时候注意结构体的字节对齐方式,sizeof(shuju)可能比你实际要发送的字节数多.

使用特权

评论回复
10
汽车电子| | 2011-1-8 12:19 | 只看该作者
如果是非8位单片机,要注意对齐方式,否则有可能发送字节数出错。

使用特权

评论回复
11
原野之狼| | 2011-1-8 13:38 | 只看该作者
9、10L的意见值得关注:lol

使用特权

评论回复
12
原野之狼| | 2011-1-8 13:41 | 只看该作者
实际上我在做通信程序的时候是不会这么干的
考虑到通讯双方的体系结构以及编译规则 LZ最好是制定一个通用的协议来进行通讯

使用特权

评论回复
13
wswh2o| | 2011-1-8 23:04 | 只看该作者
对齐是个问题

使用特权

评论回复
14
mxh0506| | 2011-1-9 20:15 | 只看该作者
在不同的硬件平台之间传递数据,alignment和endian convention都是不能忽视的,必须调整一致
发送函数的原型可以这样定义:
void send_data(void *pData, unsigned char byLen);
然后这样调用
send_data(&myStruct, sizeof(myStruct));

使用特权

评论回复
15
光速| | 2011-2-7 15:58 | 只看该作者
shuju? 变量名尽量不要使用拼音

使用特权

评论回复
16
china_fog| | 2011-2-7 16:25 | 只看该作者
这个试试不就知道了吗,经常干的事情吧

使用特权

评论回复
17
coody| | 2011-2-7 17:53 | 只看该作者
强转单字节指针

使用特权

评论回复
18
123jj| | 2011-2-8 06:35 | 只看该作者
小狼正解。mxh0506老师总结的不错,学习了。

使用特权

评论回复
19
xjycug| | 2011-2-8 12:20 | 只看该作者
用联合体的方式,使结构体与字节数组指向相同的地址就行了。
不过考虑到结构里面又是有符号又是无符号,又是数据又是指针的,还是比较麻烦啊。。。

使用特权

评论回复
20
dandywang| | 2011-2-10 11:50 | 只看该作者
狼讲的好,学习了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

8

帖子

0

粉丝