저는 다양한 릴레이를 구동하기 위해 RS485 Shield과 통신하기 위해 RPi2에서 코드를 사용하고 있습니다. 최근에 RPi3이 있는데 RPi2에서 이전에 작동했던 코드는 RPi3에 오류가 있습니다.'직렬'객체에는 'is_open'속성이 없습니다.
먼저, 블루투스 컨트롤러의 RPi3에서 uart (/ dev/ttyAMA0)가 "도난 당했다"는 것을 알고 있습니다. Using this post, 나는 RS485 방패가 이전처럼 작동해야하므로, GPIO 헤더에 uart를 재 할당했습니다. 문제가 하드웨어 그 자체와 관련이 없다고 생각합니다.
여기에 문제가 있습니다. 나는 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'속성을 가지고있다. 이 오류가 발생하는 이유에 대한 제안 사항은 무엇입니까? 웹 검색에서이 특정 오류에 대한 참조를 찾지 못했습니다. 당신은 라즈베리 파이에 pyserial
의 이전 버전이있는 경우
#!/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))
정답입니다. 감사! –
쿨! 내 대답을 받아 들일 수 :) –