ฉันใช้ ReadFile เพื่ออ่านอักขระว่าง '0x00' แต่ไม่สามารถเห็นได้

ถ้าฉันส่ง "0x01 0x02 0x00 0x03" ไปยังโปรแกรมของฉัน จะได้รับ "0x01 0x02 0x03" ฉันรู้ดีว่าฝ่ายส่งของฉันกำลังส่งอักขระ null (ฉันใช้ขอบเขตเพื่อดูข้อมูล)

ฉันได้ตรวจสอบโครงสร้าง DCB และตั้งค่า fNull เป็นเท็จแล้ว (ซึ่งควรจะอนุญาตให้รับ null ไบต์และไม่ทิ้ง)

นี่คือการกำหนดค่าของ DCB ที่แสดงจาก GetCommState:

    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

ฉันพลาดบางสิ่งในโครงสร้างที่อาจบล็อกอักขระ null ด้วยหรือไม่ หรือเป็นไปได้ว่าฉันต้องเปลี่ยนการกำหนดค่าไดรเวอร์หรือการกำหนดค่ารีจิสทรี

ตอบ

คุณเปิดใช้งานการควบคุมโฟลว์ XON/XOFF และระบุ null เป็นอักขระ XON/XOFF นั่นคือเหตุผลที่คุณไม่เห็นไบต์ข้อมูลว่าง คุณต้องตั้งค่าฟิลด์fOutXและfInXเป็น 0 แทนที่จะเป็น 1