如何使用PySerial从COM端口读写数据?

19
我已经安装了Python 3.6.1和PySerial。我能够获取连接的COM端口列表。我想要向COM端口发送数据并接收响应。
import serial.tools.list_ports as port_list
ports = list(port_list.comports())
for p in ports:
    print (p)

输出:

COM7 - Prolific USB-to-Serial Comm Port (COM7)
COM1 - 通信端口 (COM1)

来自PySerial文档

>>> import serial
>>> 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

我从ser = serial.Serial('/dev/ttyUSB0')得到一个错误,因为在Windows中'/dev/ttyUSB0'没有意义。在Windows中我该怎么办?

是的,我太傻了。应该先做一些研究。如果你回答我的问题,我会把你的回答标记为最佳答案。 - Neil Dey
1
当你像你这样至少尝试过后,寻求帮助是可以的 :) - pointerless
你可以请把你之前分享的那个链接再分享给我吗? - Neil Dey
这是我的答案。 - pointerless
2个回答

18

这里可能是你需要的。我会查看关于写作的文档。 在Windows中使用COM1,COM2等端口而不是/dev/tty/,因为那是基于Unix的系统。要读取数据,只需使用s.read()等待数据即可,要写入则使用s.write()。

import serial

s = serial.Serial('COM7')
res = s.read()
print(res)

如果正在发送整数值,您可能需要解码才能获取这些值。


13

在 Windows 上,您需要通过运行

pip install pyserial

安装 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""表示您正在发送字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接