2013-04-27 24 views
0

我正在讀取發送到虛擬串行端口的一些字節,這些字節來自PIC單片機,我使用ISIS進行仿真,並且C#捕獲並顯示這些字節。總是從C#中的串行端口接收「?」

在C#中,我只是打開虛擬串口,然後讀取傳入數據。

SerialPort s = new SerialPort("COM2"); 
s.Open(); 

當我點擊一個按鈕,執行一種方法,其包含...

TextBox1.Text = s.BytesToRead.ToString(); //Displays the number of received Bytes. 
TextBox2.Text = s.ReadExisting(); 

我使用的PIC的語言是質子。

我只是發出PORTB內部的內容。

PORTB = 10 
HSerOut [PORTB] 

結果總是「?」。

HSerOut [「Hello」] - > ?????

我錯過了什麼?

+0

?意味着不可打印的字符。檢查整數值以確保您獲得預期值。通過嵌入式開發,二進制值比文本更好。另外你使用的是什麼「Endianness」? – 2013-04-27 15:51:06

+0

您的代碼片段可以工作的機率很小。您必須注意串口設置。波特率是一個非常重要的字符,當它被設置錯誤時會產生非ASCII字符。哪些會產生問號。 – 2013-04-27 18:45:38

回答

0

如果有人用微控制器進行通信時,通過串口接收奇怪的字符,你應該確保您指定正確的時鐘或XTAL,還有SPBRG,爲9600 bauds,使用SPBRG = 23XTAL = 3.686