接收4字节 int数据,只能得到2字节数,有什么方法解决?-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6055|回复: 10

[未解决] 接收4字节 int数据,只能得到2字节数,有什么方法解决?

[复制链接]
发表于 2021-6-5 21:43 | 显示全部楼层 |阅读模式
在从触摸屏传输int 数据到arduino,在返回显示在触摸屏,发现数据大了,返回的int数据显示就不正常。看数据是3万多就不行了,就知道是16位int与32位int的原因,看了arduino的数据类型,int是2字节,证实了我的想法。
现在问 怎么处理这个32为的int数据?
试用long(long是4字节),不行,long int 也不行返回的还是2字节int
吾愚钝,求开导。
PLC是用2个16为寄存器储存1个32为数据,我也不知到该怎么弄,觉得太傻。
发表于 2021-6-5 22:39 | 显示全部楼层
資料型態(C語言)
應該用 unsigned int 就可以了吧
发表于 2021-6-6 10:54 | 显示全部楼层
本帖最后由 topdog 于 2021-6-6 10:59 编辑

int整数是基本数据类型。整数数据类型占用2字节。整数的范围为-32,768到32,767( -2^15 ~(2^15)-1)。整数类型使用2的补码方式存储负数。最高位通常为符号位,表示数的正负。其余位被“取反加1”。
long长整数型变量是扩展的数字存储变量,它可以存储32位(4字节)大小的变量,数值从-2,147,483,648到2,147,483,647。
unsigned long无符号长整数型变量是扩展的数字存储变量,它可以存储32位(4字节)大小的变量。与long变量不同的是,无符号长整型变量不能存储负数。也就是说,无符号长整型变量可以存储的数值范围是0 到 4,294,967,295 (2的32次方减1).





 楼主| 发表于 2021-6-6 14:23 | 显示全部楼层
谢谢支持,我试下
 楼主| 发表于 2021-6-6 18:06 | 显示全部楼层
使用unsigned int,与unsigned long,效果一样,可到65535多,也就是2字节,超过就乱显示,按说long类型不该有问题。
发表于 2021-6-7 11:31 | 显示全部楼层
贴程序,鬼知道你怎么接收的
发表于 2021-6-12 16:49 来自手机 | 显示全部楼层
为了你这个回复,我手机上打了三遍
发表于 2021-6-12 16:50 来自手机 | 显示全部楼层
plc内long转浮点数,再modbus读过来拆成四个字节,再合成float就行了,
发表于 2021-6-12 16:53 来自手机 | 显示全部楼层
可能Arduino读双字Long int拆四字节再合成long也行,我也是今天刚自己搞出来,在求助区发的贴,你可以参考下
发表于 2021-6-12 16:55 来自手机 | 显示全部楼层
唉,你这贴我手机上回了四遍不知道去哪了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 04:03 , Processed in 0.073507 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表