我用的是TPC7062KD型号的昆仑通泰触摸屏和STM32通过MODBUS RTU协议通信,发现其显示负数有误,正数正常!不知是触摸屏的BUG还是什么原因,现象描述如下:
上图中的“当前重量”我的定义的是“有符号的32位整形”有三位小树它的通道处理如下图所示,能显示-150.000至+150.000
上面的设置应该没什么问题,错就错在负数的显示上,比如说:我想让触摸屏显示“-0.014”(其实就是-14,因为被缩小了1000倍),“-14”的十六进制应该是 0xffff fff2当我把这个十六进制数送给触摸屏时,它显示的却是“-13”,我想是不是要在0xffff fff2的基础再加上1,然后我就各触摸屏发了“0xffff fff3”其实0xffff fff3应该是“-13”的十六进制,当我把0xffff fff3送给触摸屏之后 它显示的也是“-13”也就是说对于十六进制,0xffff fff2和0xffff fff3来说触摸屏显示的都是“-13”而没有办法显示到“-14” ,我试过“-14”这个值是没有办法显示的,类似的还有“-124” 可能还有其他的,没有再去试,modbus协议肯定没有错,我用过相应的上位机都测试过,保证没有问题!另外还有还发现一个问题:负数的十六进制应该是其绝对值的“原码取反加1”就是补码形式存储的,比如说 -1的补码应该0xffff ffff当把这个值发给触摸屏之后它显示的却是“0”,-2的补码应该是0xffff fffe当把这个值发给触摸屏之后它显示的却是“-1”无形之中被多加了一个1!
不知道大伙有没遇到过这样的情况,有什么解决措施!