Windows API ReadFile删除空字符(串行端口)

时间:2014-10-02 00:45:41

标签: visual-c++ serial-port

我使用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

我是否遗漏了可能阻塞空字符的结构中的某些内容?或者它是否可能是我需要更改的驱动程序配置或注册表配置?

1 个答案:

答案 0 :(得分:1)

您启用了XON / XOFF流量控制,并指定了null作为XON / XOFF字符。这就是为什么你没有看到空数据字节。您需要将fOutXfInX字段设置为0而不是1。