你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32中怎么用can来解析JSON数据从上位机那里

[复制链接]
shengxiaozhu 提问时间:2020-12-21 15:04 /
如题!

{  
  topic: "env_light_ctrl",  
  addr: 1,
  
opt: Enable
}


比如要接收这组数据呢?
请大佬们指点指点,要是有参考例程就最好不过了!
收藏 评论4 发布时间:2020-12-21 15:04

举报

4个回答
watershade 回答时间:2020-12-22 12:06:45
不是特别明白你的意思。你的意思是在上位机上解析json然后再按照某种规则传输can指令。(这是正常操作)还是说你想通过can传递json数据?
如果是后者倒不是不可以模拟需要自定义一个CAN协议,然后将json数据按照ascii码传递到mcu上。mcu再用cjson之类的将数据部分解析。但是这样做的意义是什么?这样做没有任何好处。建议用第一种
shengxiaozhu 回答时间:2020-12-22 13:30:24
watershade 发表于 2020-12-22 12:06
不是特别明白你的意思。你的意思是在上位机上解析json然后再按照某种规则传输can指令。(这是正常操作)还 ...

是上位机发个json数据过来,用can来做通信,单片机解析收到的数据,在执行相关指令
shenxiaolin_mai 回答时间:2020-12-23 09:43:02
有个开源的c-jasson库,直接调用就可以了。
watershade 回答时间:2020-12-23 10:49:21
shengxiaozhu 发表于 2020-12-22 13:30
是上位机发个json数据过来,用can来做通信,单片机解析收到的数据,在执行相关指令 ...

已经在上面说明了。首先你需要顶一个一个CAN传递文本和命令的格式。比方你用数据帧作为发送json文件的主题,划分一下11位或者29位标识符的用途。在里面定义一个帧类型,包ID,包编号。这样你就可以在包的第一个帧里面填写包的描述和CRC,接着发送数据,最后包结尾。这样你的mcu收到一串帧之后就知道将他们组合在一起。然后需要说明的是,如果你的数据很重要。比方说是升级某个节点的代码,那你还要搞个广播帧,让其它所有节点进入静默状态。
这里重申一遍,你用CAN传递没有效率的json数据不是一个好主意。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版