Ankündigung

Einklappen
Keine Ankündigung bisher.

connecttcp

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

    connecttcp

    Hallo Zusammen,

    laut Handbuch liefert die Funktion connecttcp den Status ihrer Verarbeitung zurück:
    - bei Erfolg = 0
    - bei andauernder Verarbeitung = 1
    - bei Fehler = 2
    - bei Fehler, wenn eine entsprechende Verbindung schon besteht = 3
    - bei Fehler, da zu viele Verbindungen in Betrieb sind = 4
    - bei automatisch getrennter Verbindung nach timeout = 5
    - nach vom Anwender mit closetcp getrennter Verbindung = 6

    Es gibt in der Praxis aber auch den Rückmeldewert 7.

    Wofür steht dieser Wert?

    Viele Grüße

    Michael

    #2
    Hallo Michael / Steffi,

    könnt Ihr etwas zu der 7 als Rückgabewert sagen?

    Aufgrund der holprigen Kommunikation des Google Makros und meines LAN Wärmepumpen Gateways, möchte ich gerne die Rückgabewerte in den Code einfließen lassen.

    Bernd, hat mir dazu schon einen sehr guten Prozess bereitgestellt, aber ich bekomme die meiste Zeit nur den Rückgabewert 7. Damit läuft der bisherige Code in eine Sackgasse.

    Viele Grüße

    Michael

    Kommentar


      #3
      Zitat von Jambala Beitrag anzeigen
      Hallo Michael / Steffi,
      könnt Ihr etwas zu der 7 als Rückgabewert sagen?
      Hier laut Entwicklerdoku:
      Die TCP-Verbindung wurde vom Anwendungsprogramm getrennt = 7
      also ein Closetcp
      EDIT: Also in der Übersicht
      - bei Erfolg = 0
      - bei andauernder Verarbeitung = 1
      - bei Fehler = 2
      - bei Fehler, wenn eine entsprechende Verbindung schon besteht = 3
      - bei Fehler, da zu viele Verbindungen in Betrieb sind = 4
      - bei automatisch getrennter Verbindung nach timeout = 6
      - nach vom Anwender mit closetcp getrennter Verbindung = 7
      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
      Enertex Produkte kaufen

      Kommentar


        #4
        Vielen Dank Michael

        Kommentar


          #5
          Zitat von enertegus Beitrag anzeigen
          - bei Fehler, da zu viele Verbindungen in Betrieb sind = 4
          Da kommt jetzt automatisch die Frage: Wieviele Verbindungen sind denn gleichzeitig erlaubt?

          Gruß,
          Bernd

          Kommentar


            #6
            Zitat von bmx Beitrag anzeigen
            Da kommt jetzt automatisch die Frage: Wieviele Verbindungen sind denn gleichzeitig erlaubt?
            Das was das Linux und der Speicher erlaubt. Einige Tausend wären das wohl schon.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Zitat von enertegus Beitrag anzeigen
              Das was das Linux und der Speicher erlaubt. Einige Tausend wären das wohl schon.
              Ok, dann ist das ja gut. Sonst regt sich Marc gleich über max. 20 Verbindungen auf die willkürlich begrenzt wurden ;-)

              Dann könnte man faktisch davon ausgehen, das das im Alltag nicht passieren sollte solch einen Status zu bekommen.

              Gruß,
              Bernd

              Kommentar


                #8
                Zitat von bmx Beitrag anzeigen
                Ok, dann ist das ja gut. Sonst regt sich Marc gleich über max. 20 Verbindungen auf die willkürlich begrenzt wurden ;-)
                Da würden mir eher Zahlen wie: 31, 40, 100, 1400 oder 350/15 in den Sinn kommen
                BR
                Marc

                Kommentar


                  #9
                  Zitat von enertegus Beitrag anzeigen
                  Die TCP-Verbindung wurde vom Anwendungsprogramm getrennt = 7
                  also ein Closetcp
                  EDIT: Also in der Übersicht
                  - bei Erfolg = 0
                  - bei andauernder Verarbeitung = 1
                  - bei Fehler = 2
                  - bei Fehler, wenn eine entsprechende Verbindung schon besteht = 3
                  - bei Fehler, da zu viele Verbindungen in Betrieb sind = 4
                  - bei automatisch getrennter Verbindung nach timeout = 6
                  - nach vom Anwender mit closetcp getrennter Verbindung = 7
                  Vielleicht noch einmal ergänzen: wofür steht die 8?

                  Kommentar


                    #10
                    Zitat von bmx Beitrag anzeigen
                    Vielleicht noch einmal ergänzen: wofür steht die 8?
                    Hast Du so einen Rückgabewert?
                    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                    Enertex Produkte kaufen

                    Kommentar


                      #11
                      Ja. (würde ich sonst fragen? SCNR)
                      Außerdem muß ich nach dem Connect erstmal wieder ein schließen abwarten, bevor ein neuer connect und sendtcp zu einem Ergebnis führt. :-(

                      IMHO war das auch schon mal ein Thema im Zusammenhang mit dem Google-Wetter-Makro

                      Gruß,
                      Bernd

                      Kommentar


                        #12
                        Push!

                        Warum hat eigentlich sendtcp keinen Rückgabewert?

                        Gruß,
                        Bernd

                        Kommentar


                          #13
                          Aktualisiert: Rückgabewerte bei connecttcp():

                          - bei Erfolg = 0
                          - bei andauernder Verarbeitung = 1
                          - bei Fehler = 2
                          - bei Fehler, wenn eine entsprechende Verbindung schon besteht = 3
                          - bei Fehler, da zu viele Verbindungen in Betrieb sind = 4
                          - bei automatisch getrennter Verbindung nach timeout = 6
                          - nach vom Anwender mit closetcp getrennter Verbindung = 7
                          - nach von der Gegenseite getrennter Verbindung = 8

                          Kommt dann wohl in die nächste Doku.

                          Gruß,
                          Bernd

                          Kommentar


                            #14
                            Jaja, alter Thread, aber ich hole ihn noch mal vor...
                            Ich bekomme bei meiner Verbindung zum Raspberry immer die 1 angezeigt - wieso weiß ich nicht (raspi ist über telnet auf jedenfall noch unter der gleichen adresse erreichbar und nimmt neue Verbindungen entgegen) und vielleicht weiß jemand wie ich auch dem Zustand rauskommen kann?

                            Vielen Dank

                            Code:
                            TCP=5
                            tcpRcvString=$$c1400
                            tcpSendString=$TestString$c1400
                            if PingToRaspy then TCP=connecttcp(4711u16,192.168.2.28) endif
                            if !PingToRaspy then TCP=closetcp(4711u16,192.168.2.28) endif
                            
                            
                            if after (TCP==0,1200u64) then sendtcp (4711u16,192.168.2.28,tcpSendString) endif
                            
                            if event(readtcp(4711u16,192.168.2.28,tcpRcvString)) then LogTxtHaus=$TCP:$+tcpRcvString endif
                            
                            if (TCP==0)then LogTxtHaus=$TCP Connected to Raspberry$ endif        
                            if (TCP==1)then LogTxtHaus=$TCP Raspberry in execution$ endif
                            if (TCP==2)then LogTxtHaus=$TCP Fail connect to Raspberry$ endif
                            if (TCP==3)then LogTxtHaus=$TCP Fail existing connection to Raspberry$ endif
                            if (TCP==5)then LogTxtHaus=$TCP Disconnected from Raspberry$ endif

                            Kommentar


                              #15
                              Dein Code ist schon sehr puristisch.

                              Ich empfehle Dir die Verwendung eines kontrollierten Prozess.

                              Du mußt nur noch die Startbedingung mit einem Event verknüpfen (GA, cycle() usw.).


                              // Variablen definieren

                              Raspy_Starbedingung = AUS
                              Raspy_Init = after(systemstart() == EIN, 5000u64)

                              Raspy_IP = 192.168.2.28u32
                              Raspy_Port = 4711u16

                              Raspy_Send_String = $$c1400
                              Raspy_Receive_String = $$c1400
                              Raspy_RawData = $$c1400
                              Raspy_ErrorString = $Fehlerfrei$

                              Raspy_TCP_Error_Counter = 0u08
                              Raspy_TCP_ConnectionState = 6u08 /* Inititalisieren mit erlaubtem Wert aber geschlossener TCP Verbindung */
                              Raspy_Query_State_Idle = 0u08 /* Kein TCP Request aktiv */
                              Raspy_Query_State_QueryStarted = 1u08 /* TCP Request wurde gesendet, auf Antwort warten */
                              Raspy_Query_State_QuerySuccess = 2u08 /* TCP Request wurde erfolgreich beantwortet, TCP Verbindung schließen */
                              Raspy_Query_State = Raspy_Query_State_Idle

                              // TCP Verbindung öffnen, sofern sie nicht bereits hergestellt wird oder bereits besteht

                              if Raspy_Init == EIN \\
                              or Raspy_Startbedingung == EIN \\
                              and Raspy_TCP_ConnectionState >= 2u08 then \\
                              Raspy_TCP_ConnectionState = connecttcp(Raspy_Port, Raspy_IP) \\
                              endif

                              // Wenn TCP Verbindung besteht und Startfreigabe besteht Anfrage senden

                              if change(Raspy_TCP_ConnectionState) \\
                              and Raspy_TCP_ConnectionState == 0u08 then \\
                              sendtcp(Raspy_Port, Raspy_IP, Raspy_Send_String); \\
                              Raspy_Query_State = Raspy_Query_State_QueryStarted \\
                              endif

                              // Fehlerhafte TCP Verbindung verzögert erneut aufbauen

                              if change(Raspy_TCP_ConnectionState) \\
                              and Raspy_TCP_ConnectionState >= 2u08 \\
                              and Raspy_TCP_ConnectionState <= 6u08 \\
                              and Raspy_TCP_Error_Counter <= 5u08 then \\
                              Raspy_Init = EIN \\
                              endif

                              // Empfang der TCP Daten

                              if event(readtcp(Raspy_Port, Raspy_IP, Raspy_RawData)) \\
                              and Raspy_TCP_ConnectionState == 0u08 \\
                              Raspy_Receive_String = Raspy_RawData; \\
                              Raspy_Query_State = Raspy_Query_State_QuerySuccess; \\
                              endif

                              // TCP Verbindung schliessen

                              if after(Raspy_Query_State == Raspy_Query_State_QuerySuccess, 1000u64) \\
                              and (Raspy_TCP_ConnectionState == 0u08 \\
                              or Raspy_TCP_ConnectionState == 1u08) then \\
                              closetcp(Raspy_Port, Raspy_IP); \\
                              Raspy_TCP_ConnectionState = 7u08; \\
                              Raspy_Query_State = Raspy_Query_State_Idle \\
                              endif
                              Zuletzt geändert von Jambala; 28.04.2015, 08:37.

                              Kommentar

                              Lädt...
                              X