2012-05-18 118 views
2

我正在使用串口读取比例数据。通信工作正常,但我从串口获取垃圾。SerialPort.ReadLine()返回垃圾

一个例子:

???s.R?????0? ??o???????0? ??o???????0? 

我的问题是,我不知道该秤的行为。我不知道它是否发送我十六进制,二进制或什么。我不知道它实际发送的价值。我没有任何规模的文件来研究它。

所以我猜,默认情况下,通常是通过串口发送回来的,我如何将它转换成可读值?

+0

您是否还有关于秤的文档或驱动程序?数据可能几乎是任何东西...... –

+0

写什么样的秤你有?如果您没有文件,并不意味着您无法在互联网上找到它或向制造商发送请求。 – Reniuz

+0

规模是一个定制的工作。有些版本使用Modbus内部,但是这不是。这些秤在肉类加工厂用来称重肉块。没有驱动程序,也没有相关文档。 – CSharpDev

回答

3

很多问号表示SerialPort设置错误。从波特率开始,奇偶是下一个。

如果秤发送二进制数据,那么编码属性很重要。缺省值是ASCII,因此如果二进制数据中的字节大于等于128,则会生成很多问号。在这种情况下,您应该使用Read()而不是ReadLine()。你想用什么来开始解决这个问题,你想看看原始字节值,你不能从问号中看到很多东西。要特别注意你读的最后一个或两个字节,他们应该重复。

+0

我玩过这些设置,现在我得到了一些一致的数据。发现规模正在发送十六进制,现在我只需要弄清楚它发送了什么。谢谢! – CSharpDev

+1

其实你想用来开始解决这类问题的是串口监控程序。有几个免费或便宜的可用。 –