我想从串口读取数据。当我使用USB适配器时,我得到的是垃圾,而不是发送的东西。从USB串行端口读取时的奇怪数据
我有什么期望(并用常规的SerialPort获得)
0001 C0 23:33:41.9114 00
0001 C1 23:34:17.8207 00
0001 RT 00:00:35.90 00
n0002
0002 C0 23:34:32.8372 00
0002 C1 23:42:36.2617 00
0002 RT 00:08:03.42 00
n0003
0003 C0 23:42:44.3947 00
我得到了通过USB串行端口连接时(0×00 0x3F的...)
003F003F783F003F003F003F003F003F
003F003F003F003F003F3F3F3F003F00
3F3F78003F003F003F003F003F780000
3F003F783F003F003F003F003F003F00
3F003F003F003F003F3F3F3F003F003F
3F78003F003F00
而且当我使用即使通过USB串口,腻子连接它也能显示正确的texte。
这里有什么问题?腻子如何“修复”腐败数据。
编辑:添加的代码用于读取
SerialPort p = new SerialPort(Conf.Value("ExternalClockPort"), int.Parse(Conf.Value("ExternalClockBaud")), Parity.None, 8, StopBits.Two);
p.Handshake = Handshake.RequestToSend;
p.Open();
byte[] buffer = new byte[512];
String command = "";
while (!Done)
{
int cnt = p.Read(buffer, 0, buffer.Length);
File.AppendAllText(this.appDataDirectory + "ExternalClock.log", ASCIIEncoding.ASCII.GetString(buffer, 0, cnt));
command = ExternalClock.parseCommand(command + ASCIIEncoding.ASCII.GetString(buffer, 0, cnt));
}
请显示您用来从串口读取的代码。您是否使用带有某些编码集的ReadLine? – 2011-12-28 10:24:54
增加了阅读代码。我使用ASCII编码。问题在于,它对于不同的串行端口有不同的表现。 – klundby 2011-12-28 10:33:46
看起来您正在使用错误的波特率/串行端口设置。 – Jan 2011-12-28 10:48:37