Ergebnis 1 bis 7 von 7

Thema: Auswerten von POCSAG-Meldungen mit mehr als 145 Zeichen?

  1. #1
    Registriert seit
    19.12.2012
    Beiträge
    170

    Auswerten von langen POCSAG-Meldungen?

    Hallo,

    ich habe festgestellt, dass sich die POCSAG-Text-Auswertung im monitord auf 145 Zeichen beschränkt. Ich habe bereits im Sourcecode nach einer Ursache gesucht. Dabei fand ich in der Datei MonitorModulePocsag.h ein Char-Array mit einer Länge von 128 Zeichen.
    Daraufhin habe ich die Arraylänge einfach mal auf 256 erhöht. Dann wurden Meldungen mit mehr als 145 Zeichen zwar dekodiert, das Ergebnis war jedoch eine Zeichenfolge ohne jeglichen Sinn. Meldungen mit weniger als 145 werden nach wie vor korrekt ausgewertet.

    Hat vielleicht noch jemand einen Idee?
    Geändert von matt (15.02.2013 um 14:22 Uhr)

  2. #2
    Registriert seit
    09.04.2008
    Beiträge
    145
    Gibts hier was neues?

  3. #3
    FlMi-14 Gast
    Das mit dem Array habe ich mir auch mal angeschaut, kann es aber auch logisch schon nicht sein: wenn das Array 128 lang ist, wieso werden dann bis zu 144 korrekt dekodiert? Ich habe da mal einen Bekannten drauf angesetzt, vielleicht findet der ja was. Ansonsten gibts' (worst-case-szenario) den multimon-ng, im Notfall muß man den dann halt um SQL erweitern oder (habe ich schon in Planung) per Pipe und PHP das ganze in die bis jetzt vom MonitorD gefütterte Datenbak zaubern.

    Aber wir gehen mal davon aus das der "Fehler" im MonitorD gefunden und behoben werden kann. Nur schade das sich keiner der Entwickler auf eMails meldet.

  4. #4
    FlMi-14 Gast
    Wie es aussieht haben wir den Fehler (oder besser: die zwei) gefunden:

    In der MonitorModulePocsag.h muss folgendes geändert werden:
    Zeile 75: die Länge des char-Arrays "buffer" entsprechend erhöhen - ich habe 512 gewählt
    Zeile 72: die Variablendefinition "numnibbles" löschen und anschließend neu definieren - ich habe daraus ein "unsigned int" gemacht

    ein "unsigned char" kann als Maximalwert 255 speichern, bei 256 gibt es einen Überlauf. Diese Variable zählt den Buffer hoch und zwar in Halbbytes, also Erhöhung um zwei pro Stelle von Buffer.
    "buffer" beinhaltet den dekodierten POCSAG-Text (7bit-ASCII, daher können mit 128 Stellen 146 Zeichen gespeichert werden).
    Wenn man jetzt nur "buffer" vergrößert kommt es zum Zählerüberlauf und damit zu der kryptischen Auswertung. Passt man jetzt noch die Zählervariable "numnibbles" entsprechend an (das die größer als 255 werden kann und damit mehr als 146 Zeichen verarbeiten kann), dann klappt es - darauf deuten die ersten Tests hin und es ist auch plausibel.

    Ich werde das jetzt nochmal eine Woche lang testen und dann nochmal Bericht erstatten.

  5. #5
    Registriert seit
    11.12.2001
    Beiträge
    1.008
    @All:

    Die Änderungen (Erweiterung auf 256 Bytes buffer, Counter von unsigned char -> unsigned int) sind im svn eingepflegt. Falls also andere auch mal diese Korrektur testen will: sind im aktuelle trunk (457) drin.

  6. #6
    Registriert seit
    09.04.2008
    Beiträge
    145
    Sauber, Vielen Dank an Markus. Habe es gerade auf meimer Umgebung getestet, funktioniert!

  7. #7
    Registriert seit
    15.11.2007
    Beiträge
    213
    Zitat Zitat von Buebchen Beitrag anzeigen
    @All:

    Die Änderungen (Erweiterung auf 256 Bytes buffer, Counter von unsigned char -> unsigned int) sind im svn eingepflegt. Falls also andere auch mal diese Korrektur testen will: sind im aktuelle trunk (457) drin.
    Danke :)!

    Martin

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

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