一台称重仪表通过RS232将称重值传入串口1,我用电脑的超级终端看信号,为:
ST,NT,+ 002890kg
ST,NT,+ 002890kg
ST,NT,+ 002890kg
ST,NT,+ 002890kg
ST,NT,+ 002890kg
......是一组连续的读数,然而我用常用的串口工具如:AccessPort1.33来看,读出的信号却为:
S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛
S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛
S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛
S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛
S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛
......
说明:超级终端与AccessPort1.33串口工具的波特率、停止位、奇偶校验等等参数设置的都是一模一样的。我用原先好用的软件代码来读串口信号也都是类似:S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛  这样的信号,无法判别其中的称重值,不知道是哪儿出了问题,请高手指教,谢谢!

解决方案 »

  1.   

    貌似从ASCII码到Unicode的转换过程中会导致字符错误。
    ASCII最大0xff;
    Unicode最大0xffff;
    你看看。
      

  2.   

    自己写个串口读取软件,分别用utf-8和ASCII读取试试.
    AccessPort1.33之类的软件都是默认ASCII解码的.
      

  3.   

    你通过读取串口得到一串 byte[]的数据,然后在将这串数据转换成为字符串的过程中,选择转换的编码方式。
    例如:Encoding.Unicode.GetString(byte[] )
    中间那个Unicode,你挨个尝试
      

  4.   

    很明显,是编码问题,读出byte[],然后仔细看看是什么编码吧。