Salve a tutti,
il progetto a cui sto lavorando prevede l'utilizzo di un adattatore USB-seriale (OBD Scan) per comunicare con la centralina della mia automobile.
Sotto Windows (Lazarus 1.2.6+FPC 2.6.4) non ho alcun problema a collegarmi all'adattatore (viene visto come una COM5) ma sotto Raspbian (stessa versione di Lazarus+FPC) non riesco a connettermi.
L'adattatore viene rilevato dal sistema, infatti con il comando "lsusb" viene rilevato e anche con "ls /dev/tty*" viene rilevato cone "/dev/ttyUSB0".
Per cui tramite le librerie Synaser:
ser:= TBlockSerial.Create;
ser.Connect('/dev/ttyUSB0');
ser.config(38400, 8, 'N', SB1, False, False);
str:= 'Device: ' + ser.Device + ' Status: ' + ser.LastErrorDesc +' '+Inttostr(ser.LastError));
ShowMessage(str);
ottengo a video il messaggio "/dev/ttyUSB0 Bad File Number 9"
e non riesco a comunicare con l'adattatore (equipaggiato con un PL2303).
La cosa strana (per me ovviamente) è che se prova a connettermi dalla linea di comando con "sudo screen /dev/ttyUSB0 38400" la connessione avviene e riesco a comunicare con il dispositivo.
Dove sto sbagliando?
Grazie, saluti.
Roberto
Trovato la soluzione: prima del "connect" bisogna settare "LinuxLock" a "false" in modo che il sistema liberi la porta.
Ed infatti si è collegato.
Per cui il codice é:
ser:= TBlockSerial.Create;
ser.LinuxLock:= false;
ser.Connect('/dev/ttyUSB0');
ser.config(38400, 8, 'N', SB1, False, False);
str:= 'Device: ' + ser.Device + ' Status: ' + ser.LastErrorDesc +' '+Inttostr(ser.LastError));
Spero sia utile ad altri, saluti.
Roberto