Salve ragazzi, sto cercando di instaurare una comunicazione tra un programma scritto in C e Arduino, tramite la porta COM9.
Spulciando nella rete ho trovato dei suggerimenti su come configurare la Porta, riporto di seguito il codice che ho scritto:Fin qui che ne dite? E' tutto ok? E' la prima volta che mi cimento in una cosa del genere quindi se ho sbagliato qualche settaggio/qualsiasi altra cosa non esitate a correggermi (:codice:#include <stdio.h> #include <stdlib.h> #include <windows.h> int main(){ // apro porta seriale in lettura e scrittura HANDLE hCom; hCom = CreateFile("COM9", GENERIC_ALL, 0, 0, OPEN_EXISTING, 0, 0); // settare porta: // 1) creazione stringa settaggio "nome_porta: baud, parità, bit_di_dati, bit_di_stop" // la stringa quindi sarà: "COM9: 9600, N, 8, 1" // 2) costruzione del DCB DCB DcbComPort; // 3) prendo lo stato della porta da inserire nel DCB GetCommState(hCom, &DcbComPort); // la funzione "BuildCommDCB" ha come parametri: stringa settaggio, un DCB; // 4) e crea il DCB BuildCommDCB("COM9: 9600, N, 8, 1", &DcbComPort); // 5) assegno definitivamente la configurazione alla porta SetCommState(hCom, &DcbComPort); // ora la porta seriale è definitivamente aperta // Gestione del Timeout COMMTIMEOUTS cto; // settare tutte le proprietà della struttura cto.ReadIntervalTimeout = 500; cto.ReadTotalTimeoutConstant = 500; cto.ReadTotalTimeoutMultiplier = 500; cto.WriteTotalTimeoutConstant = 500; cto.WriteTotalTimeoutMultiplier = 500; // assegnare il timeout alla porta SetCommTimeouts(hCom, &cto);
Comunque ora, so che per mandare/ricevere dati tramite la porta seriale devo usare rispettivamente le funzioni:
ed è qui che mi blocco..sto cercando ovunque senza trovare nulla che possa farmi capire bene come usarle, non ho per niente chiaro come faccio a settare quei parametri.codice:WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED); ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
Nel mio caso specifico vorrei poter inviare alla Porta il carattere "a", come posso fare?
In oltre nello sketch Arduino ho messo un "Serial.Println("hello");", se da C voglio ricevere come faccio per prelevarlo?
Sto sbagliando qualcosa?
So già di trovare persone molto più esperte di me in questo campo, attendo con ansia le vostre risposte e vi ringrazio in anticipo!!
Vincenzo

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando