Ankündigung

Einklappen
Keine Ankündigung bisher.

Empfehlung RS485 - USB Adapter

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Hallo Makki,

    ich bin nun mittlerweile ein ganzes Stück weiter.
    Es ist mir nun gelungen ein funktionierendes Telegramm auf den Bus zu setzten. Das ganze habe ich zunächst ganz primitiv gemacht, indem ich das device öffne und ´drauf schreibe:

    open (BIN,'>', '/dev/usbserial-2-4')
    print BIN pack ('C', hex("02"));

    wie Du siehst, Dein Tipp mit pack war zielführend.

    Mein Telegramm sieht z.B. so aus:
    02 61 B0 02 02 64 FF 48 00

    Parallel lese ich die Schnittstelle nun in Anlehnung an das Transponderscript aus. Hier nun tritt folgendes Problem auf. (ohne icannon da er ansonsten gar nix mehr empfängt, oder möglicherweise auch kein Ende findet)

    Problem nun ist, dass häufig das erste Byte abgeschnitten wird, und spätestens nach dem 4. Byte das script wieder aufgerufen wird und die letzten 4 Bytes des Telegrams ausliest. (Telegrammlänge ist 8-9 Byte). Ab hier sind die ausgewerteten Bytes dann auch fehlerhaft.

    Wegen des fehlenden ersten bytes dachte ich nun an icannon, aber wenn ich dieses einsetzte, dann wird gar nix mehr ausgewertet.

    Ich habe nun alle beschreibungen der socat bzw. stty optionen durchgelesen, und steh jetzt leider mittlerweile auf dem Schlauch.

    Kannst Du hoch so einen hilfreichen Tipp geben?

    Gruß
    Arne

    Kommentar


      #17
      Gibt es ein "Satzende"-Zeichen ? 0x00 im beispiel oben, das gibt man dann dem socat als Trennzeichen mit, das ist das mit Abstand einfachste..

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #18
        Das ist tatsächlich das stop Bit, allerdings kann es auch mal sein, dass ein 00 innerhalb des Telegramms aufraucht.
        Ich muss jetzt aber mal gucken. Es könnte sein, das in diesem Fall das halbe Telegramm reicht. Nur die checksumme würde dann abgeschnitten werden.

        Ich habs jetzt mal probiert, aber so wie ich dachte ging´s nicht.

        Wenn ich Dich richtig verstehe, dann wolltest Du das stop-bit setzten, damit icanon eingesetzt werden kann.
        Wie setzte ich mit socat denn das stop-bit? mit stop=....
        Aber jetzt müsste ich das stop-bit vermutlich binär eingeben, oder interpretiert es ein 0x00 richtig?
        Jedenfalls hat bei dieser Methode alles was ich probiert habe nicht funkioniert. Mir kommts so vor, als würde socat durch icannon immer noch weiter "hören", ohne ein Ende zu finden....
        oder ist der Anfang das Problem?

        Was da ankommt sieht übrigens so aus:
        2010-10-28 07:22:59.818,2,Empfang 261b0,0s,
        2010-10-28 07:22:59.593,2,Empfang 801c7bfd,0s,

        bedeutet dann 02 61 b0 80...... Die 02 wird wie gesagt gerne mal verschluckt

        Kommentar


          #19
          stop-bit ist ein layer drunter Das muss zwar auch stimmen aber wenn Zeichen rauskommen passt das..

          Optionen: raw,b38400,cs8,icanon=1,eol=71

          Macht 38400 und 71 (Dezimal!) quasi als Zeilenende-Zeichen; damit (eol=0) sollte es klappenn..

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #20
            Das muss ich jetzt erstmal verstehen.
            b38400, damit er sauberer (schneller) ausliest?

            und was hat´s mit der 71 auf sich?

            Ich habs jedenfalls versucht, und leider kein positives Ergebnis. B38400 macht insofern Probleme, das ich auf das device nicht mehr wie bisher schreiben kann (mit open(...))
            Sezte ich die baudrate wieder auf 9600, dann geht das wieder, allerdings wird das plugin bei einkommendem Telegramm nicht mehr aufgerufen. (das sieht man ja an dem lezten Aufruf des scripts)

            Leider bin ich also nicht weiter.

            Ich solle evtl erstmal veruschen mein zu sendendes Telegramm auch über den Socket zu senden. Das ist erstmal ´ne Hausaufgabe für mich.

            Kommentar


              #21
              Nee, das war nur als Beispiel gedacht..
              Wenn das Teil 9600 hat natürlich b9600 (oder weglassen weil default) und eol=0

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #22
                dann ist ja gut, dann versteh ich die Welt wieder :-)

                So hatte ich das vorher auch schon ausproberit, nur leider wird bei den Einstellungen das Plugin bei eingehendem Telegramm nicht mehr aufgerufen....

                Kommentar

                Lädt...
                X