Skocz do zawartości

Pomocna odpowiedź

Napisano (edytowany)

from machine import Pin, UART
import utime

keyb = bytearray(4)
mouse = bytearray(7)

UART1 = UART(1, baudrate=115200, bits=8, parity=None, stop=1)
button1 = machine.Pin(7, machine.Pin.IN, machine.Pin.PULL_UP)
button2 = machine.Pin(6, machine.Pin.IN, machine.Pin.PULL_UP)
keyb = [0xFE,0x04,0x00,0x00,0x00]
#mouse = [0XFD,0x05,0x02,0x00,0x00]
while True:
    if button1.value() == 1:
     
     keyb[3]=(0x00)
     
     
    elif button1.value() == 0:
     keyb[3]=(0x1b)

  
    if button2.value() == 1:
     keyb[4]=(0x00)
    
    elif button2.value() == 0:
     keyb[4]=(0x1d)
    
    UART1.write(bytes(keyb))
    utime.sleep(0.09)
    
    
    #print(bytes(keyb))

Mam taki problem, chciałbym wysłać do buforu tablice hexów po naciśnięciu przycisku dany element w tablicy jest nadpisany . Nie znalazłem nic o buforze protokołu UART w sieci dlatego powstał taki kod, który podmienia jeden element po naciśnięciu przycisku i wysyła poprawnie raport, ale drugi if nie działa i powoduje nadpisanie całego raportu i reset połączenia.  Nie wiem czy dla tak prostej operacji muszę zagłębić się w topologię fifo i DMA ? 

Edytowano przez rafalmrok
>>> keyb = bytearray(4)
>>> keyb[3] = 0x00
>>> keyb[4] = 0x00
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    keyb[4] = 0x00
IndexError: bytearray index out of range
>>> 

To ja zostawię takie coś i pozwolę ci się domyśleć co poszło nie tak 🙂

A u mnie działa...

>>> keyb = bytearray(4)
>>> keyb = [0xFE,0x04,0x00,0x00,0x00]
>>> keyb[3] = 0x11
>>> keyb[4] = 0x22
>>> print(bytes(keyb))
b'\xfe\x04\x00\x11"'

To ja zostawię takie coś i pozwolę się koledze wątkotwórcy domyśleć dlaczego to działa i co jest nie tak 🙂

 

if button1.value() == 0:
     keyb[3]=(0x1b)

    elif button2.value() == 0:
     keyb[4]=(0x1d)
    else:
     keyb[3]=(0x00)
     keyb[4]=(0x00)
    UART1.write(bytes(keyb))
    utime.sleep(0.09)
    
    
    print(bytes(keyb))
       

działa! dzięki nie wiem czy wam o to chodziło ale dodałem else: jeszcze zostało dodanie drugiego raportu mouse i pico będzie mistrzem bo  w C na arduino potrafiłem zapisac jedną funkcjonalnośc w trybie COMBO bluetooh HID. Dodanie drugiego raportu zawsze kończyło się niepowodzeniem.  

Dodanie drugiego raportu poszło gładko, PICO się zwróciło, mam keyboard i mysz z jednego bluetooth.  PICO mistrz, ale spróbuje napisać to na arduino, bo sobie wyjaśniłem parę rzeczy, myślę że z gamepadem też mi pujdzie gładko. Pozdro.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...