2011-12-28 84 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