我有Python 3.6.1和PySerial安装。我正在尝试
我可以获得连接的符号列表。我现在希望能够将数据发送到COM端口并接收响应。我怎样才能做到这一点?我不确定下次尝试的命令。
代码:
import serial.tools.list_ports as port_list
ports = list(port_list.comports())
for p in ports:
print (p)
输出:
COM7 - 多产USB转串口通讯端口(COM7)
COM1 - 通讯端口(COM1)
我从PySerial Documentation看到打开COM端口的方法如下:
导入序列号
>>> ser = serial.Serial('/dev/ttyUSB0') # open serial port
>>> print(ser.name) # check which port was really used
>>> ser.write(b'hello') # write a string
>>> ser.close() # close port
我在 Windows 上运行,我收到以下行的错误:
ser = serial.Serial('/ dev / ttyUSB0')
这是因为'/ dev / ttyUSB0'在Windows中毫无意义。我在Windows中可以做什么?
答案 0 :(得分:3)
This可能是你想要的。我将看一下写作文档。 在Windows中使用COM1和COM2等没有/ dev / tty /,因为它是基于unix的系统。要读取只使用等待数据的s.read(),要使用s.write()。
import serial
s = serial.Serial('COM7')
res = s.read()
print(res)
如果发送的话,你可能需要解码以获取整数值。
答案 1 :(得分:2)
在 Windows 上,您需要通过运行来安装 pyserial
pip install pyserial
那么你的代码将是
import serial
import time
serialPort = serial.Serial(
port="COM4", baudrate=9600, bytesize=8, timeout=2, stopbits=serial.STOPBITS_ONE
)
serialString = "" # Used to hold data coming over UART
while 1:
# Wait until there is data waiting in the serial buffer
if serialPort.in_waiting > 0:
# Read data out of the buffer until a carraige return / new line is found
serialString = serialPort.readline()
# Print the contents of the serial data
try:
print(serialString.decode("Ascii"))
except:
pass
向端口写入数据使用以下方法
serialPort.write(b"Hi How are you \r\n")
注意:b"" 表示您正在发送字节