18/03 13:10
Carlo
Mi sembra che stai complicando la questione inutilmente.
parché non fai:
Serial.write(headingDegrees); ???
se mandi i gradi togli tutti gli if, sia in C che in VB e come risultato la bussola si orienta a passi di 1 grado invece che a passi di 45 gradi
Per identificare il dato ricevuto, ribadisco che puoi aggiungere un valore o carattere iniziale che ti faccia capire di cosa si tratta.
Per esempio nel codice C per i gradi:
se i gradi presenti in: headingDegrees erano per esempio 320.5, in VB riceverai: "1; 320.500000"
in VB per dividere i valori lo puoi fare con split:
e così via per tutto quello che invii sulla seriale.
Potresti anche preparare una stringa che contiene tutti i dati separati da ; e fare un unico invio... L'ordine stabilisce il tipo di dato!!!
parché non fai:
Serial.write(headingDegrees); ???
se mandi i gradi togli tutti gli if, sia in C che in VB e come risultato la bussola si orienta a passi di 1 grado invece che a passi di 45 gradi
Per identificare il dato ricevuto, ribadisco che puoi aggiungere un valore o carattere iniziale che ti faccia capire di cosa si tratta.
Per esempio nel codice C per i gradi:
char send [20]; // send può contenere 20 caratteri sprintf(send, "1; %f", headingDegrees); // converti in stringa i gradi e aggiungi l'identificativo: 1; per i gradi Serial.write(send);
se i gradi presenti in: headingDegrees erano per esempio 320.5, in VB riceverai: "1; 320.500000"
in VB per dividere i valori lo puoi fare con split:
Dim valoreRicevuto As String = "1; 320.500000" ' solo per provare valoreRicevuto = valoreRicevuto.Replace(".", ",") ' se ci fosse il punto decimale viene sostituito con la virgola decimale Dim valoriDivisi() As String ' matrice senza dimensione valoriDivisi = valoreRicevuto.Split(";") ' il puntoevirgola separa le stringe: in valoriDivisi(0) ci va 1 e in valoriDivisi(1) ci va 320,500000 If valoriDivisi(0) = "1" Then ' Il dato è riferito ai gradi della bussola ' in valoriDivisi(1) i gradi ricevuti in formato stringa Dim gradi As Integer = CInt(valoriDivisi(1)) End If
e così via per tutto quello che invii sulla seriale.
Potresti anche preparare una stringa che contiene tutti i dati separati da ; e fare un unico invio... L'ordine stabilisce il tipo di dato!!!
Ultima modifica effettuata da Carlo 18/03 14:46
in programmazione tutto è permesso