USB에 연결된 ZigBee 모듈로 보낸 프레임을 읽으려고합니다. 모든 프레임은 Python xBee 패키지에 의해 버려집니다. 구분 기호는 0x7E 일 때 0x00입니다. 실제로 모든 바이트도 0 인 것으로 보입니다.Python은 ZigBee 프레임에서 0을 읽습니다.
XCTU는 프레임을 완벽하게 수신합니다.
내가 OS X, PyCharm, 파이썬 3.4에서 작동 및 인터넷에서이 코드를 빌려 :
# Open serial port
ser = serial.Serial(PORT, BAUD_RATE)
# Create API object
xbee = ZigBee(ser,escaped=True)
# Continuously read and print packets
while True:
try:
response = xbee.wait_read_frame()
sa = hex(response['source_addr_long'][4:])
rf = hex(response['rf_data'])
datalength=len(rf)
# if datalength is compatible with two floats
# then unpack the 4 byte chunks into floats
if datalength==16:
h=struct.unpack('f',response['rf_data'][0:4])[0]
t=struct.unpack('f',response['rf_data'][4:])[0]
print (sa,' ',rf,' t=',t,'h=',h)
# if it is not two floats show me what I received
else:
print (sa,' ',rf)
except KeyboardInterrupt:
ser.close()
break
ser.close()
이 프로그램은 xbee.wait_read_frame() 호출을 실행하고 더 프레임이 도착하지 않기 때문에 영원히 기다립니다.()는 항상이 0을 반환
while True:
if self._callback and not self._thread_continue:
raise ThreadQuitException
if self.serial.inWaiting() == 0:
time.sleep(.01)
continue
byte = self.serial.read()
if byte != APIFrame.START_BYTE:
continue
통화가 serial.read하기 :
나는 xBee 패키지에서 "base.py"에 대한 호출을 추적했다.
지그비 디바이스는 무엇입니까? 직렬 포트 설정을 확인 했습니까? "escaped = true"없이 시도 했습니까? – pmod
XBee PRO S2 (Digi에서), 예 및 예. – luna1999
직렬 포트에서 단지 0을 읽는다면 여기에있는 코드 조각은 그 문제와 관련성이 거의 없습니다. 포트 설정이 있습니다 (예 : 데이터가 9600에서 전송되는 동안 115200에서 읽는 중입니다). 사용중인 BAUD_RATE은 무엇입니까? 방금 바보 터미널에 접근하려 했습니까? – pmod