如何使用PySerial从COM端口读取和写入?

时间:2017-05-18 20:02:07

标签: python pyserial

我有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中可以做什么?

2 个答案:

答案 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"" 表示您正在发送字节