• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

新手请教编程问题

大核桃 2016-04-12 浏览量:860

初入传感器生产企业,对于单片机的水平仅为天翔老师的10天学会单片机层次,下面的代码是一款传感器有关于数据包的编程部分,有几个问题想请教下。

union {                                // 静态共用体send_pack
  unsigned char buf[15];      // 数据包共15位
  struct
  {
     unsigned char start0;      // 包头0 0x1d
unsigned char start1;           // 包头1   0x1d  
unsigned char command;    // 指令码
     unsigned char len;          // 数据长度      
     float   d_ar;                    // 方向角
float   d_bt;                         // 高低角
     unsigned char chksum;  // 校验码
unsigned char end0;           // 包尾0  0x1e
unsigned char end1;           // 包尾1  0x1e
  }member;
}send_pack;                       // 共用体send_pack定义结束



请问union,struct,member,send_pack这几个单词分别代表什么意思?在这段代码中的作用是什么?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
其他答案 数量:13
  • 关于UNION,你看这个资料:

    禁止外部链接!

    关于struct,你看这个资料:

    禁止外部链接!

    我看楼主没有C语言基础,建议买本C语言的书籍好好学习一下。

    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • union最好别使用
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • union是联合体,struct是结构体,member是结构体名,send_pack是联合体名
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • union是共同体,
    struct是结构体
    member是结构体的名字

    send_pack是共同体的名字


    作用:

    buf[0]=start0
    buf[1]=start1
    buf[2]=command
    ......
    buf[13]=end0
    buf[14]=end1


    你发数据时,只去操作buf就可以了,也方便。

    读取到buf的数据,自然就分配到struct 中的各成员了。

    其中float 的数据占用buf中的四个元素。
    善于使用struct与union会让你的程序好很多。
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 建议买本C语言的书籍好好学习一下,谭浩强的还不错~
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 赶紧看书重新学习一遍C语言吧,推荐C Primer Plus(第五版),有电子版的。
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 感谢,从来没学过C语言,都是看天翔老师的书里面学了简单的一些。
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 请问如何将一个float型通过4个char型发送?
    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • 在这个结构里,已经给你转换好了。

    d_ar=buf[4、5、6、7]

    d_bt=buf[8、9、10、11]

    • 发布于2016-04-12
    • 举报
    • 评论 0
    • 0
    • 0

  • float型是32位,char是8位。可以将float型乘以10的N次方,去掉小数点。
    • 发布于2016-05-03
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

新手请教编程问题