私はセンサーシステムを持っています。センサーは私からコマンドを受信し、何かを実行してから、私に応答を送信します。
応答は次のようになります。
seq. number | net_id | opcode_group | opcode | payloadlength | val
これらの値はスペース文字で区切られています。
という名前の最後の値を取りたいと思いますval
。この部分では、センサーからの応答を詳しく説明するために知りたい情報がすべて揃っています。
たとえば、センサーの IEEE MAC アドレスを知りたいコマンドに対して、次のような応答があります。
この場合、応答のval
後のすべてのフィールドです。Length
切れ目はありませんが、糸のようなものがあります。
私がしなければならないのは、すべてのフィールドの長さだけを知っているだけで、この配列/数字の文字列を分割することだけです。たとえば。ステータスは 1 バイト、MAC アドレスは 8 バイトなど...
私のコードはこれです:
if response.error:
ret['error'] = 'Error while retrieving unregistered sensors'
else:
for line in response.body.split("\n"):
if line != "":
value = int(line.split(" ")[6])
ret['response'] = value
self.write(tornado.escape.json_encode(ret))
self.finish()
if command == 'IDENTIFY':
status = value.split(" ")[0]
IEEEAddrRemoteDev = value.split(" ")[1]
NWKAddrRemoteDev = value.split(" ")[2]
NumOfAssociatedDevice = value.split(" ")[3]
StartIndex = value.split(" ")[4]
ListOfShortAddress = value.split(" ")[5]
if status == 0x00:
ret['success'] = "The %s command has been succesfully sent! \
IEEE address: %s" % % (command.upper(), IEEEAddrRemoteDev)
self.write(tornado.escape.json_encode(ret))
elif status == 0x80:
ret['success'] = "Invalid Request Type"
self.write(tornado.escape.json_encode(ret))
elif status == 0x81:
ret['success'] = "Device Not Found"
self.write(tornado.escape.json_encode(ret))
最初の部分では、応答全体から 6 番目の値を取得し、これを変数に入れますvalue
。この後、この変数をすべてのコンポーネントに分割したいと思います。
たとえば。これstatus = value.split(" ")[0]
はどのように分割する必要がありますか????
助けてくれてどうもありがとう!