2013-04-27 77 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