Salve,
sto incontrando un problema un pò strano tentando di "comunicare" con un microcontrollore (una scheda simile ad Arduino che progettai diversi anni fa) interfacciato all'USB tramite un chipettino della FTDI, il 232.
Per ora sulla scheda sta girando un programmino che semplicemente se riceve un carattere (il carattere "i") risponde con un "o".
Se provo con "minicom" impostando la porta su 38400, 8, 1 bit stop, nessuna parità ne controlli di flusso, mi risponde correttamente (premo "i", appare "o" sullo schermo).
Se invece provo da programma Lazarus:
serKey:= TBlockSerial.Create;
serKey.LinuxLock:= false;
serKey.Connect(‘/dev/ttyUSB0’);
serKey.config(38400, 8, ‘N’, SB1, False, False)
Sleep(100);
serKey.SendString('i');
Sleep(100);
while 1>0 do
begin
str:= serKey.RecvString(5000);
if Trim(str)<>'' then break;
Sleep(1);
Application.ProcessMessages;
end;
ShowMessage(str);
serKey.Free;
il programma non riceve nulla (str='') e ovviamente rimane in loop finchè non lo interrompo.
Non capisco perchè con "minicom" funziona e con il codice qui sopra no.
Il programma sul microcontrollore si aspetta 1 solo carattere (senza CR/LF).
Qualche idea?
Sto usando Lazarus 2.0 su Raspberry Pi4 (2 GB) e librerie Synapse (synaser).
Grazie,
Roberto