【问题标题】:Python Serial not outputting full stringPython Serial没有输出完整的字符串
【发布时间】:2017-05-25 15:17:21
【问题描述】:

我在一台计算机上运行以下代码,另一台计算机通过 Eltima Software 的 RS232 DataLogger 读取串行连接。

当我在一台计算机上运行 python 文件时,另一台计算机上只显示几个字符,而不是完整的“hellobob”

我将监控计算机设置为 9600 波特率、8 个数据位、无奇偶校验、一个停止位。

监控电脑只接“他”。我已经使用相同的软件监控了许多其他设备,所以我知道这是有效的。

这是python代码。

import serial
import io
from time import sleep

ser = serial.Serial('/dev/tty.usbserial-A505VSLL')

sio = io.TextIOWrapper(io.BufferedRWPair(ser, ser))


sio.write(unicode("hellobob\n"))
sleep(5)
sio.flush()
ser.close()

谢谢!

【问题讨论】:

  • 如果直接调用ser.write(),而不是在上面堆两层抽象,是不是整个文本都通过了? (我不知道这是否与您的问题有关,但BufferedRWPair 的文档明确表示不要为读取器和写入器传递相同的对象。)

标签: python string writing


【解决方案1】:

可能是编码问题。您可以简单地尝试不使用 io 模块:

import serial
ser = serial.Serial('/dev/tty.usbserial-A505VSLL')
ser.write(b"hellobob\n") # send bytes
ser.close()

【讨论】:

  • 谢谢,但这没有用.. 它仍然只是发送“他”
  • 那我认为不是发送电脑的问题,而是DataLogger的一些设置问题。
  • 我今天尝试了许多不同的数据记录器,所以我认为这是代码问题。想法?
  • 您可以尝试通过发送 3 个字符来进行调试,例如 ser.write(b'h'); time.sleep(0.1); ser.write(b'e'); time.sleep(0.1); ser.write(b'l');看看您的 Datalogger 是否可以获取超过 2 个字符。
猜你喜欢
  • 2015-12-21
  • 2012-11-28
  • 1970-01-01
  • 2012-07-09
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多