Python/Pyserial:从端口读取传入信息

Python/Pyserial:从端口读取传入信息,python,pyserial,virtual-serial-port,Python,Pyserial,Virtual Serial Port,我刚刚开始使用pyserial,因为我最终需要读取/保存来自特定端口的信息。使用下面的代码,我只是打印所使用的端口,然后尝试写入一些文本,然后读取(“hello”)。端口打印正常,但字符串的输出为5。知道为什么吗 import serial import sys from time import sleep try: ser = serial.Serial('\\.\COM8', 9600,timeout=None, parity=serial.PARITY_NONE, stopbits=

我刚刚开始使用pyserial,因为我最终需要读取/保存来自特定端口的信息。使用下面的代码,我只是打印所使用的端口,然后尝试写入一些文本,然后读取(“hello”)。端口打印正常,但字符串的输出为5。知道为什么吗

import serial
import sys
from time import sleep

try:
  ser = serial.Serial('\\.\COM8', 9600,timeout=None, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)

except:
    sys.exit("Error connecting device")

print ser.portstr

x = ser.write("hello")
print x

ser.close()  
输出:

>>> 
\.\COM8
5
>>> 
还有,有没有一种简单的方法可以让我模拟通过端口发送的文本信息流,这样我就可以测试读取/保存传入的信息

我正在使用Python2.7和“虚拟串行端口驱动程序8.0”[Eltima VSPD]来模拟一个端口来测试这些东西

谢谢, 史蒂夫

你写这封信是寄来的。它没有收到任何信息。它可能会写入您发送的字符串长度。 首先,您需要有一个客户端脚本,它将响应您发送的信息

你必须在上面用这样的东西

...     x = ser.read()          # read one byte
...     s = ser.read(10)        # read up to ten bytes (timeout)
...     line = ser.readline()   # read a '\n' terminated line

你可以这样做来测试它。首先在管理端口中创建一对端口

第一端口:COM199 第二个端口:COM188

单击添加对

在一个控制台/脚本上执行以下步骤:

>>> import serial
>>> ser = serial.Serial('COM196', 9600,timeout=None, parity=serial.PARITY_NONE, stopbits=serial.S
BITS_ONE, bytesize=serial.EIGHTBITS)
>>> print ser.portstr
COM196
>>> x = ser.read(5) # It will be waiting till it receives data
>>> print x
hello
>>> import serial
>>> s = serial.Serial('COM188')
>>> s.write("hello")
5L
在另一个控制台上,执行以下步骤:

>>> import serial
>>> ser = serial.Serial('COM196', 9600,timeout=None, parity=serial.PARITY_NONE, stopbits=serial.S
BITS_ONE, bytesize=serial.EIGHTBITS)
>>> print ser.portstr
COM196
>>> x = ser.read(5) # It will be waiting till it receives data
>>> print x
hello
>>> import serial
>>> s = serial.Serial('COM188')
>>> s.write("hello")
5L

您可以通过以下方式进行测试(或)为每个端口创建python程序

您正在使用的是Eltima VSPD吗?是。我还使用了“虚拟串口模拟器-仿真解决方案”,并获得了相同的输出。谢谢。有没有一种方法可以模拟传入的信息进行测试?好的,有一个视频演示了如何连接TCP UDP,不是串行的,而是相同的逻辑。您需要客户端和服务器脚本都应该运行。谢谢,这很有帮助。您在代码中使用了端口196,但最初未设置此端口(您创建了对199和188)。这样是不是意味着?