我想從串口讀取數據。當我使用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