【发布时间】:2013-04-20 07:42:17
【问题描述】:
我正在通过串行端口从 MCU 读取一条线。该行由 14 个以“OK”结尾的字符组成。字符被转换为 int 然后被处理。问题是当值大于 128 时。对于大于 128 的值,值(int 转换)保持在 63。这是代码:
serialPort1.DiscardInBuffer();
serialPort1.DiscardOutBuffer();
serialPort1.Write("d");//request line from mcu
Thread.Sleep(100);
string line = serialPort1.ReadLine();
int p1_low = line[0];
int p1_high = line[1]*256;
int p1 = p1_low + (p1_high);
label1.Text = "Input Sensor: " + p1_low;
p1_low 比 p1_high 变化很多,当大于 128 时,它坚持 63 值。问题可能出在哪里?
【问题讨论】:
-
63 是一个神奇的数字。它是 '?' 的 ASCII 码您的 MCU 正在发送一个值大于 127 的字节。听起来您确实使用了错误的方法,ReadLine() 应该只用于读取文本。使用 Read() 方法读取字节。或者修复您的 MCU 代码以发送文本而不是字节。
标签: c# visual-studio-2012 serial-port