SThreshold MSComm ไปยัง SerialPort

ฉันมีโปรเจ็กต์ VB6 ที่ฉันพยายามแปลงเป็น c# โครงการใช้คุณสมบัติ myMSComm.SThreshold = 1 ของ MSComm สิ่งที่เทียบเท่ากับ serialPort ใน c# คืออะไร


person user2109003    schedule 17.12.2013    source แหล่งที่มา


คำตอบ (2)


ไม่มีการเทียบเท่าโดยตรง SerialPort ไม่มีเหตุการณ์ TransmitBufferEmpty มันเป็นเหตุการณ์ที่ไม่มีความหมายบนฮาร์ดแวร์สมัยใหม่ UART มี FIFO ที่จะบัฟเฟอร์เอาต์พุตและส่งไบต์ต่อไปแม้ว่าบัฟเฟอร์การส่งจะว่างเปล่าก็ตาม

คุณสามารถเลียนแบบได้โดยใช้เมธอด SerialPort.BaseStream.BeginWrite() การโทรกลับที่คุณระบุจะทำงานเมื่อการเขียนเสร็จสิ้น จากนั้นคุณสามารถเรียก BeginWrite() อีกครั้งเพื่อเขียนข้อมูลเพิ่มเติม ไม่เหมือนกับค่า SThreshold ที่เป็น 1 ทุกประการ เนื่องจากบัฟเฟอร์การส่งจะเต็มเมื่อ BeginWrite เสร็จสิ้น ระวังว่าการเรียกกลับทำงานบนเธรดพูล ดังนั้นคุณต้องระมัดระวังในการประสานกัน

person Hans Passant    schedule 17.12.2013
comment
ขอบคุณสำหรับคำตอบ. ฉันแค่อยากจะเข้าใจอะไรบางอย่าง ถ้าบัฟเฟอร์การส่งว่างเปล่า มันจะส่งอะไร? - person user2109003; 18.12.2013

MSComm และ Serialport มีไม่เหมือนกันมากนัก หากต้องการย้ายจาก MSComm ไปยัง Serialport แต่หลีกเลี่ยงการเปลี่ยนส่วนการทำงานของซอฟต์แวร์ ก็มีตัวเลือกไม่มากนัก ไลบรารีที่รู้จักกันดี SuperCom มี ActiveX ที่เข้ากันได้กับ MSComm ซึ่งสามารถใช้ได้กับ VB net และ C# นั่นหมายถึงการเปลี่ยนแปลงเกือบเป็นศูนย์ ไลบรารีคลาส NET ยังรวมการทำงานที่คล้ายกันมากกับคุณสมบัติและวิธีการของ MSComm และเข้ากันได้กับ Windows 32 บิตและ 64 บิตอย่างสมบูรณ์รวมถึง วินโดว์ XP,7,8,10.

person lindev    schedule 13.11.2015