的SerialPort我提出在C#,它發送數據的11字節到使用串行端口的應用程序:問題的在C#應用程序
port = new SerialPort("COM1");
port.BaudRate = 9600;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.ReadTimeout = 1000;
port.WriteTimeout = 1000;
port.Open();
byte[] buffer = new byte[11];
buffer[0] = 0;
buffer[1] = 0;
buffer[2] = 0;
buffer[3] = 3;
buffer[4] = 2;
buffer[5] = 4;
buffer[6] = 1;
buffer[7] = 20;
buffer[8] = 50;
buffer[9] = 0;
buffer[10] = 120;
port.Write(buffer, 0, 11);
然後寫另一個應用程序來測試前一個。我想檢查這11個字節是否正確發送。在這個應用程序中,我使用:
using (SerialPort port = new SerialPort("COM1"))
{
// configure serial port
port.BaudRate = 9600;
port.DataBits = 8;
port.Parity = Parity.None;
port.StopBits = StopBits.One;
port.Open();
for (; ;)
{
byte[] b = new byte[11];
port.Read(b, 0, 11);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 11; ++i)
{
sb.Append(b[i]);
sb.Append(" ");
}
Console.WriteLine(sb.ToString());
}
}
接收字節。問題是,在發送這樣的事情後:
0 0 0 3 2 4 1 20 50 0 120
我收到:
0 0 0 0 0 0 0 0 0 0 0
0 0 3 2 1 4 20 50 0 120 0
它爲什麼會發生?我的代碼中有什麼樣的錯誤? 謝謝
如果您使用超級終端觀看串行端口,它會看到正確的11個字節嗎? – mtrw 2010-02-24 20:31:27
@mtrw我發送二進制數據和超級終端顯示他們與奇怪的字符。有沒有辦法以數字格式轉換它們? – 2010-02-25 08:22:06
對不起,我錯過了你的問題。我不知道使超級終端處理二進制數據的方法,但像PortMon(http://technet.microsoft.com/en-us/sysinternals/bb896644.aspx)這樣的工具對於這種情況很有用。無論如何,我很高興你的問題似乎解決了。 – mtrw 2010-02-26 19:19:10