【问题标题】:serialprot readline() adding questionmark "?"serialport readline() 添加问号“?”
【发布时间】:2012-07-30 07:37:45
【问题描述】:

我想通过 readline() 从串行端口中读取文本行
text 是 ASCII 并且在终端中一切正常(数据非常好),但是当我通过 readline 阅读时,它会返回 text 中的某处? 示例 - 这是常规的:

!!!;34;248;45;215;43;226;33;235;32;240;35;250;36;240;37;246;40;263;41;272;42;261;39;270;44;256;47;241;49;8888;50;8888;38;245;46;460;48;363

这会返回 readline() :

!!!;34;248;45;215;43;226;?33;235;32;240;35;250;36;240?;37;246;40;263;41;272;42;261?;39;270;44;256;47;241;49;888?8;50;8888;38;245;46;460;48;3?63

代码很简单:

this.serialPort1.PortName = "COM3";    
this.serialPort1.BaudRate = 19200;                     
this.serialPort1.Parity = System.IO.Ports.Parity.Mark; 
this.serialPort1.Open();

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    prectenyRadek=this.serialPort1.ReadLine();
    this.Invoke(new EventHandler(DisplayText));
}

private void DisplayText(object sender, EventArgs e)
{
    richTextBox1.AppendText(prectenyRadek);    
}

有没有人知道,什么以及为什么加我“?”

【问题讨论】:

  • 在串口上确实有这样的 ASCII 数据:0D 0A 21 21 21 3B 33 34 3B 32 34 38 3B 34 35 3B 32 31 35 3B 34 33 3B 32 32 36 3B 33 33 3B 32 33 35 3B 33 32 3B 32 32 34 30 3B 33 35 3B 32 32 33 33 33 33 33 36 32 32 32 34 30 3B 33 37 32 32 32 32 32 34 36 31 3B 33 39 3B 32 37 30 3B 34 34 3B 32 35 36 3B 34 37 3B 32 34 31 3B 34 39 3B 38 38 38 38 3B 35 30 3B 38 38 38 38 3B 33 38 3B 32 34 35 3B 34 36 3B 34 35 37 3B 34 38 3B 33 36 32 3B 0D 0A(第一个 0D 0A 是之前的 EOL 行,然后按照您在 HEX 中看到的内容并完成 0D 0A)

标签: c# serial-port readline


【解决方案1】:

"如果秤发送二进制数据,则 Encoding 属性很重要。默认为 ASCII,因此如果二进制数据中的字节 >= 128,则会生成很多问号。在这种情况下,您应该使用 Read()的ReadLine()。你想用哪个来开始解决这个问题,你想看原始字节值,从问号看不到太多。特别注意你最后一两个字节从阅读中获得,他们应该很好地重复。”

来源:SerialPort.ReadLine() returns garbage

【讨论】:

    【解决方案2】:

    问题是平价。当我将奇偶校验从 Mark 切换到 Space 时,它​​开始正常工作。 (我的行之间的数据是奇偶标记,但这条线没有9位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多