Object with buffer protocol required.
-
Hello all,
I am trying to use the UART of a WiPy 3.0 to send data to a computer. I can read data in just fine but get an error when trying to transmit data stating object with buffer protocol required. Basically I send 0xA1 then 0xFE to the WiPy module from the computer and store it in a variable uart_Rx_buffer. Later, I wish to send the second byte 0xFE back to the computer.
definition of uart_Rx_buffer:
uart_Rx_buffer = [0, 0]The rest of my code:
if uart.any(): #check for data in stream receive buffer uart_Rx_buffer = uart.read(2) #read and store 2 bytes of data, this also clears the stream receive buffer if uart_Rx_buffer[0] == 0xA1: services = BluetoothConnection.services() #get services from connected device for service in services: chars = service.characteristics() #get characteristics from services of connected device for char in chars: #scroll through characteristics and write to any that have correct set properties if (char.uuid() == 22): #char.write(chr(int(bin(uart_Rx_buffer[1])))) #write UART data to characteristic #print(uart_Rx_buffer[1]) uart.write(uart_Rx_buffer[1]) #echo data back to MSP430I've seen this thread, but the answer is to convert the data to a string.. which outputs 3 bytes, in ascii 2, 5, 4.. which is correct 254 = FE but I want to transmit one byte that is 254. How can I do this?
-
@nick9995 said in Object with buffer protocol required.:
uart.write(uart_Rx_buffer[1])
try this:
uart.write(bytes(uart_Rx_buffer[1]))i write from memory i heave not device currently on hand
-
Thanks for the reply. I did try it but I just get 0x00 transmitted out like 30 ish times...
I had it commented out but:
uart.write(chr(int(bin(uart_Rx_buffer[1]))))This line works to send the byte stored in uart_Rx_buffer[1] so long as the byte is stored as the decimal value.
For example, 0xFE = 254 in decimal. If I load uart_Rx_buffer[1] with 0xFE, I just get errors no matter what I try. If I load it with 254, it works just fine.
Since I am at my deadline for this project, I will just stick with my current solution since it is acceptable. I was hoping to solve this issue but it is more of a curiosity than necessity.
-
@nick9995
uart.write(bytes([uart_Rx_buffer[1]])) -
@livius Thank you so much!!! That works for me! Not sure how long it would have taken me to properly use brackets [ ].
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login