主题:[求助]Socket can可以配置自动重发么 共有63263人关注过本帖 |
---|
![]() 刘豪豪 |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
[求助]Socket can可以配置自动重发么 ![]() Socket can可以配置自动重发么,报文发送失败后可以自动重发 |
单帖管理 | 引用 | 回复 ![]() |
![]() hzc |
2楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 你好,can总线是有ACK信号相应的,所以can总线协议本身就有自动重发的功能,不需要单独配置。 [此贴子已经被作者于2020-11-18 9:44:47编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
客人 |
3楼 |
![]() |
![]() 但是发送失败不会自动重发,硬件有自动重发的设置么 |
单帖管理 | 引用 | 回复 ![]() |
![]() hzc |
4楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 你好,can的控制器本身就会重发,不需要设置。 如果是软件上调用发送提示失败,可能是因为程序中没有判断调用发送的返回值,然后一直在填入数据。 硬件在发送失败后,会一直反复重发,在数据发送成功之前会一直占用缓存,如果这时软件一直填入数据,就会占用更多的缓存,当缓存占满之后,软件中再次调用发送就会报错。 [此贴子已经被作者于2020-11-19 13:54:24编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
![]() 刘豪豪 |
5楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 好的,了解,判断write的返回值可以判断发送失败,就不能write直到等到硬件重发成功了么?硬件重发成功是怎么判断的呢 |
单帖管理 | 引用 | 回复 ![]() |
![]() hzc |
6楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 你好,write返回值只要没有出错,就说明数据已经填写到硬件中了,硬件会自动进行发送,直到发送成功,成功的标志是收到对应设备回发的ACK信号,具体的说明可以在网上查询一下CAN总线的协议说明。wirtei返回值出错就和上一条帖子说的一样,是因为在数据没有发送成功的时候,程序还在一直填写数据,导致硬件缓存数据溢出。 |
单帖管理 | 引用 | 回复 ![]() |
![]() 刘豪豪 |
7楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 好的,谢谢 |
单帖管理 | 引用 | 回复 ![]() |
![]() hzc |
8楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]() 不客气 |
单帖管理 | 引用 | 回复 ![]() |