2010-02-05 145 views
2

我试图让一个简单的串口阅读器在C#中读取rs232的信息。我正在使用VS2008。我可以使用超级终端和python来接收数据,但每次尝试向C#发送字符时都会收到奇偶校验错误。数字的工作很好,只是人物。它的配置与超级终端完全相同:9600波特,1个停止位,无奇偶校验,无握手。什么可能导致只有人物搞砸了,而不是数字?C#串行rs232奇偶校验错误

+1

你的文字如何被编码?你可以发布一个小样本吗? – 2010-02-05 20:52:35

+0

据我所知,它没有被编码。我只是每次从PIC上的UART端口发送一个字符(如果重要的话,请使用dsPIC30F1614A)。或者,也许我误解了你的问题。 – 2010-02-05 21:07:07

回答

2

配置为“无奇偶校验”时,您如何能发生奇偶校验错误?

你看到存储在数据流中的校验和的故障(而不是RS-232的奇偶校验位)?使用C#串口类时是否遇到异常?

显示一些数据转储。

您也可以尝试realterm,它可以告诉你的原始字符的十六进制值接收。将C#字节数组转换为十六进制也很容易。然后比较两者以查看字符是否丢失或更改或实际问题是什么。

我们不能提出任何解决方案,直到失败被描述得更好一点。

+0

没有例外。这只是打印出ParityReplace设置的问号。我会尝试现实。 – 2010-02-05 20:59:42

+0

您用于dsPIC的晶振是什么?显示在PIC上设置串口的代码(尤其是波特率发生器的分频器)。 这听起来更像是一个比一个奇偶校验错误帧错误,如果波特率是关闭超过1%左右,这可能偶尔发生(尽管这通常不是在9600波特的问题,为115200个波特我已经必须选择专门用于RS-232通信的晶体,如11.059MHz) 如果PIC在PC没有预期时发送奇偶校验位,那么接收机寻找停止位时会出现奇偶校验位 - 错误。 – 2010-02-06 18:54:02