26-09-2017, 10:03
Tenho um erro no meu código que é o seguinte, quando recebo do arduino através do nrf24L01 a palavra pretendo saber o numero de erros que recebe e incrementando ao longo do tempo esse mesmo numero de erros, só que no meu código dá-me este erro:
aux=aux + abs((chr(n)-palavra)>0) TypeError: unsupported operand type(s) for -: 'str' and 'str'
esta parte do código é para indicar o numero de erros que vem na palavra.
o meu código é o seguinte:
import RPi.GPIO as GPIO
from lib_nrf24 import NRF24
import time
import spidev
import binascii
import string
import math
GPIO.setmode(GPIO.BCM)
pipes = [[0xE8, 0xE8, 0xF0, 0xF0, 0xE1], [0xF0, 0xF0, 0xF0, 0xF0, 0xE1]]
radio = NRF24(GPIO, spidev.SpiDev())
radio.begin(0, 17)
radio.setCRCLength(NRF24.CRC_DISABLED)
radio.setPayloadSize(32)
radio.setChannel(0x76)
radio.setPALevel(NRF24.PA_MIN)
radio.setDataRate(NRF24.BR_1MBPS)
radio.setAutoAck(False)
radio.openReadingPipe(1, pipes[1])
radio.enableAckPayload()
radio.enableDynamicPayloads()
radio.openReadingPipe(1, pipes[1])
radio.disableCRC()
radio.printDetails()
radio.startListening()
palavra ="01234567890123456789012345678910"
while (1):
# ackPL = [1]
while not radio.available(0):
time.sleep(1 / 100)
receivedMessage = []
radio.read(receivedMessage, radio.getDynamicPayloadSize())
print("RX {}".format(receivedMessage))
string = ""
aux=0
for n in receivedMessage:
string += chr(n)
aux = aux + abs((chr(n)-palavra))
print("Valor aux: ".format(aux))
aux=aux + abs((chr(n)-palavra)>0) TypeError: unsupported operand type(s) for -: 'str' and 'str'
esta parte do código é para indicar o numero de erros que vem na palavra.
o meu código é o seguinte:
import RPi.GPIO as GPIO
from lib_nrf24 import NRF24
import time
import spidev
import binascii
import string
import math
GPIO.setmode(GPIO.BCM)
pipes = [[0xE8, 0xE8, 0xF0, 0xF0, 0xE1], [0xF0, 0xF0, 0xF0, 0xF0, 0xE1]]
radio = NRF24(GPIO, spidev.SpiDev())
radio.begin(0, 17)
radio.setCRCLength(NRF24.CRC_DISABLED)
radio.setPayloadSize(32)
radio.setChannel(0x76)
radio.setPALevel(NRF24.PA_MIN)
radio.setDataRate(NRF24.BR_1MBPS)
radio.setAutoAck(False)
radio.openReadingPipe(1, pipes[1])
radio.enableAckPayload()
radio.enableDynamicPayloads()
radio.openReadingPipe(1, pipes[1])
radio.disableCRC()
radio.printDetails()
radio.startListening()
palavra ="01234567890123456789012345678910"
while (1):
# ackPL = [1]
while not radio.available(0):
time.sleep(1 / 100)
receivedMessage = []
radio.read(receivedMessage, radio.getDynamicPayloadSize())
print("RX {}".format(receivedMessage))
string = ""
aux=0
for n in receivedMessage:
string += chr(n)
aux = aux + abs((chr(n)-palavra))
print("Valor aux: ".format(aux))