Python向COM端口发送数字时程序挂起问题求助
问题原因及解决方法
挂起原因
serial.write()方法仅接受字节对象作为参数,直接传入整数21违反参数类型要求,引发底层操作异常,导致程序挂起。- 若配对的COM3端口未被打开监听,串口缓冲区可能因无接收端出现阻塞,进一步加剧挂起情况。
解决步骤
- 修正发送参数格式:
- 若要发送字符串形式的"21",使用
ser.write(b'21')(b前缀将字符串转为字节); - 若要发送十进制21对应的原始字节(ASCII码为NAK控制字符),使用
ser.write(bytes([21]))。
- 若要发送字符串形式的"21",使用
- 打开配对端口监听:用串口调试工具或另一段代码打开COM3端口,确保接收端存在,避免缓冲区阻塞。
- 实现每秒发送逻辑,示例代码:
import serial import time ser = serial.Serial('COM4', 9600, timeout=1) try: while True: # 按需选择其中一种发送方式 ser.write(b'21') # 发送字符串"21" # ser.write(bytes([21])) # 发送字节值21 time.sleep(1) finally: ser.close()
内容的提问来源于stack exchange,提问作者DoDr
相关产品推荐
相关产品推荐

