- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 7 von 7

Thema: PIC RS232 Verbindung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.08.2005
    Ort
    RP, Westerwald
    Beiträge
    50

    PIC RS232 Verbindung

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo Leutle!
    Ich habe aus "Hobbyistischen" Gründen ein PIC an die RS232 des PCs angeschlossen und
    bekomme von diesem mehrere Bytes (8 Stück) nacheinander geschickt.
    Diese befinden sich dann ja im Empfangspuffer der USART des PCs.
    Nun meine Frage:
    Wie bekomme ich die Einzelnen Bytes (im PC) auseinander um sie z.B. Variablen zuzuweisen??
    Ich habe schon ein Terminal Programm geschrieben, das mir die empfangenen Daten in einem Textfeld anzeigt (mit MSCOMM in VB).
    Ich weiß allerdings nicht wie ich sie getrennt und einzelnen Variablen zugewiesen bekomme.
    Ich wäre sehr dankbar wenn mir jemand weiterhelfen könnte!

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    naja, du kriegst ja afaik nen string rein. den kannst du doch bequem auseinandernehmen. versuch mal zwischen den einzelnen bytes nen sonderzeichen oder so zu übertragen, an dem du dich beim string-trennen orientieren kannst.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    03.09.2004
    Ort
    Hamburg
    Alter
    45
    Beiträge
    37
    Wenn du ein variables ByteArray an auf den Input von MsComm legst kanst du da dann die einzelnen Bytes (hoffe du überträgst 8 Bit und nicht 9)auslesen und zuweisen was immer du willst.

    Code:
    Dim echo As Variant
    .
    .
    .
    echo = MSComm1.Input
    Das sollte dir ein Array von deiner inputlänge geben. Wenn dein Eingangspeicher 10 Byte ist, dann sind es 0-9! Wichtig ist das MsComm auf INPUTMODEBINARY gesetzt ist. Mit echo(0), echo(1) und so weiter kannst du dann drauf zugreifen. meld dich bei weiteren Fragen.

    Viel Erfolg

    So long...

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    08.08.2005
    Ort
    RP, Westerwald
    Beiträge
    50
    Danke Goblin, danke Tom, werde beides jetzt mal ausprobieren

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.08.2005
    Ort
    RP, Westerwald
    Beiträge
    50
    Hallo Tom,
    ich hab das jetzt so gelöst: (mit viel Online_Hilfe)

    Private Sub MSComm1_OnComm()

    If MSComm1.CommEvent = comEvReceive Then
    Data = MSComm1.Input
    Data1 = AscB(Mid$(Data, 1, 1))
    Data2 = AscB(Mid$(Data, 2, 1))
    .
    .
    .
    End If
    Das funktioniert aber nur wenn ich MSCOMM auf InputmodeText stelle!?

    Bei Deiner Variante bekomme ich den Fehler "Type unverträglich"

    Dim Data1 As Variant
    Dim echo AS Variant
    ...
    Private Sub MSComm1_OnComm()

    If MSComm1.CommEvent = comEvReceive Then

    echo = MSComm1.Input
    Data1 = echo(0)

    mach ich da was falsch, oder muss da noch was bei?

    ; nicht einfach für ein VB-Anfänger auf der Welt

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    03.09.2004
    Ort
    Hamburg
    Alter
    45
    Beiträge
    37
    Data1 = echo(0) ist nicht verträglich, wenn Data vom Typ Variant ist.

    Dim Data1 as Integer sollte klappen.

    Eine möglichkeit ist das du Data zu einer integer oder double Zahl machst, je nachdem wie groß deine rechnung wird. In echo() ist nur die Zahl gespeichert. Also nicht 11001100, sonder eben die Integer von 204. So kannst du dann damit rechnen.

    Data = echo(0) + 5* echo(1)

    Viel Erfolg.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    08.08.2005
    Ort
    RP, Westerwald
    Beiträge
    50
    Ja, jetzt funktionierts…und ist einfacher. Vielen Dank für die Hilfe!!!
    PS. Das größte Leid, ist das was man sich selbst andeit!

Berechtigungen

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

LiFePO4 Speicher Test