Отображение данных байтового массива из Xbee Gateway Receiver с использованием кода Python - PullRequest
0 голосов
/ 16 марта 2019

Я работал с приемником беспроводного шлюза (используя Xbee), который получает указанный ниже байтовый массив последовательно

7E 00 32 90 00 13 A2 00 41 91 25 D4 FF FE C2 7F 00 01 03 FF 36 00 08 00 00 6B 87 00 2C 52 00 05 DB 00 00 00 00 76 17 00 0C 94 FF 8D 0E FF E4 D6 00 00 00 00 18 88

, и со ссылкой на код я смог написать код, как указано ниже

import time
import serial

# Change this serial port to the serial port you are using.
s = serial.Serial('COM6', 9600)

while True:
    packet_ready = s.read()
    print(packet_ready)
    #Read bytes
    #7E 00 32 90 00 13 A2 00 41 91 25 D4 FF FE C2 7F 00 01 03 FF 36 00 08 00 00 6B 87 00 2C 52 00 05 DB 00 00 00 00 76 17 00 0C 94 FF 8D 0E FF E4 D6 00 00 00 00 18 88
    if(ord(packet_ready) == 126):#0x7F HEX Byte
        #while s.inWaiting() < 54:
         #   time.sleep(.001)
        bytes_back = s.read(54)
        if(ord(bytes_back[15]) == 127):#0x7E HEX Byte 
            print('The packet has a data payload: ' + str(ord(bytes_back[14])))
            print('The packet is for sensor type: '+str(ord(bytes_back[22])))
            print('Sensor Number: '+str(ord(bytes_back[16])))
            if(ord(bytes_back[22]) == 8):#0x08 HEX Byte
                print('Sensor Number: '+str(ord(bytes_back[22])))
                rms_x = (((bytes_back[24])<<16) + ((bytes_back[25])<<8) + (bytes_back[26]))/100;
                rms_y = (((bytes_back[27])<<16) + ((bytes_back[28])<<8) + (bytes_back[29]))/100;
                rms_z = (((bytes_back[30])<<16) + ((bytes_back[31])<<8) + (bytes_back[32]))/100;

                max_x = (((bytes_back[33])<<16) + ((bytes_back[34])<<8) + (bytes_back[35]))/100;
                max_y = (((bytes_back[36])<<16) + ((bytes_back[37])<<8) + (bytes_back[38]))/100;
                max_z = (((bytes_back[39])<<16) + ((bytes_back[40])<<8) + (bytes_back[41]))/100;

                min_x = (((bytes_back[42])<<16) + ((bytes_back[43])<<8) + (bytes_back[44]))/100;
                min_y = (((bytes_back[45])<<16) + ((bytes_back[46])<<8) + (bytes_back[47]))/100;
                min_z = (((bytes_back[48])<<16) + ((bytes_back[49])<<8) + (bytes_back[50]))/100;

                print('RMS_X:  ' + str(rms_x))
                print('RMS_Y: ' +str(rms_y))
                print('RMS_Z: '+str(rms_z))
                print('MAX_X: '+str(max_x))
                print('MAX_Y: '+str(max_y))
                print('MAX_Z: '+str(max_z))
                print('MIN_X: '+str(min_x))
                print('MIN_Y: '+str(min_y))
                print('MIN_Z: '+str(min_z))
                print('\n')

И в результате работы с этим кодом я получаю данные, как указано ниже

b'f'
b'\xc2'
b'b'
b'\xc2'
b'f'
b'\xc6'
b'B'
b'\xf6'
b'f'
b'\xc2'
b'\x08'
b'J'
b'\xfe'
b'f'
b'\xc6'
b'\xe2'
b'\xde'
b'f'
b'B'
b'\xe2'
b'\xc2'
b'f'
b'\xc6'
b'\xe2'
b'\xc2'
b'f'
b'B'
b'\xc2'
b'\xfe'
b'f'
b'\x80'
b'B'
b'\xce'
b'f'
b'\xc2'
b'\xc2'
b'\xc2'
b'f'
b'F'
b'\xc2'
b'\xfe'
b'f'
b'\xc2'
b'\xe2'
b'\xf6'
b'f'
b'\xc6'
b'\xe2'
b'\xc2'
b'f'
b'B'
b'\x08'
b'\xfe'
b'\xfe'
b'f'
b'F'
b'B'
b'\xc2'
b'f'
b'B'
b'\xe2'
b'\xc2'

Я не могу понять, почему мой код не обрабатывается дальше после последовательного чтения данных,

Любые предложения по этому вопросу помогут вам

...