环境:winxp下用串口与电子称相连,读取电子称数据。
我用了两种方法,一种是用c#的serialport,
读取数据无反应;
另外一种是用VB的一个控件:
Microsoft.VisualBasic.Devices.Computer cmbCOM = new Microsoft.VisualBasic.Devices.Computer();
读不到数据,或者读到的数据是0/0/0/....类似的;
我用了网上的一些软件测试:直接读取数据有时显示的是这样一个符号:ξ,类似这样的,打不出来,如果是16进制显示80/08/08一类的字符;
搞不清楚问题所在,难道是通讯数据是16进制的还是什么问题呢?
另外我希望能通过DataReceived事件自动触发,网上看了一些信息,大概的意思是当缓冲区的数据超过一定的字符数时触发。但是具体的不清楚,我想电子称应该物体放上去之后先有不规则的数据传递过来,然后再稳定到一个数据,那是不是要判断这些数据之后再触发呢?
对这一块比较菜,请教了。
------解决方案--------------------
需要找一下电子称的数据协议
------解决方案--------------------
电子称的数据协议,是必须的。硬件设置和协议。一般是应答式的。电子称不会主动发数据包的。
------解决方案--------------------
波特率、校验位、...
------解决方案--------------------
如果找不到电子称的协议,教楼主一个笨办法:
电子称的数据格式无非是这种组合,g/kg + 数据 + 正负号 + 小数点
自己可以做一下实验,把通过串口读出来的数据一对比,就知道一帧有多少个byte,帧数据中的哪一位代表单位,哪一位代表小数点,哪一位代表正负,余下的数据格式很容易就判断出来了。我就说这么多,楼主自己琢磨
------解决方案--------------------
凭我一点不多的经验,我认为楼主的波特率?停止位?或校验方式是否设置的不正确??
------解决方案--------------------
电子秤一般传送的就是 ASCII 码,消息帧长度固定。楼主的现象应该是楼上所说,波特率设置有问题。