Beiträge von Ronson1909

    versuch mal beim linken -L /opt/lib/ -liconv anzugeben. beim compilieren mit -I den Pfad zum 'richtigen' iconv header


    besser wäre wenn es automatisch geht, das könntest du ggf. erreichen wenn es nicht unter opt sondern /usr/local/lib bzw. /usr/local/include installiert ist.


    Hast du auch zwei iconv Header oder nur die zusätzliche lib? Den Lib Suchpfad für den linker (und den Laufzeit-Loader) in /etc/ld.so.conf erweitern, danach ldconfig aufrufen, ggf mit -v dann siehst du was er macht

    Ich hab Deinen Kommentar eben erst gelesen, bin aber währenddessen selbst auf die Lösung gekommen, die Deinen Anmerkungen weitestgehend ähnelt:


    Zunächst hatte ich eine Anfrage (https://github.com/Entware-ng/…32#issuecomment-275947129) in dem Projekt gestellt, aber erfolglos, da sie sagten, dass die native Kompilierung nicht wirklich supported ist.
    Aber dennoch fand ich dann die Lösung: Das wesentliche Problem war wirklich das Thema Header für iconv. Ich vertraute da voll den mitgelieferten Headern. Als ich dann den Header in den Quellen der libiconv verwendete (https://github.com/Entware-ng/…iconv/src/include/iconv.h) und damit den "mitgelieferten" iconv Header ersetzte (ich wählte also 2a aus meiner Antwort auf https://github.com/Entware-ng/…32#issuecomment-275947129), zusätzlich noch -liconv als Compiler Switch ergänzte, funktionierte es.


    Fazit: Ich muss nur eine Ergänzung am Makefile machen und schon funktioniert auch die Charset-Konvertierung auf meiner QNAP TS-219 II !!! Dafür hab ich nun ziemlich lang gebraucht, aber besser spät als nie. Vielen Dank für Deinen/Euren Support.

    Geht es wenn du den p4d mit "p4d -n -t" an der Konsole im selben Environment wie dein Test Prog laufen lässt?

    Genau so hab ich es probiert und sehe dort die Warnungen.


    Ich bin bereits ein paar Schritte weiter. Ich konnte durch ein paar weitere Debug-Zeilen den Fehler auf iconv_open eingrenzen und dort kommt als Fehler EINVAL zurück. Ferner konnte ich herausfinden, dass es an der Art und Weise der Kompilierung liegt. Mit dem make von p4d werden u.a. (über mysql_config) die Optionen -Wl,-rpath,/opt/lib -Wl,--dynamic-linker=/opt/lib/ld-linux.so.3 ergänzt. Diese sind aber laut https://github.com/Entware-ng/…g-gcc-(native-compilation) auch notwendig (und ich hab es ohne diese probiert, dann geht das Kompilieren nicht). Wenn ich mit diesen Switches mein Mini-Programm kompiliere geht es auch nicht mehr.


    ldd sagt:

    Bash
    ldd ./a.out
            libstdc++.so.6 => /opt/lib/libstdc++.so.6 (0xb6da3000)
            libm.so.6 => /opt/lib/libm.so.6 (0xb6cef000)
            libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0xb6cd4000)
            libc.so.6 => /opt/lib/libc.so.6 (0xb6b90000)
            /opt/lib/ld-linux.so.3 (0xb6f0c000)


    Er nutzt also die iconv Implementierung in libc (wenn ich richtig recherchiert habe hat libc eine iconv Implementierung). Die macht also offenbar ein Problem. Hat jemand eine Idee, wie man das herausfinden kann oder wie man es löst?


    Es gibt auch ein Package libiconv bei Entware-ng, das ich installiert habe. Vielleicht ist das die Lösung. Das Problem ist nur, ich weiß nicht, wie ich dem Compiler mitteilen kann, dass er dieses nutzen soll. Anderes Header File? Wo bekomme ich das her (auf https://github.com/Entware-ng/…g-gcc-(native-compilation) ist ein Link to header Dateien die ich nutzen "muss"). Oder eine Compiler/Linker Switch?


    Das Kommandozeilentool iconv nutzt libiconv, aber wie das zustande kam weiß ich nicht:

    Bash
    ldd /opt/bin/iconv
            libiconv.so.2 => /opt/lib/libiconv.so.2 (0xb6e22000)
            libc.so.6 => /opt/lib/libc.so.6 (0xb6cde000)
            /opt/lib/ld-linux.so.3 (0xb6f3a000)


    Wird man da vielleicht aus dem Entware Package von libiconv schlauer? Ich erkenne das nicht: https://github.com/Entware-ng/…294/package/libs/libiconv

    Wenn das ohne Fehlermeldung geht sollte es auch mit dem p4d klappen:


    echo "xxxxx" | iconv -f "ISO8859-1" -t "UTF-8"

    Zunächst mal: iconv musste ich installieren, das führte noch zur Installation vom Paket libcharset. Das Paket libiconv-full war bereits installiert (nur dass klar ist, dass es zum Zeitpunkt des make auch da war, falls das ein Fehler sein könnte; ich habe auch nochmal make clean, make, make install aufgerufen):

    Bash
    # opkg status libiconv-full
    Package: libiconv-full
    Version: 1.11.1-3
    Depends: libc, libssp, librt, libpthread
    Status: install ok installed
    Architecture: armv5soft
    Installed-Time: 1484687201 (entspricht 17.01.2017 - 22:06:41)


    Ich hab es dann so getestet: Ich habe mit Notepad++ eine Textdatei in ISO8859-1 geschrieben. Die Ausgabe der Datei in Putty hat daher einen falsch dargestellten Umlaut. Die Konvertierung mit iconv nach UTF-8 ist dann erfolgreich.

    Bash
    # cat libiconv.txt
    ▒bergangsbetrieb
    # cat libiconv.txt | iconv -t "UTF-8" -f "ISO8859-1"
    Übergangsbetrieb

    Dennoch funktioniert es nicht in p4d.


    Ich habe auch noch ein Minimal C Programm erstellt (sorry, ich kann zwar ein bisschen C und C++, aber eigentlich besser Java, deswegen sieht es vielleicht grauenhaft aus), das einmal hin- und herkonvertiert. Es müsste also grundsätzlich gehen:




    Output:



    Bash
    # ./a.out
    Ü
    Success!
    Success!
    Ü


    Weitere Ideen?

    Zunächst Danke Euch beiden:

    Zum Thema Verlängerung

    Auch zum Thema Verlängerung

    Ich kann jetzt endlich sagen, dass es nicht an der Verbindung oder dem USB Kabel oder dem Code an sich lag.


    Ganz tricky: Auf dem NAS läuft (obwohl ich sowas gar nicht nutze) ein Dienst für USV (unterbrechungsfreie Stromversorgung). Der Dienst checkt wohl auch den COM Port nach Signalen vom USV, ob Stromausfall ist, um dann gezielt runterzufahren. Ich kam darauf, dass vielleicht jemand anders reinfunkt, als ich zwischendurch die Meldungen "Resource unavailable" sah. Nachdem ich den Verursacher mit lsof rausgefunden und eliminiert hatte, läuft es nun. Die Autostart Skripte hab ich auch auf die NAS Gegebenheiten (Entware-ng) anpassen können.


    Das (hoffentlich) einzige und letzte Problem sind Meldungen wie
    "Warning: Converting of charset failed [Aschebox voll, bitte entleeren]"


    Sichtbar ist das vor allem auf der Hauptseite, wenn dann bei Betriebsmodus z.B. nicht "Übergangsbetrieb" dargestellt wird. Aber vielleicht gibt es auch woanders Probleme !?


    Was kann man machen?


    Den export hier mache ich, aber das wirkt nicht:

    Bash
    export LC_TIME="de_DE.UTF-8"

    Dieser Export macht eher Probleme, deswegen hab ich ihn auskommentiert:


    Bash
    #export TZ=CET



    locale ist (wie weiter oben beschrieben mit zwei Warnungen) erstellt worden:


    Bash
    # locale -a
    C
    de_DE.utf8
    en_US.utf8
    POSIX

    Ich habe in der aktuellen Version etwas angepasst das die Endlosschleife weg sein sollte. Kannst ja mal testen.

    Hab ich probiert aber hat leider keine Veränderung gebracht.


    er hat auf jedenfalls Probleme Daten von der Heizung zu lesen, das tty Device ist wichtig konfiguriert und der Usb/Serial Konverter wird von dem 'SAN' richtig erkannt?


    Wie kann ich das prüfen? Ich denke, grundsätzlich ja. Hier ein paar Outputs dazu:



    Kann es irgendwie noch an den Kabeln liegen? Beim Raspberry hab ich einen "LogiLink AU0034 FTDI" und ein ca. 1,8 m Nullmodemkabel im Einsatz. Der USB Adapter ist übrigens ein anderer als der, mit dem ich bis vor ein paar Wochen auch Probleme am Raspberry hatte (hatte dazu auch gepostet). Bei der Verbindung zum NAS brauche ich noch ca. 1 Meter mehr, den ich mit der USB Verlängerung überbrückt habe der beim USB Adapter dabei war. Brauche ich ein besser geschirmtes? Empfehlungen für eine gute USB Verlängerung oder ein besseres Nullmodemkabel?


    Welche Entfernungen überbrückt ihr mit den Kabeln für p4d problemlos?


    Außerdem noch ein Hinweis:


    Wenn ich in p4d.conf einen falschen mysql Server eintrage, funktioniert es natürlich nicht. Aber auch dann kommt es zu einem Segmentation fault. Ein grundsätzliches Problem unabhängig von der seriellen Verbindung scheint da zu bestehen, oder? Hier der Trace dazu:


    p4d_mysql.txt

    Hallo zusammen,


    auf einem Raspberry Pi funktioniert es wunderbar, aber ich möchte p4d gerne auf einem NAS des Typs QNAP TS-219P II zum Laufen bekommen. Grund ist, dass das NAS eh in der Nähe der Heizung steht und 24/7 läuft und ich gerne den Raspberry für andere Zwecke freibekommen würde.


    Zunächst hatte ich Optware/Ipkg installiert und es dort nach ein paar Problemen geschafft, p4d zu kompilieren und zum Laufen zu bekommen. Leider stürzte p4d entweder nach wenigen Sekunden, spätestens jedoch nach ca. 20-30 Sekunden mit einem "segmentation fault" ab.


    Da Optware/Ipkg nicht mehr gewartet wird und ich daher die Vermutung hatte, dass vielleicht irgendwelche veraltete Versionen (z.B. nur mysql 5.0 drauf) nicht kompatibel mit p4d sein könnten, habe ich den Nachfolger Entware-Ng entdeckt (z.B. mysql 5.1) und stattdessen installiert. Dort gestaltete sich jedoch die Kompilierung deutlich komplexer, da dev Pakete grundsätzlich fehlen. Dadurch fehlten mir mysql_config und xml2-config. Über einen Cross Compiler konnte ich diese schließlich auf das NAS bringen und nach ein paar weiteren Problemen letztendlich auch erfolgreich kompilieren.


    Doch auch diese Variante führte zum selben Problem: Segmentation fault


    Zuletzt dachte ich noch an den Hinweis: "de_DE.UTF-8 is required as language package"


    In der Tat fehlte dies auf dem QNAP. Ich versuchte es zu installieren (im Wesentlichen mit der de_DE Datei eines Raspberry PI und nach dieser Anleitung http://web.archive.org/web/201…p.com/wiki/Country_Locale ). Dies führte zu folgendem Output:


    Bash
    [~] # localedef -c -f UTF-8 -i de_DE de_DE.UTF-8
    de_DE:79: LC_COLLATE: syntax error
    de_DE:84: LC_COLLATE: empty category description not allowed

    Aber letztlich ist die locale wohl installiert:



    Aber auch das ändert das Problem nicht.


    Habt ihr irgendeinen Anhaltspunkt, was das Problem ist und wie man es beheben kann?

    nein, ich meine das Raspberry......nicht die aktuelle Version Raspbian Jessi, sondern die ältere wheezy...und dann auf den upgrade Befehl verzichten, sonst wird aktualisiert. Nur so lief es bei mir stabil...mit dem aktuellen Betriebssystem gabs immer wieder Probleme unterschiedlichster Art

    Vielen Dank. Hab tatsächlich Jessie drauf. Kann das jemand bestätigen, dass es mit Jessie und p4d Probleme gibt, bevor ich das probiere?

    Hallo zusammen,


    ich habe einen Raspi 3 mit USB Com Anschluss und bei meiner Fröling P4 p4d im Einsatz. Vom Prinzip alles gut. Aber alle paar Tage, manchmal schon nach ein paar Stunden, scheint sich p4d aufzuhängen: Es werden keine Mails mehr versendet, das Webinterface lädt nicht mehr oder erst nach sehr langer Zeit (dann steht als Datum offenbar der Zeitpunkt wann es zuletzt funktionierte). Es hilft nicht, p4d oder gar den Raspi neu zu starten. Auch nicht, den USB Stecker des USB Com Anschlusses aus- und wieder einzustecken. Die (meiner Meinung nach) einzige Lösung ist, den COM Steckers des USB-Com-Anschlusses direkt an der P4 abzutrennen und nach einigen Sekunden wieder anzustecken. Dann funktioniert es in der Regel auch wieder ohne weitere Aktionen (kein Neustart o.ä,).


    Meine Fragen nun: Hat das Problem jemand anders auch, woran liegt es, wie kann man es lösen?


    Zusatzinfos:

    • Ich habe folgenden USB Com Anschluss im Einsatz:Ich habe folgenden USB Com Anschluss im Einsatz:


      Ugreen 1m USB auf RS232 Seriell Adapter Konverter Kabel/USB-Seriell USB - A/ Stecker - DB9 Serie mit FTDI Chipset/Vergoldete Kontakte
      https://www.amazon.de/dp/B00QU…_em_r_mt_dp_18njybT5EWPA5

    • Wenn ich
      p4d -n -t
      aufrufe kommt
    Code
    Opening '/dev/ttyUSB0' succeeded!
    Checking state ...
    Read word failed, aborting
    Closing io device
    Error reading serial interface, repopen now!
    Opening '/dev/ttyUSB0' succeeded!
    Checking state ...
    Read word failed, aborting
    Closing io device
    Error reading serial interface, repopen now!

    usw.



    Danke für Euer Feedback und Eure Hilfe.


    Grüße, Christian