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:
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);
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 (:
Comunque ora, so che per mandare/ricevere dati tramite la porta seriale devo usare rispettivamente le funzioni:
codice:
WriteFile(HANDLE,PCVOID,DWORD,PDWORD,LPOVERLAPPED);
ReadFile(HANDLE,PVOID,DWORD,PDWORD,LPOVERLAPPED);
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.
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