对于串口来说,一般大家都了解波特率,校验码,数据位之类的参数。然而在实际的数据传输中,有些参数也会影响数据的传输。现总结如下,以便大家查询。
在对串口进行编程时,可用portman对串口参数进行跟踪,提示如下:
15 0.00001006 IOCTL_SERIAL_SET_BAUD_RATE Serial0 SUCCESS Rate: 9600
16 0.00000531 IOCTL_SERIAL_CLR_RTS Serial0 SUCCESS
17 0.00000559 IOCTL_SERIAL_CLR_DTR Serial0 SUCCESS
18 0.00000447 IOCTL_SERIAL_SET_LINE_CONTROL Serial0 SUCCESS StopBits: 1 Parity: NONE WordLength: 8
19 0.00000279 IOCTL_SERIAL_SET_CHAR Serial0 SUCCESS EOF:0 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13
20 0.00000391 IOCTL_SERIAL_SET_HANDFLOW Serial0 SUCCESS Shake:0 Replace:80000000 XonLimit:1000 XoffLimit:1000
其中
Rate: 9600指的是波特率。
StopBits: 1停止位
Parity: NONE 校验位
WordLength: 8 数据长度
这些是主要参数,但往往XON:11 XOFF:13 Shake:0 Replace:80000000 XonLimit:1000 XoffLimit:1000这些参数对传输也有所影响。故对SPCOMM控件的参数设置总结如下:
Shake:
SPCOMMR的DsrSensitivity=true 为40
SPCOMMR的DtrControl属性
DtrDisable=0
DtrEnable=1
DtrHandshake=2
SPCOMMR的Outx_CtsFlow=true 为8
SPCOMMR的Outx_DsrFlow=true 为10
Replace:
SPCOMMR的Outx_XonXoffFlow=true 为1
SPCOMMR的Inx_XonXoffFlow=true 为2
SPCOMMR的ReplaceWhenParityError=true 为4
SPCOMMR的IgnoreNullChar=true 为8
SPCOMMR的TxContinueOnXoff=true 高位为8
SPCOMMR的RtsControl属性
RtsDisable=00
RtsEnable=40
RtsHandshake=80
RtsTransmissionAvailable=C0
XonLimit: SPCOMM的XOnLimit
XoffLimit: SPCOMM的XOffLimit
XOFF: SPCOMM的XOffChar
XON: SPCOMM的XOnChar