- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 4 von 4

Thema: Hexdezimal einlesen über serielle Schnittstelle?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.08.2005
    Beiträge
    5

    Hexdezimal einlesen über serielle Schnittstelle?

    Anzeige

    Praxistest und DIY Projekte
    Hallo!

    Ich versuche schon seit einiger Zeit folgendes Problem zu lösen:
    Eine CmuCam und ein Mega8 sind über die serielle Schnittstelle verbunden. Die CMUcam sendet hexdezimale Werte an den Mega8.

    Inkey dürfte da eigentlich nicht funktionieren, oder? Derzeit versuche ich mit folgendem Snippet zu arbeiten:

    Code:
    Dim A As String * 120
    Dim Myhex As String * 300
    Dim I As Word
    For I = 1 To 600
      If Ucsra.rxc = 1 Then
          A = A + ":" + Str(hexval(udr))
          Myhex = Myhex + "+" + Str(udr)
      End If
    Next
    
    Print A
    Print Myhex
    Diesen Code habe ich in einem Beispiel gefunden. Leider scheint er aber nicht die gewünschte Wirkung zu haben, da die ausgegebenen Werte eigentlich irgendwann ein 0xFE enthalten sollten, dies aber nicht tun. Sowohl bei google als auch hier im Forum habe ich trotz intensiver Suche nichts zu diesem Thema gefunden.

    Für Hinweise wäre ich extrem dankbar.

    Viele Grüße,
    C.

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich würd' mal folgendes probieren, bin aber kein CMU Cam Guru

    Code:
    DIM buf(164) as byte
    DIM rxchar as byte
    DIM ix as byte
    DIM tmp as byte
       
       do  
          If Ischarwaiting() = 1 Then                    ' if data-> workout
              Rxchar = Inkey()
              Select Case Rxchar
              Case &HFE:
                   ' start frame
                  ix = 0
              Case &HFD:
                  ' end frame
                  EXIT DO           
              Case Else:
                  incr ix
                  buf(ix) = rxchar
          End Select
        End If
       Loop
       for tmp = 1 to ix 
          rxchar = buf(tmp)
          print hex(rxchar);" ";
      next 
      print
    END
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.08.2005
    Beiträge
    5
    Hi!

    Vielen Dank für Deinen Rat - wie Du siehst, habe ich einige Zeit mit dem Herumprobieren verbracht. Leider scheint es so zu sein, daß inkey zwar Werte einliest, diese aber eigentlich keinen Bezug zur Realität haben.

    Kann es angehen, daß es Probleme gibt, weil die hexadezimal angeliefert werden und inkey das nicht richtig übernimmt? Ich bin inzwischen mit meinem Latein ziemlich am Ende, über Ideen irgendwelcher Art würde ich mich sehr freuen. :)

    Vielleicht gibt es noch eine Alternative zu inkey?

    Viele Grüße,
    ds

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    19.08.2005
    Beiträge
    5

    Nachtrag

    Hi!

    So, ich habe noch weiter gestöbert. Eines der Probleme wird sicherlich von ischarwaiting ausgelöst. Laut Handbuch gilt: "This makes it unusable to work with binary data that might contain the value 0". D.h. hier kann man damit nicht arbeiten.

    Es gibt anscheinend keine Lösung für mein Problem in Bascom. :/

    CU,
    ds

Berechtigungen

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

12V Akku bauen