Forum: PC-Programmierung VB6 MSCOMM Empfangen von Binären Daten


von BerndKeck (Gast)


Lesenswert?

Hallo an VB6 Profis,

ich stehe im Moment voll auf dem Schlauch und komme nicht weiter.
Hab schon hier im Forum diverses gelesen, auch den Artikel mit "binäre 
Daten senden" usw. - bin arg am verzweifeln und sehe den Wald vor lauter 
Bäumen nicht mehr.

Hier mein Problem:
Ich muss serielle binäre Daten empfangen.
Das ganze hat funktioniert mit ASCII, muss es aber umstellen, der der µP 
halt Werte von 0x00 bis 0xFF sendet.

Also Übertragungsrate, Anschluss, Hardware usw. stimmt alles - da es ja 
schon mit ASCII funktioniert hatte.
Dann hab ich bei der Initialisierung ".InputMode = comInputModeBinary" 
eigefügt.
Es kommt ein Zeichen an, das ich in ein Zahl (int) umwandeln möchte. 
Bisher habe ich viele Unterschiedliche Dinge versucht, aber es will 
einfach nicht klappen:
Hier der Ausschnitt:

Private Sub MSComm1_OnComm()
Dim g As Byte
Dim xa As String
Dim y As Integer
Dim feld(1) As Byte
Select Case MSComm1.CommEvent
    Case comEvReceive
        g = MSComm1.Input
        Text2.Text = g

Kann mir bitte jemand sagen wie das unter VB6 funktioniert?

DANKE IM VOARAUS!!!

von Einhart P. (einhart)


Lesenswert?

Moin,

das sollte problemlos funktionieren. Was hindert dich den Debugger zu 
nutzen und dann dein Problem zu benennen?

von BerndKeck (Gast)


Lesenswert?

Hallo Einhart,

Danke dass Du Dich meldest.
es kommt die Fehlermeldung "Runtime Error 13: Type mismatch"
Ich habe es mit unterschiedlichen Datentypen versucht.
Wenn ich die Variable "xa" nehme (String) erhalte ich keine 
Fehlermeldung.
Es wird aber kein (Druckbarer Wert) angezeigt.
Wie kann ich den "String" in eine Dezimalzahl umwandeln?

Vielen Dank im voraus!
Bernd

von Einhart P. (einhart)


Lesenswert?

Moin Bernd,

.Input liefert kein byte sondern ein Byte-Array. So sieht das bei einer 
meiner Anwendungen in einem Klassenmodul aus:

  objComm.InputMode = 1
.
.
.
  Dim baRcv() As Byte

  If objComm.InBufferCount > 0 Then
    baRcv = objComm.Input
.
.
.
Inputmode ist binary.

Msgbox baRcv(0)

sollte den Wert des ersten Zeichens zeigen.

Gruß
Einhart

von BerndKeck (Gast)


Lesenswert?

Hallo Einhart,

vieled Dank für den Tip, funktioniert jetzt so:

Private Sub MSComm1_OnComm()
Dim g As Byte
Dim xa As String
Dim y As Integer
Dim RcvField() As Byte
Select Case MSComm1.CommEvent
    Case comEvReceive
        RcvField = MSComm1.Input
        Text2.Text = Val(RcvField(0))
.
.
.

Tausend Dank!

LG
Bernd

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
Noch kein Account? Hier anmelden.