asd119586
级别: 探索解密
精华主题: 0
发帖数量: 68 个
工控威望: 156 点
下载积分: 592 分
在线时间: 29(小时)
注册时间: 2022-05-09
最后登录: 2024-11-11
查看asd119586的 主题 / 回贴
楼主  发表于: 2023-12-12 09:26
smart200 怎么读取无符号16位整数并进行运算呢?
我这里有一个走串口通讯的设备,是5个UINT16位,并且需要这其中加减乘除计算
但是smart200默认只能有符号整数,有没有什么办法可以转成无符号整数来运算吗?或者有没有有符号转无符号的库呢
流水不腐 户枢不蠹
18857713026
赚点辛苦钱不容易啊 诶~~~~ 努力赚钱
级别: 略有小成
精华主题: 0
发帖数量: 389 个
工控威望: 483 点
下载积分: 1173 分
在线时间: 186(小时)
注册时间: 2020-11-27
最后登录: 2024-11-16
查看18857713026的 主题 / 回贴
1楼  发表于: 2023-12-12 15:07
WORD  无符号16位
int          有符号16位。
485对象 默认就是word   如果不是 INT_TO_WORD
asd119586
级别: 探索解密
精华主题: 0
发帖数量: 68 个
工控威望: 156 点
下载积分: 592 分
在线时间: 29(小时)
注册时间: 2022-05-09
最后登录: 2024-11-11
查看asd119586的 主题 / 回贴
2楼  发表于: 2023-12-13 15:28
引用
引用第1楼18857713026于2023-12-12 15:07发表的  :
WORD  无符号16位
int          有符号16位。
485对象 默认就是word   如果不是 INT_TO_WORD

smart200里默认就是int数据格式,读取无符号出来就是有符号的 好像可以通过算法来使读取到的有符号转为无符号,但是不知道怎么解决
流水不腐 户枢不蠹
bdmogui
级别: 略有小成
精华主题: 0
发帖数量: 175 个
工控威望: 297 点
下载积分: 1217 分
在线时间: 596(小时)
注册时间: 2013-10-12
最后登录: 2024-11-05
查看bdmogui的 主题 / 回贴
3楼  发表于: 2023-12-13 15:50
大佬们应该都很忙。这应该用不到什么算法,变通一下,将无符号数放到双整数的低字,高字赋0,然后读取双整数
本帖最近评分记录:
  • 下载积分:+3(asd119586)
    wsxebjz
    级别: 略有小成
    精华主题: 0
    发帖数量: 324 个
    工控威望: 381 点
    下载积分: 1953 分
    在线时间: 80(小时)
    注册时间: 2023-05-14
    最后登录: 2024-11-11
    查看wsxebjz的 主题 / 回贴
    4楼  发表于: 2023-12-13 17:40
    用十六进制表示可以在一个vw中存入超过32500的数,比如50000
    18857713026
    赚点辛苦钱不容易啊 诶~~~~ 努力赚钱
    级别: 略有小成
    精华主题: 0
    发帖数量: 389 个
    工控威望: 483 点
    下载积分: 1173 分
    在线时间: 186(小时)
    注册时间: 2020-11-27
    最后登录: 2024-11-16
    查看18857713026的 主题 / 回贴
    5楼  发表于: 2023-12-16 11:07
    引用
    引用第2楼asd119586于2023-12-13 15:28发表的  :

    smart200里默认就是int数据格式,读取无符号出来就是有符号的 好像可以通过算法来使读取到的有符号转为无符号,但是不知道怎么解决



    要什么算法。。。 不是系统提供了  INT_TO_WORD  WORD_TO_INT  ????
    asd119586
    级别: 探索解密
    精华主题: 0
    发帖数量: 68 个
    工控威望: 156 点
    下载积分: 592 分
    在线时间: 29(小时)
    注册时间: 2022-05-09
    最后登录: 2024-11-11
    查看asd119586的 主题 / 回贴
    6楼  发表于: 2023-12-16 14:27
    引用
    引用第5楼18857713026于2023-12-16 11:07发表的  :



    要什么算法。。。 不是系统提供了  INT_TO_WORD  WORD_TO_INT  ????

    因为运算只能用INT格式运算,运算的过程还是有符号的
    流水不腐 户枢不蠹
    marksman_01
    一起进步
    级别: 家园常客
    精华主题: 0
    发帖数量: 475 个
    工控威望: 517 点
    下载积分: 3273 分
    在线时间: 132(小时)
    注册时间: 2019-06-01
    最后登录: 2024-11-14
    查看marksman_01的 主题 / 回贴
    7楼  发表于: 2023-12-22 17:25
    你只要明白,无符号和有符号数的区别就是最高位,有符号数最高位是符号位,无符号数不能算数运算是因为没有符号位,所以你通讯的数据如果支持符号,那你直接转成有符号数,如果通讯的数据是无符号数,那代表此数不可能是负数,所以要处理成双字有符号整数在进行运算