完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
|
|
我是把他转换成文本的
|
|
|
|
那怎么校验呢,MODBUS需要进行CRC检验,需要将帧数据每次取出8位进行运算,如果不先将浮点数转换为二进制或者十六进制,那该怎么校验呢? |
|
|
|
|
|
|
|
我觉得你把浮点的四个字节,原封不动的以二进制发出去,。接收端再以uint8类型从地址tab(变量名,只是举个例子)存放,原封不动的接收。最后定义一个浮点数指针float* p = tab 。P就是那个浮点数了
|
|
|
|
cuyebiren 发表于 2016-10-24 10:37 那怎么校验呢,MODBUS需要进行CRC检验,需要将帧数据每次取出8位进行运算,如果不先将浮点数转换为二进制或者十六进制,那该怎么校验呢? |
|
|
|
he07413 发表于 2016-10-24 11:35 那怎么校验呢,MODBUS需要进行CRC检验,需要将帧数据每次取出8位进行运算,如果不先将浮点数转换为二进制或者十六进制,那该怎么校验呢?这个才是我真正的目的 |
|
|
|
不是应该先校验成功再用数据吗?接受buf[]是8位的,直接CRC校验啊。8位数据是可以和32位float相互转换的,就是通过指针。
|
|
|
|
我是用matlab做主机,发给PLC,要先生产CRC |
|
|
|
我是用matlab做主机,发给PLC,要先生产CRC |
|
|
|
计算机是用二进制计算的。float数据通过位操作,每次取8位,或者通过指针付给8位数组,就可以进行CRC了
|
|
|
|
ModBus 发送的时候最后两个字节是CRC校检,ModBus发送一个浮点数的时候,也是直接拆分成无符号char类型,然后根据大小端换一下顺序吧,确定好发送数据的顺序之后进行CRC校检,把校检结果放在一帧的结尾。接收到之后直接对数据进行CRC校检,然后还原浮点数。 |
|
|
|
如果你两端都进行浮点数的计算的话,会比较费资源,不确定发送端的浮点数是如何来的,如果是通过计算得来的,建议不计算直接发,然后到从机处先校验,再计算成浮点数。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
621 浏览 1 评论
1962 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1068 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1487 浏览 1 评论
LL库F030进行3个串口收发,2个串口为232,一个为485,长时间后,会出现串口1停止运行,另外两个正常,只有重启复原
1924 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 20:42 , Processed in 0.739382 second(s), Total 66, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号