-         

Ergebnis 1 bis 4 von 4

Thema: Vb - Bascom -RS232

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2007
    Beiträge
    26

    Vb - Bascom -RS232

    Anzeige

    Hallo zusammen bin gerade am eine serielle übertragung vom vb zum rncotrol zu machen. KOmischerweise komme ich zu deisem Resultat
    (Ist für ne schrittmotoransteuerung in vb ) code vom rncotrol
    $regfile = "m32def.dat"
    ' bei Mega 16 $regfile = "m16def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000 'Quarzfrequenz
    $baud = 9600
    Dim X As Integer
    Dim Y As Integer
    Dim Ilinksschritt As Integer
    Config Porta.2 = Output
    Config Porta.3 = Output
    Config Porta.4 = Output
    Config Porta.5 = Output
    Links_a Alias Porta.2
    Links_b Alias Porta.3
    Links_c Alias Porta.4
    Links_d Alias Porta.5
    Ilinksschritt = 0
    Do
    Input "Zahl" , X
    If X > 0 Then
    Y = 0
    For Y = 1 To X
    Incr Ilinksschritt
    If Ilinksschritt > 4 Then
    Ilinksschritt = 1
    End If
    Select Case Ilinksschritt 'Schritt für Linken Motor
    Case 1:
    Links_a = 1
    Links_b = 0
    Links_c = 1
    Links_d = 0
    Case 2:
    Links_a = 1
    Links_b = 0
    Links_c = 0
    Links_d = 1
    Case 3:
    Links_a = 0
    Links_b = 1
    Links_c = 0
    Links_d = 1
    Case 4:
    Links_a = 0
    Links_b = 1
    Links_c = 1
    Links_d = 0
    End Select
    Waitms 10
    Next Y
    End If
    If X < 0 Then
    For Y = X To -1
    Incr Ilinksschritt
    If Ilinksschritt > 4 Then
    Ilinksschritt = 1
    End If
    Select Case Ilinksschritt 'Schritt für Linken Motor
    Case 1:
    Links_a = 0
    Links_b = 1
    Links_c = 1
    Links_d = 0
    Case 2:
    Links_a = 0
    Links_b = 1
    Links_c = 0
    Links_d = 1
    Case 3:
    Links_a = 1
    Links_b = 0
    Links_c = 0
    Links_d = 1
    Case 4:
    Links_a = 1
    Links_b = 0
    Links_c = 1
    Links_d = 0
    End Select
    Waitms 10
    Next Y
    End If
    Loop
    und der im vb

    Private Sub Command3_Click()
    MSComm1.Output = "12" + vbCrLf
    End Sub ( nur ein Teil davon)
    Die erste Zahl wird richtig eingelesen als zwölf und der Schrittmotor wird angesteuert doch eine zweite zahl (Private Sub Command2_Click()
    MSComm1.Output = "16" + vbCrLf) wird als null eingelesen. Weiss jemand warum? Mit dem Bascom eigenen terminal läuft es perfekt

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Ich mache immer ein eigenes Protokoll drum, welches Übertragungsfehler abfängt.
    Das sieht in etwa so aus:

    1. Startbyte (festgelegt, wenn dieses kommt, dann wird der Einganspuffer geleert, >127)
    2. Längenbyte(Gibt die Länge des Strings an)
    3. Daten
    4. Prüfbyte, wo das letzte Bit auf jeden Fall gelöscht ist (<12, damit es nicht irrtümlich als Startbyte erkannt wird)
    5. Passt alles wir ein "OK" zurückgesendet >fällt bei Einwegkommunikation weg

    Zum senden nehme ich Subs, welche das Protokoll automatisch generieren .
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Dein fehler ist, Du übergibst einen String mit den Zeichen "16" z.B.
    Der soll in eine Integer-Variable. Du hast nun zwei Möglichkeiten,
    entweder du konvertierst im Vorfeld Deinen Wert von String nach
    ASCII-Code, zerlegst deinen Integer-Wert in 2 Byte, ergo high und low-byte und überträgst sie separat im ascii-code, setzt sie per makeint wieder zusammen (klar, Overlayvariablen gehen auch),

    oder der Controller soll aus dem String einen
    Wert machen. Die passende
    Also erstmal ne String-Variable definieren

    dim tempstring as string * 5 z.B.

    dann den String abfragen

    input "wert", tempstring

    dann Typumwandlung

    x= val (tempstring)
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    20.11.2007
    Beiträge
    26
    hmm die zweite variante scheint schon mal nicht zu funktionieren teste mal noch dei andere .. das seltsame ist , dass die erste zahl erkannt wird nur die 2. 3. usw nicht ..

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •