Seu primeiro problema (permissões de dispositivo) foi corrigido ao adicionar seu usuário ao grupo correto.
Seu segundo problema (caminho do dispositivo) parece ser que você não está usando o caminho completo do dispositivo. De man statserial
:
Você precisa fazer statserial /dev/ttyUSB0
(Eu verifiquei a fonte para verificar se isso está correto, ela literalmente faz fd = open(device,...)
em que device é seu argv [x])
Para informações genéricas sobre como programar a porta serial, veja Manual de Programação Serial . Você pode olhar para a fonte do statserial com apt-get source statserial
(é um programa muito simples compilado a partir de um único arquivo statserial.c
, que tem 195 linhas de comprimento).
A atualização é lenta porque o statserial pesquisa apenas a porta serial a cada segundo, o loop principal é:
for (;;) {
/* get modem status info */
status = ioctl(fd, TIOCMGET, &arg);
if (status != 0) {
perror("statserial: TIOCMGET failed");
exit(1);
}
...
printw("Device: %s\n\n", device);
printw("Signal Pin Pin Direction Status Full\n");
printw("Name (25) (9) (computer) Name\n");
printw("----- --- --- --------- ------ -----\n");
printw("FG 1 - - - Frame Ground\n");
printw("TxD 2 3 out - Transmit Data\n");
printw("RxD 3 2 in - Receive Data\n");
printw("RTS 4 7 out %1d Request To Send\n", !!(arg & TIOCM_RTS));
printw("CTS 5 8 in %1d Clear To Send\n", !!(arg & TIOCM_CTS));
printw("DSR 6 6 in %1d Data Set Ready\n", !!(arg & TIOCM_DSR));
printw("GND 7 5 - - Signal Ground\n");
printw("DCD 8 1 in %1d Data Carrier Detect\n", !!(arg & TIOCM_CAR));
printw("DTR 20 4 out %1d Data Terminal Ready\n", !!(arg & TIOCM_DTR));
printw("RI 22 9 in %1d Ring Indicator\n", !!(arg & TIOCM_RNG));
refresh();
/* break out if -n option was used */
if (n_option)
exit(0);
/* delay 1 second between loops */
sleep(1);
}
Se você está fazendo algum trabalho sério com portas seriais, eu recomendo que você obtenha uma placa de porta serial real (placa PCI com controlador RS232). Os adaptadores USB não são confiáveis o suficiente, especialmente se você estiver conectando a hardware antigo, você verá que eles não reproduzem as temporizações do sinal com precisão, o que causará problemas com alguns dispositivos. Outro problema comum é que as portas seriais USB não implementam (ou mal implementam) handshaking RTS / CTS de hardware e, portanto, acabam sendo incompatíveis com dispositivos de porta serial antigos. Dito isto, o PL2303 é um dos melhores chips e deve funcionar com a maioria dos dispositivos.