Configurando a porta serial no Ubuntu para se comunicar com uma placa Betaflight

1

Estou tentando fazer com que meu programa de aquisição de dados de voo Java, executado em um computador de placa única com Lubuntu 16.04, fale com a placa de sensores Betaflight Nero F7 IMU, que está conectada ao SBC através de uma porta USB. Ele funciona bem no laptop que uso para desenvolvimento (executando o Ubuntu 16.04), mas em um SBC ele não responde depois da reinicialização.

Eu pensei que poderia ter algo a ver com a taxa de transmissão padrão, que é 115200 no laptop e 9600 nos SBCs. Se eu alterá-lo no SBC usando o comando screen , meu código pode falar com o sensor:

screen /dev/ttyACM0 115200

Se (depois de uma reinicialização) eu alterá-lo usando o comando stty , ainda não consigo falar com ele:

stty -F /dev/ttyACM0 115200

Em ambos os casos, a taxa de transmissão parece estar definida corretamente:

setserial /dev/ttyACM0 -av

/dev/ttyACM0, Line 0, UART: unknown, Port: 0x0000, IRQ: 0
    Baud_base: 115200, close_delay: 12, divisor: 0
    closing_wait: none
    Flags: spd_normal low_latency

Quando uso o utilitário configurador Betaflight (um aplicativo do Chrome), ele pode abrir o dispositivo e conversar com ele. Depois disso, meu código também funciona. Sua taxa de transmissão padrão é 115200, mas se eu alterá-la para, e. 9600, ainda funciona.

Eu também executei o comando stty para obter configurações de porta adicionais e tentei convertê-las exatamente como são depois que o utilitário configurador abrir o sensor:

stty -F /dev/ttyACM0 -a

speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint ignpar parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon iexten -echo -echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

Mas, mesmo quando as configurações correspondem exatamente, meu código ainda não funcionará no SBC até que eu execute screen ou seu configurador. Eu posso descartar o estado diferente do sensor porque funciona imediatamente no laptop. Que outra configuração mágica pode alterar screen e o utilitário de configuração que não consigo capturar com setserial e stty ?

    
por infrared 12.07.2017 / 09:17

0 respostas