3

我刚刚开始使用 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
>>> 

另外,我有没有一种简单的方法来模拟通过端口传来的文本信息流,以便我可以测试读入/保存传入的信息?

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

谢谢,史蒂夫

4

2 回答 2

3

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

第一个端口: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

您可以以这种方式(或)通过为每个端口创建 python 程序来测试它

于 2016-08-05T15:03:24.760 回答
0
x = ser.write("hello")
print x

您将其写为已发送。没有收到信息。可能它会写入您发送的字符串的长度。首先,您需要有一个客户端脚本来响应您发送的信息。

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

...     x = ser.read()          # read one byte
...     s = ser.read(10)        # read up to ten bytes (timeout)
...     line = ser.readline()   # read a '\n' terminated line
于 2016-08-05T13:44:02.060 回答