Visual Basic Dec-Werte senden (Serielle Schnittstelle) wie HTerm?!

Gast #3403417
Lesenswert?

Hallo liebe Forumsmitglieder,

ich verzweifele schon etwas länger an dem Projekt, dass ich einem Atmel 
über mein VB-Programm div. Werte senden kann/will. Ich möchte die 
Helligkeit mittels Schieberegler einstellen können. Dazu sende ich ein 
"E" und dann soll der Wert kommen (0-255 in dec). Aber ich bekomme nur 
Strings gesendet?!
Hat jmd. eine Idee, wie ich das als .dec senden kann (wie beim HTerm)?
Damit klappt das nämlich wunderbar.

Freue mich auf Hilfe von Euch!
Gast #3403477
Lesenswert?

Hallöchen !

VB6 mit MSComm
1
' Ein Byte senden
2

3
Dim X as Byte
4

5
X = 1 ' Dein Wert
6
MSComm1.PortOpen = True
7
MSComm1.Output X
8
MSComm1.PortOpen = False
9

10

11
' man kann auch ein Array senden
12
Dim X(3) as Byte
13
X(0) = 0
14
X(1) = 1
15
X(2) = 10
16
X(3) = 255
17

18
MSComm1.PortOpen = True
19
MSComm1.Output X
20
MSComm1.PortOpen = False

Gruß: Thomas
Gast #3403665
Lesenswert?

Hallo,

danke für die schnellen Antworten:

also bei mir sieht das so aus:

serialport1.write(...) 'sendet dann immer string

Hier mal die Sub des Sliders:

Private Sub SliderBrighness_Scroll(sender As Object, e As EventArgs) 
Handles SliderBrighness.Scroll

ValueBAR = SliderBrighness.Value()
TrackBarValue(0) = CByte(ValueBAR)

If SerialPort1.IsOpen = True Then
   SerialPort1.Write("E")
   SerialPort1.Write(TrackBarValue, 0, 1)
End If
End Sub

So klappt das nicht, hatte auch schon mit chr() und das Byte senden 
getestet, klappt aber auch nicht :(

Achso: Nutze übrigends MS VS 2012



Mit der Version von "arther"
- sendestr="E"+chr(123)
- serialport1.write(chr(132))

klappt der untere Bereich (gefühlt bis 128) gut, aber danach geht nichts 
mehr, da wird Müll gesendet. Ich kann so nicht im oberen Bereich regeln.
Hat jmd. noch eine Idee; ich wein gleich :(( ?!
Gast #3404552
Lesenswert?

Ich kann im Bereich 0-255 per HTerm senden.
Bei meinem geht das dann nicht über 127 (getestet und bestätigt ist 
wirklich nur bis 127). Ich sende das über Bluetooth an den 
Mikrocontroller, habe jetzt nochmal bei VB eine Rückgabe reingemacht, er 
macht 0-127 wunderbar, ab 128 werden wird wahllos irgendwas gesendet; 
ist unterschiedlich.

Ich habe in VB den Port folgendermaßen angesteuert:

SerialPort1.PortName = My.Settings.COM_aerolight()
SerialPort1.BaudRate = 9600
SerialPort1.Encoding = Encoding.GetEncoding(28591) 'coding to west iso
SerialPort1.Open()

Dieses "Encoding" hat bei mir eine System.xy Datei eingefügt.
Aber leider klappt das so auch nicht.
senden tue ich folgendermaßen:

serialport1.write(chr(x)) 'x ist die Variable, bzw. der Zählstand des 
Var.

Die Schnittstelle ist einfach wie von VB vordefiniert definiert. An der 
Definition 7/8-Bits habe ich nichts geändert, wo geht das?!
Gast #3404565
Lesenswert?

Nochmal ein kurzer Nachtrag:

Ich habe einfach mal folgendes getestet:

SerialPort1.Encoding = Encoding.Default

jetzt geht es?! Komisch das es mit der Coding-Page wie arther es meinte 
nicht funktioniert hat; hoffe das mit default ist jetzt nicht nur bei 
mir so, sondern PC-Unabhängig.

Ich danke euch für die Hilfe!!




Für die Nachwelt:

Senden von 0-255 mit:
serialport1.write(chr(x)) 'x euer Variablenwert 0-255

Wenn es ab 127 nicht klappt, testet (bei Encoding die System.xy 
einbinden)
SerialPort1.Encoding = Encoding.GetEncoding(28591)
oder
SerialPort1.Encoding = Encoding.Default


serialport1 ist der Name eures Seriellenportes.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren