arm_linux_c can口编程 结构体赋值问题

黑鹰007 2015-11-18 03:15:31
//## The CAN message structure.
typedef struct {
//flags, indicating or controlling special message properties
int flags;
int cob; //CAN object number, used in Full CAN
unsigned long id; //CAN message ID, 4 bytes
struct timeval timestamp; //time stamp for received messages
short int length; //number of bytes in the CAN message
unsigned char data[CAN_MSG_LENGTH]; //data, 0...8 bytes
} canmsg_t;

typedef struct {
canmsg_t mmsg[83];
int mnum;
}canmsgs_t;
int i = 0;
for (i = 0; i < msgs.mnum; ++i)//循环msgs中有can数据的帧数
{
rx = msgs.mmsg[i]; //将一帧数据赋值给rx
}



rx = msgs.mmsg[i];
这样赋值时把什么数据给他了呢?

...全文
455 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑鹰007 2015-11-30
  • 打赏
  • 举报
回复
清楚了,can的缓冲区是根据板子的型号来的,我用的是盛博的3221的板卡,can缓冲区大小是400帧,read能够读取所欲整个缓冲区,除非传感器采集速率太慢没有存满,如果很快的话理论上是能读到接近400的
黑鹰007 2015-11-28
  • 打赏
  • 举报
回复
rx 是这个类型的canmsg_t 我现在明白了 结构体里面嵌套结构体数组 有个疑问的地方是用ssize_t read (int fd, void *buf, size_t count); 如果fd参数是打开一个结构体(can通信的数据包),那count就不算一个字节了吧,我打印read的返回值就是等于count,如果其他设备通过can发数据给我,通过read能不能实时读取发送过来的全部数据呢? 我也是第一次弄,好多不明白,还请各位不吝赐教,谢谢!!!
worldy 2015-11-27
  • 打赏
  • 举报
回复
将结构体的canmsgs_t的canmsg_t数组的最后一个成员赋值给rx 话说,这是个多蛋疼的代码片段,那个循环简直是多此一举
happy小文字 2015-11-20
  • 打赏
  • 举报
回复
rx这里具体的定义是啥??建议你用si跟进去看下,你这贴的只是一部分不清不楚的
fly 100% 2015-11-19
  • 打赏
  • 举报
回复
代码不全吧 msgs在哪》
黑鹰007 2015-11-19
  • 打赏
  • 举报
回复
是从can1接口读取的数据
黑鹰007 2015-11-19
  • 打赏
  • 举报
回复

 if((msgs.mnum = read(fd_CAN, msgs.mmsg, 83))>0 ) 	// 从CAN1读取数据  
	    {	
			int i = 0;
    for (i = 0; i < msgs.mnum; ++i)//循环msgs中有can数据的帧数
    {
        rx = msgs.mmsg[i];    //将一帧数据赋值给rx
         }	
        }

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧