Ich benutze 2 XBee pro S1, möchte ich die Pakete vom Koordinator auf meinem PC empfangen lesen, ist es mit API_2 aktiviert und alle anderen Verbindungen sind richtig gemacht, kann ich siehe die Pakete mit XCTU, ich bin mit dem python xbee Bibliothek, aber es gibt keinen Ausgang:Python xbee Bibliothek keine Ausgabe für eingehende Frames
der Code:
import serial.tools.list_ports
from xbee import XBee
import serial
ports = list(serial.tools.list_ports.comports())
for p in ports: #print the list of ports
print p
def toHex(s):
lst = []
for ch in s:
hv = hex(ord(ch)).replace('0x', '')
if len(hv) == 1:
hv = '0'+hv
hv = '0x' + hv
lst.append(hv)
def decodeReceivedFrame(data):
source_addr_long = toHex(data['source_addr_long'])
source_addr = toHex(data['source_addr'])
id = data['id']
samples = data['samples']
options = toHex(data['options'])
return [source_addr_long, source_addr, id, samples]
PORT = '/dev/ttyUSB0'
BAUD_RATE = 9600
ser = serial.Serial(PORT, BAUD_RATE)
print "Serial ports initialised...."
xbee = XBee(ser,escaped=True)
print "XBee object created"
while True:
try:
response = xbee.wait_read_frame()
sleep(0.5)
decodedData = decodeReceivedFrame(response)
print decodedData
print "data decoded"
except KeyboardInterrupt:
break
ser.close()
die Portnummer und Baudrate sind connect, ich ändern sie an den entsprechenden Port-Nummer jedes Mal schicke ich den Koordinator an meinen PC. Meine Ausgabe wie folgt aussieht:
Serial ports initialised....
XBee object created
Es ist wie es bleibt und gibt keine Ausgabe, auch wenn ich die RX siehe LED zu blinken. Unten ist der Code mit nur pyserial geschrieben:
import serial
from time import sleep
port = '/dev/ttyUSB0'
baud = 9600
ser = serial.Serial(port, baud)
data = ""
while True:
try:
while ser.in_waiting:
sleep(1)
data = ser.read()
print data
except KeyboardInterrupt:
break
ser.close()
Es gibt die folgende Ausgabe.
Könnte jemand freundlicherweise helfen.
Nur mit der Pyserial-Bibliothek bekomme ich eine Ausgabe (nicht die gewünschte Ausgabe), es ist nicht lesbar. –
Die serielle Schnittstelle und Baudrate sind korrekt, ich überprüfe die serielle Schnittstelle jedes Mal, wenn ich es an den Computer anschließe, Baudrate ist die Standardeinstellung, ich habe es auch mit API_1 Modus versucht, aber keinen Erfolg, ich habe den Schlaf hinzugefügt, weil ich das vorher angenommen habe der serielle Puffer war voll Ich habe versucht zu lesen (Ich habe das gerade zufällig versucht). –
Sind die Pakete als API-Frames in XCTU? Sie beginnen mit 0x7E (~), Zwei-Byte-Länge, Prüfsumme usw.? Wie sieht es im XCTU-Terminal im Hex-Modus aus? (Und ich nehme an, wenn wir "API_1" sagen, setzen Sie "ATAP = 1" in XCTU.) – tomlogic