gpt4 book ai didi

python - “串行”对象没有属性 'is_open'

转载 作者:行者123 更新时间:2023-11-30 22:42:48 25 4
gpt4 key购买 nike

我一直在 RPi2 上使用代码与 RS485 Shield 进行通信驱动各种继电器。我最近得到了一个 RPi3,之前在 RPi2 上运行的代码在 RPi3 上出现了错误。

首先,我知道蓝牙 Controller 的 RPi3 上的 uart (/dev/ttyAMA0) 被“窃取”。 Using this post ,我将 uart 重新分配给 GPIO 接头,这样 RS485 屏蔽应该像以前一样工作。我向您提供了这段历史,尽管我怀疑问题不在于硬件本身。

问题就在这里。当我在 RPi3 上执行以下代码时,出现错误:

Traceback (most recent call last):
File "serialtest.py", line 15, in <module>
if usart.is_open:
AttributeError: 'Serial' object has no attribute 'is_open'

显然,在 pySerial 库中,串行对象确实具有“is_open”属性。关于为什么抛出此错误有什么建议吗?我在网络搜索中没有找到任何对此特定错误的引用。

#!/usr/bin/env python

import serial
import time
import binascii


data = "55AA08060100024D5E77"
usart = serial.Serial ("/dev/ttyAMA0",19200)
usart.timeout = 2
message_bytes = data.decode("hex")
try:
usart.write(message_bytes)
#print usart.is_open # True for opened
if usart.is_open:
time.sleep(0.5)
size = usart.inWaiting()
if size:
data = usart.read(size)
print binascii.hexlify(data)
else:
print('no data')
else:
print('usart not open')
except IOError as e :
print("Failed to write to the port. ({})".format(e))

最佳答案

如果您在 Raspberry Pi 上安装了旧版本的 pyserialpyserial 可能没有 is_open,但是 isOpen( ) 方法代替。根据文档,isOpen() 方法在 3.0 版本中已被废弃。您可以使用 serial.VERSION 检查 pyserial 版本。

关于python - “串行”对象没有属性 'is_open',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41987168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com