我使用ReadFile读取空字符' 0x00',但它无法看到它。
如果我发送" 0x01 0x02 0x00 0x03"到我的程序。它将收到" 0x01 0x02 0x03"。我知道我的发送方正在发送空字符(我使用范围来查看数据)。
我检查了DCB结构并将fNull设置为false。 (应该允许接收空字节而不丢弃)
这是GetCommState显示的DCB的配置:
DCBlength 28
BaudRate 9600
fBinary 1
fParity 0
fOutxCtsFlow 0
fOutxDsrFlow 0
fDtrControl 0
fDsrSensitivity 0
fTXContinueOnXoff 0
fOutX 1
fInX 1
fErrorChar 0
fNull 0
fRtsControl 0
fAbortOnError 0
fDummy2 0
wReserved 0
XonLim 2048
XoffLim 512
ByteSize 7
Parity 0
StopBits 2
XonChar 0 '\0'
XoffChar 0 '\0'
ErrorChar 0 '\0'
EofChar 0 '\0'
EvtChar 0 '\0'
wReserved1 0
我是否遗漏了可能阻塞空字符的结构中的某些内容?或者它是否可能是我需要更改的驱动程序配置或注册表配置?
答案 0 :(得分:1)
您启用了XON / XOFF流量控制,并指定了null作为XON / XOFF字符。这就是为什么你没有看到空数据字节。您需要将fOutX
和fInX
字段设置为0而不是1。