2011-12-28 92 views
2

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

請顯示您用來從串口讀取的代碼。您是否使用帶有某些編碼集的ReadLine? – 2011-12-28 10:24:54

+0

增加了閱讀代碼。我使用ASCII編碼。問題在於,它對於不同的串行端口有不同的表現。 – klundby 2011-12-28 10:33:46

+0

看起來您正在使用錯誤的波特率/串行端口設置。 – Jan 2011-12-28 10:48:37

回答

1

OK,所以你需要註冊一個事件DataRecieved,並從中讀取端口數據。另外,確保你的端口初始化值是正確的。

_sp = new SerialPort(Conf.Value("ExternalClockPort"), int.Parse(Conf.Value("ExternalClockBaud")), Parity.None, 8, StopBits.Two); 
_sp.DataReceived += new SerialDataReceivedEventHandler(Port_DataReceived); 
_sp.Open(); 


private void Port_DataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    int totalBytes = _sp.BytesToRead; 
    byte[] buffer = new byte[totalBytes]; 
    _sp.Read(buffer, 0, totalBytes); 
} 
+0

我在它自己的線程中這樣做,所以它不會影響p.Read()塊。數據接收事件是否對數據做任何事情? – klundby 2011-12-28 10:51:14

+0

它不會對數據本身做任何事情,只是在端口準備好接收數據時發出信號。您無法隨時從端口讀取數據,您必須使用該事件。 – 2011-12-28 10:54:23

+0

Java中沒有Seri​​alPort預定義的類?在java中完成這個任務,我需要做什麼?請建議。 – kgsharathkumar 2016-09-19 04:21:24