Я новичок в Python и создаю алгоритм для считывания отражающих данных с больного сканера безопасности. Компания заявляет, что бит 13 в 16-битном случае будет означать, если датчик обнаруживает что-либо отражающее.
У меня есть код, который печатает двоичные данные, но пытается найти код, который можно найти, когда определенный бит (бит 13) положителен. Может ли кто-нибудь помочь мне в этом вопросе? Код указан ниже.
#!/usr/bin/env python
import time
import serial
import binascii
import math
ser = serial.Serial(
port = '/dev/ttyUSB0',
baudrate = 38400,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=2
)
counter=1
#Request token telegram listing expected printed bytes confirming connection with sensor.
sick_request = bytearray()
sick_request.append(0x00)
sick_request.append(0x00)
sick_request.append(0x00)
sick_request.append(0x00)
#Request packet for block 12 of data using telegram listing documentation.
packet = bytearray()
packet.append(0x00)
packet.append(0x00)
packet.append(0x45)
packet.append(0x44)
packet.append(0x0C)
packet.append(0x00)
packet.append(0x02)
packet.append(0x22)
packet.append(0xFF)
packet.append(0x07)
#Request token for sick sensor using telegram listing.
request = bytearray()
request.append(0x00)
request.append(0x00)
request.append(0x41)
request.append(0x44)
request.append(0x19)
request.append(0x00)
request.append(0x00)
request.append(0x05)
request.append(0xFF)
request.append(0x07)
request.append(0x19)
request.append(0x00)
request.append(0x00)
request.append(0x05)
request.append(0xFF)
request.append(0x07)
request.append(0x07)
request.append(0x0F)
request.append(0x9F)
request.append(0xD0)
scale = 16
#Sick sensor code for retriving data via block 12 data request.
if (ser.isOpen() == True):
ser.isOpen()
time.sleep(2)
ser.write(request)
print("Telegram Request token sent")
c = ser.read(4)
z = binascii.hexlify(c).decode('UTF-8')
print(z)
if (c == sick_request):
print("ok")
if (c != sick_request):
print("not ok")
time.sleep(5)
print("write done")
while True:
ser.write(packet)
sick_read = ser.readline(1096)#reconstructed block 12 data from sick intelligence document
read_data = binascii.hexlify(sick_read).decode('UTF-8')
hex_read = [read_data[i:i+4] for i in range(0, len(read_data), 4)]
print("hex string", hex_read)
n = int(read_data, 16)
bStr = ''
while n > 0:
bStr = str(n % 2) + bStr
n = n >> 1
res = bStr
binary_read = [res[i:i+8] for i in range(0, len(res), 8)]
print(str(binary_read))
time.sleep(1.5)
ser.close()
while False:
print("connection possibly not established or faulty packet sent")
ser.close()