Ankündigung

Einklappen
Keine Ankündigung bisher.

Crash nach if (!Pumpe_Version.equals(""))

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Crash nach if (!Pumpe_Version.equals(""))

    Hallo,

    ich kenne mich mit Java nicht wirklich gut aus weiß daher nicht ob dieser Befehl Konform ist (in C ist er es).

    Ich wollte innerhalb einer rule testen ob ein String leer ist.

    if (!Str.equals("")){
    sendCommand(Serial, "7#83#0}")
    Serial = ""
    }

    Nach Neustart mit start.bat gibt es einen Speicher BlueScreen wenn er das erste mal die rule abarbeitet, der PC muss neu gestartet werden. Nach dem ich diese Zeilen auskommentiert habe läuft alles nach Plan.

    Eigentlich sollte sowas nicht passieren.
    Werden in openhab keine Exceptions abgefangen? Weil wenn nicht ist das Programm nicht wirklich autonom einsetzbar.

    PS: Bin ansonsten begeistert von diesem Programm

    Gerry

    #2
    Hi,

    Zitat von gerrylenz Beitrag anzeigen
    Nach Neustart mit start.bat gibt es einen Speicher BlueScreen wenn er das erste mal die rule abarbeitet, der PC muss neu gestartet werden. Nach dem ich diese Zeilen auskommentiert habe läuft alles nach Plan.
    Eigentlich sollte sowas nicht passieren.
    Werden in openhab keine Exceptions abgefangen? Weil wenn nicht ist das Programm nicht wirklich autonom einsetzbar.
    Ein Bluescreen?!? Bei welcher Zeile wird der denn ausgelöst? Ich vermute mal beim sendCommand über die serielle Schnittstelle. Bisher habe ich nur "gute Erfahrungen" mit Fehlern in Rules gesammelt... auf Linux allerdings.

    Zitat von gerrylenz Beitrag anzeigen
    PS: Bin ansonsten begeistert von diesem Programm
    Ich auch - seit Monaten produktiv im Einsatz und einfach toll. Und der WAF erst

    Kommentar


      #3
      !!! Exakt !!!

      Habs grad nochmal getestet.
      Aber warum ? Kennst du die Antwort ?
      Eventuell wegen endlos Schleife?

      Gerry

      Kommentar


        #4
        Zitat von gerrylenz Beitrag anzeigen
        Aber warum ? Kennst du die Antwort ?
        Eventuell wegen endlos Schleife?
        Ich beziehe das mal auf serielle Schnittstelle

        Nun - war eine Vermutung "ins Blaue", weil das das hardwarenahste ist. Ein Fehler in der Regel wird abgefangen.

        Fehlen Rechte für die Schnittstelle? Ist diese richtig/funktionell definiert?
        Versuche einmal, erst die Schnittstelle funktionell zu bekommen - dann die Regel

        Grüße

        Kommentar


          #5
          Nein nein die Schnittstelle ist ok. Ich kann senden und empfangen.
          System ist Win 7 da braucht es keine Rechte.

          Mach ich eine Regel mit nem Push Button wird auch alles über die Serielle gesendet und Empfangen.

          Noch ne Idee?

          Kommentar


            #6
            Hmm also ich komm nicht weiter.

            Der Code sieht nun so aus.

            if ( item.state == Uninitialized ) {
            item.postUpdate( "" )
            }

            if ( item.state.toString.equals("") ) {
            println ( "Ist Leer" )
            sendCommand(Serial, "7#83#0}")
            RX_Serial = ""
            }

            Aber es kracht immer noch bei sendCommand(Serial, "7#83#0}").
            Mit einem PushButton und folgendem Code ist alles ok

            rule "Get Modul Info"
            when
            Item getInfo received command ON
            then
            sendCommand(Serial, "7#83#0}")
            RX_Serial = ""
            end

            Hat irgendjemand ne Idee warum und weshalb?

            Kommentar


              #7
              Hab es nun so gelöst

              rule "RX_TX_Serial on update"
              when
              Item Serial received update
              then
              if ( Str_Item.state == Uninitialized ) {
              Str_Item.postUpdate( "" )
              }
              end

              rule "Str_Item on update"
              when
              Item Str_Item received update
              then
              if ( Str_Item.state.toString.equals("") ) {
              println ( "Ist Leer" )
              sendCommand(RFM12_Serial, "7#83#0}")
              RX_Serial = ""
              }
              end

              Das funktioniert ohne Absturz.
              Scheinbar kann man in der Regel welches die Serielle Schnittstelle auswertet die selbige nicht benutzen.

              Gerry

              Kommentar


                #8
                Ein Bluescreen ist wirklich sehr ungewöhnlich - liegt dann auf jeden Fall nicht an openHAB bzw. Deinen Regeln (weil das ja alles nur in der JVM läuft), sondern ist vermutlich ein Bug in RXTX, der da unter gewissen Umständen zuschlägt und Windows aus dem Gleichgewicht bringt (was dann gleichzeitig auch noch ein Bug in Windows ist, denn RXTX sollte dazu gar nicht in der Lage sein...)

                Just my 2 cents,
                Kai

                Kommentar


                  #9
                  Zitat von kkreuzer Beitrag anzeigen
                  Ein Bluescreen ist wirklich sehr ungewöhnlich - liegt dann auf jeden Fall nicht an openHAB bzw. Deinen Regeln (weil das ja alles nur in der JVM läuft), sondern ist vermutlich ein Bug in RXTX, der da unter gewissen Umständen zuschlägt und Windows aus dem Gleichgewicht bringt (was dann gleichzeitig auch noch ein Bug in Windows ist, denn RXTX sollte dazu gar nicht in der Lage sein...)

                  Just my 2 cents,
                  Kai
                  Hallo,

                  bei gelegenheit teste ich das mal unter Linux.

                  Gerry

                  Kommentar

                  Lädt...
                  X