ฉันมีโปรเจ็กต์ VB6 ที่ฉันพยายามแปลงเป็น c# โครงการใช้คุณสมบัติ myMSComm.SThreshold = 1 ของ MSComm สิ่งที่เทียบเท่ากับ serialPort ใน c# คืออะไร
SThreshold MSComm ไปยัง SerialPort
คำตอบ (2)
ไม่มีการเทียบเท่าโดยตรง SerialPort ไม่มีเหตุการณ์ TransmitBufferEmpty มันเป็นเหตุการณ์ที่ไม่มีความหมายบนฮาร์ดแวร์สมัยใหม่ UART มี FIFO ที่จะบัฟเฟอร์เอาต์พุตและส่งไบต์ต่อไปแม้ว่าบัฟเฟอร์การส่งจะว่างเปล่าก็ตาม
คุณสามารถเลียนแบบได้โดยใช้เมธอด SerialPort.BaseStream.BeginWrite() การโทรกลับที่คุณระบุจะทำงานเมื่อการเขียนเสร็จสิ้น จากนั้นคุณสามารถเรียก BeginWrite() อีกครั้งเพื่อเขียนข้อมูลเพิ่มเติม ไม่เหมือนกับค่า SThreshold ที่เป็น 1 ทุกประการ เนื่องจากบัฟเฟอร์การส่งจะเต็มเมื่อ BeginWrite เสร็จสิ้น ระวังว่าการเรียกกลับทำงานบนเธรดพูล ดังนั้นคุณต้องระมัดระวังในการประสานกัน
MSComm และ Serialport มีไม่เหมือนกันมากนัก หากต้องการย้ายจาก MSComm ไปยัง Serialport แต่หลีกเลี่ยงการเปลี่ยนส่วนการทำงานของซอฟต์แวร์ ก็มีตัวเลือกไม่มากนัก ไลบรารีที่รู้จักกันดี SuperCom มี ActiveX ที่เข้ากันได้กับ MSComm ซึ่งสามารถใช้ได้กับ VB net และ C# นั่นหมายถึงการเปลี่ยนแปลงเกือบเป็นศูนย์ ไลบรารีคลาส NET ยังรวมการทำงานที่คล้ายกันมากกับคุณสมบัติและวิธีการของ MSComm และเข้ากันได้กับ Windows 32 บิตและ 64 บิตอย่างสมบูรณ์รวมถึง วินโดว์ XP,7,8,10.