打印

如何将RS232数据转换成CAN格式发送

[复制链接]
4977|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hahaygy|  楼主 | 2013-4-26 10:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟目前在研究如何将 串口RS232接收上来的数据 改成CAN的格式通过CAN总线发送出去,
比如我在串口中收到了 0xCB 0xBB 0x57 这三个十六进制的数 ,
现在就是想不清楚具体该变成什么样的CAN的格式, 或者是超过了8个字节的话 :比如0xCB 0xBB 0x57 0xDB 0xBB 0x47 0xFB 0xBB 0x37 又该怎么办呢?

请高手们给些指点吧,谢谢!!!
沙发
IJK| | 2013-4-26 12:34 | 只看该作者
一般来说,CAN的通信包最多8个字节,所以要考虑拆包的问题,即串口1次发来超过8个字节的数据包,要拆成多个CAN通信包发出去。

说实话,1句2句说不清楚。

使用特权

评论回复
板凳
杨爱林林| | 2013-4-26 13:44 | 只看该作者
没有什么格式要变的  
can每帧固定只有8个字节,超过8字节的  就分多次发送
for (index= 0; index < CANLength; index++)
   {
     TxMessage.Data[index] = CANTxData[index];/*数据传送*/
   }
你考虑的有点多余了  你232接收的是0x11,那么你从发送的同样是0x11 就好了

使用特权

评论回复
地板
拿起书本| | 2013-4-26 14:51 | 只看该作者
格式自己定,只要你两边的接受和发送是同步的,就没什么问题了。

使用特权

评论回复
5
jiaxinhui| | 2013-4-26 17:47 | 只看该作者
超过8个字节,那你得靠协议完成。

使用特权

评论回复
6
hawksabre| | 2013-4-26 19:04 | 只看该作者
自己定义格式   这样写起来比较爽   当然   看个人的喜好了

使用特权

评论回复
7
dfsa| | 2013-4-26 19:09 | 只看该作者
得问些比较具体的问题

使用特权

评论回复
8
hahaygy|  楼主 | 2013-4-26 21:16 | 只看该作者
杨爱林林 发表于 2013-4-26 13:44
没有什么格式要变的  
can每帧固定只有8个字节,超过8字节的  就分多次发送
for (index= 0; index < CANLe ...

首先非常感谢,我仔细看了下您的这一段程序,您是先把232接收到的数据存放在数组CANTxData[index]中
然后for循环里就是把存放的数组一个个的放在CAN要发送的寄存器中吧? 那我想请问一下在程序中如何确定232收到的数据串的长度呢?就是那个index的值?

使用特权

评论回复
9
杨爱林林| | 2013-4-27 08:32 | 只看该作者
hahaygy 发表于 2013-4-26 21:16
首先非常感谢,我仔细看了下您的这一段程序,您是先把232接收到的数据存放在数组CANTxData中
然后for循环 ...

这个长度 你程序中自己判断  232每接收到一字节  长度加一

使用特权

评论回复
10
hahaygy|  楼主 | 2013-4-28 21:44 | 只看该作者
杨爱林林 发表于 2013-4-27 08:32
这个长度 你程序中自己判断  232每接收到一字节  长度加一

比如一串数据9个字节,串口收到一个字节进一次中断,按您说的的每进一次就+1,那如何才能知道是最后一个字节呢,因为第九个字节收完+1后,就不会再进中断了。。。

使用特权

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

本版积分规则

3

主题

15

帖子

0

粉丝