il programma è fatto con il framework QT
Il PC apre la porta seriale e invia la stringa "who" il micro risponde con una stringa predefinita.
il problema è che con linux sembra che viene inviato un carattere alla volta.
Questa è la funzione del micro che viene richiamata se sono presenti dati nel buffer in ingresso:
- Codice: Seleziona tutto
...
void USBD_CDC0_ACM_DataReceived(uint32_t len)
{
int32_t cnt;
(void)(len);
cnt = USBD_CDC_ACM_ReadData(0U, uart_rx_buf, 64);
if (cnt > 0) {
osSignalSet(T_LED_Thread, 0x01);
}
}
...
nel caso di linux la funzione viene chiamata per ogni carattere e la variabile cnt risulta 1.
Mentre con windows funziona perfettamente: la funzione viene chiamata quando il uart_rx_buf contiene i 3 catratteri trasmessi dal PC.
ho provato anche con "moserial" a mandare manualmente la stringa "who" ma il risultato è lo stesso.
Credevo fosse un problema di configurazione della tty, dato che linux tratta la seriale come un terminale. sono quindi andato a spulciarmi il sorgente della libreria Qtserialport e la seriale viene inizializzata in raw mode con cfmakeraw().
Idee?? nessuno si è imbattuto in un problema analogo?
Grazie!

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

