我正在尝试通过串口从我的覆盆子pi发送一个字符串到PC。
案例1:我的PC终端设置:BD 9600,无奇偶校验,8个数据位,1个停止位和Raspberry Pi也配置为相同的设置和我的字符串获取从Rpi传输到PC没有任何问题。
案例2 :我的PC终端设置:BD 9600,偶数奇偶校验,8个数据位,1个停止位和Raspberry Pi也配置为收到相同的设置和PC终端垃圾值。
案例3 :我的PC终端设置:BD 9600,无奇偶校验,8个数据位,1个停止位和为BD 9600配置的Raspberry Pi,偶数< / strong>奇偶校验,8个数据位,1个停止位和我的字符串从Rpi传输到PC而没有任何问题。
根据我的理解,在案例1和案例2中,必须传输字符串,在案例3中,PC终端可能会收到垃圾值。
我使用以下示例Serial UART Sample。
这是一个已知问题还是我错过了什么。 请指南。
谢谢
答案 0 :(得分:0)
您可以尝试一些方法来找出C#库(或底层dll)或(USB-)设备驱动程序(例如CH340)中是否存在问题。
使用MODE命令检查端口:
C:>mode COM3
Status for device COM3:
-----------------------
Baud: 9600
Parity: None
Data Bits: 7
Stop Bits: 1
Timeout: OFF
XON/XOFF: OFF
CTS handshaking: OFF
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: ON
RTS circuit: ON
使用MODE命令配置端口,然后尝试是否可以手动设置奇偶校验:
C:>help mode
Configures system devices.
Serial port: MODE COMm[:] [BAUD=b] [PARITY=p] [DATA=d] [STOP=s]
[to=on|off] [xon=on|off] [odsr=on|off]
[octs=on|off] [dtr=on|off|hs]
[rts=on|off|hs|tg] [idsr=on|off]
...
C:\>mode COM3 PARITY=E DATA=8
Status for device COM3:
----------------------
Baud: 9600
Parity: Even
Data Bits: 8
Stop Bits: 1
Timeout: OFF
XON/XOFF: OFF
CTS handshaking: OFF
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: ON
RTS circuit: ON
注意: 有两个参数( dcb.Parity 和 dcb.fParity )控制奇偶校验设置,并且必须同时设置两个参数。