26/03 17:28
Carlo
Ultima modifica effettuata da Carlo 26/03 17:30
in programmazione tutto è permesso
If controllo >= 0 And controllo <= 100 Then ' se il valore è nel range 0-100 si imposta il volume
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick Dim str As String str = RiceviDati() TextBox1.Text += str ' tuo monitor Dim valoriDivisi() As String ' matrice senza dimensione valoriDivisi = str.Split(";") ' puntovirgola separa le stringhe: in valoriDivisi(0) ci va il codice identificativo (B = gradi bussola, P = potenziometro, N = null, E = errore) e in valoriDivisi(1) ci va il valore relativo If valoriDivisi.Length <> 2 Then Exit Sub ' se str non è stato diviso in due stringhe si esce If valoriDivisi(0) = "B" Then ' Il dato è riferito ai gradi della bussola ' se la conversione è possibile avanzamento prende il valore dei primi tre caratteri della stringa If Integer.TryParse(valoriDivisi(1).Substring(0, 3), avanzamento) Then lblgradi.Text = avanzamento.ToString("000°") Pcboxbussola.Invalidate() ' scatena il paint End If End If If valoriDivisi(0) = "P" Then ' Il dato in: valoriDivisi(1), è riferito al volume e è una stringa Dim controllo As Integer ' se la conversione è possibile, controllo prende il valore della stringa in valoriDivisi(1) If Integer.TryParse(valoriDivisi(1), controllo) Then If controllo >= 0 And controllo <= 100 Then ' se il valore è nel range 0-100 si imposta il volume media_pleyer.lb_volume.Text = valoriDivisi(1) + "%" media_pleyer.Volume_control1.value = valoriDivisi(1) lb_volume.Text = valoriDivisi(1) + "%" Volume_control1.value = valoriDivisi(1) media_pleyer.Timer3.Start() media_pleyer.AxWindowsMediaPlayer1.settings.volume = media_pleyer.Volume_control1.value AxWindowsMediaPlayer1.settings.volume = media_pleyer.Volume_control1.value video.Wmp1.settings.voume = video.Volume_control1.value End If End If End If ' possibili usi degli errori ritornati se ometti li ignori If valoriDivisi(0) = "N" Then ' Il dato è riferito a nessun valore ricevuto lblgradi.Text = valoriDivisi(1) ' l'info su lblgradi, oppure dove vuoi End If If valoriDivisi(0) = "E" Then ' Il dato è riferito a errore sulla seriale lblgradi.Text = valoriDivisi(1) ' il tipo d'errore su lblgradi, oppure dove vuoi End If Label1.Text = "NORD" End Sub
#include <stdio.h> void bussola(char *outBussola) { float headingDegrees = 320.5; // gradi di esempio tu li prenderai dal magnetometro sprintf(outBussola, "%.2f", headingDegrees); // converte in stringa con 2 cifre decimali } void loop() { char outBussola[8]; // conterrà la stringa creata in bussola() bussola(outBussola); // richiama la routine che legge i gradi char outBuf[20]; // spazio per la stringa d'uscita int val = 10; // volume a 10, tu lo prenderai dal potenziometro sprintf(outBuf, "%s;%d", outBussola, val); // concatena i due valori separati da puntovirgola printf("%s\n", outBuf); // check stringa da inviare //Serial.println(outBuf); // tu invece invii alla seriale } int main() { loop(); // richiama la routine una volta, tu tutte le volte che vuoi return 0; }
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick Dim str As String str = RiceviDati() Dim valoriDivisi() As String ' matrice senza dimensione valoriDivisi = str.Split(";") ' il puntoevirgola separa le stringe: in valoriDivisi(0) ci vanno i gradi bussola e in valoriDivisi(1) ci va il volume If valoriDivisi(0) = "E" Then lblgradi.Text = "errore" ' in valoriDivisi(1) ' il tipo d'errore da mostrare dove vuoi else ' Il primo dato è riferito ai gradi della bussola valoriDivisi(0) = valoriDivisi(0).Replace(".", ",") ' se ci fosse il punto decimale viene sostituito con la virgola decimale avanzamento = CInt(valoriDivisi(0)) Label1.Text = avanzamento.ToString("000°") PictureBox1.Invalidate() ' scatena il paint ' Il dato in: valoriDivisi(1), è riferito al volume e è una stringa media_pleyer.lb_volume.Text = valoriDivisi(1) + "%" media_pleyer.Volume_control1.value = valoriDivisi(1) lb_volume.Text = valoriDivisi(1) + "%" Volume_control1.value = valoriDivisi(1) media_pleyer.Timer3.Start() media_pleyer.AxWindowsMediaPlayer1.settings.volume = media_pleyer.Volume_control1.value AxWindowsMediaPlayer1.settings.volume = media_pleyer.Volume_control1.value video.Wmp1.settings.voume = video.Volume_control1.value End If End Sub
Function RiceviDati() As String Dim Ricevuti As String Try Ricevuti = SerialPort1.ReadExisting If Ricevuti = Nothing Then Return "E;null" ' ritorna con la E else Return Ricevuti End If Catch ex As Exception Return "E;" & ex.Message ' ritorna con la E End Try End Function