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!
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
Evtl. hilft die Chr-Funktion. sendestr="E"+chr(123) http://msdn.microsoft.com/en-us/library/613dxh46%28v=vs.90%29.aspx
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 :(( ?!
Marius Dege schrieb: > klappt der untere Bereich (gefühlt bis 128) gut Wie ist die Schnittstelle eingestellt? Bei 7 Datenbits geht es nur bis 127.
Da die Defaulteinstellung der Codierung auf ASCII auch alle Zeichen > 127 mit 63 ersetzt, kann das auch noch ein Problem sein. Umstellen auf “Western European (ISO)” hilft. SerialPort1.Encoding = Encoding.GetEncoding(28591) http://blogs.msdn.com/b/bclteam/archive/2006/05/26/608377.aspx
Marius Dege schrieb: > aber danach geht nichts mehr, da wird Müll gesendet Wenn du schon HTerm in Benutznug hast, dann guck doch mal, welche Zeichenwerte "Müll" hat.
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?!
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.