2台のXBee pro S1を使用しています。私のPC上のコーディネーターが受信したパケットを読み込みたいのですが、API_2で有効になっています。 XCTUのパケットを参照してください、私はPythonののXBeeライブラリを使用していますが、それは何も出力を与えない:Python xbeeライブラリに受信フレームの出力がありません
コード:
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()
ポート番号とボーレートは、私はすべての適切なポート番号に変更し、接続されています私はコーディネーターを私のPCに再接続します。それは私がRXが点滅主導見ていても、そのようになったままで、何も出力を与えない
Serial ports initialised....
XBee object created
:よう 私の出力が見えます。
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()
それは次のような出力が得られます。 は以下のみpyserialで書かれたコードです。
誰かが親切に助けてもらえます。
pyserialライブラリのみを使用しているため、出力(希望の出力ではありません)が得られていますが、読み込みができません。 –
シリアルポートとボーレートは正しいですか、シリアルポートをコンピュータに接続するたびにチェックします。ボーレートはデフォルトです。私もAPI_1モードで成功しましたが、成功しませんでした。シリアルバッファがいっぱいになってしまいました(私はこれをランダムに試しました)。 –
パケットはXCTUのAPIフレームとして送られますか?つまり、0x7E(〜)、2バイト長、チェックサムなどで始まります。 16進モードのXCTU端末ではどうなっていますか? (そして、私たちがXCTUで「API_1」と言っているときは、ATAP = 1を設定していると仮定します) – tomlogic