- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: [gelöst] debounce und inputbin laufen nicht zusammen ???

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Hallo Papsi!

    Du musst mit ISCHARWAITING prüfen, ob ein neues Zeichen anliegt. Wenn nicht, dann darfst du nicht mit INPUTBIN danach fragen. Denn INPUTBIN wartet bis ein Zeichen kommt. Das ganze Programm bleibt also an dieser Stelle stehen. Somit dürfte auch klar sein, weshalb DEBOUNCE nicht funktioniert.
    Code:
    dim is_waiting as byte
    
       ...
       is_waiting = ischarwaiting(#1)
       if is_waiting = 1 then
          Inputbin #1 , A
          If A = 10 Then Goto XYZ
    
          If Relaisx1hoch = 0 And Relaisx2hoch = 0 And Relaisx3hoch = 0 And Relaisx4hoch = 0 Then
              Alleshoch = 0
              X13hoch = 0
              X23hoch = 0
              X33hoch = 0
              X43hoch = 0
          End If
    
          If Relaisx1runter = 0 And Relaisx2runter = 0 And Relaisx3runter = 0 And Relaisx4runter = 0 Then
              Allesrunter = 0
              X13runter = 0
              X23runter = 0
              X33runter = 0
              X43runter = 0
          End If
       end if
    
       Debounce Tasterx1hoch , 0 , X1hoch , Sub       'Tasterabfrage
       Debounce Tasterx1runter , 0 , X1runter , Sub
       ...
    Außerdem fehlt mir in diesem Programm irgendwie die OPEN-Anweisung.

    Wenn du langen Code zeigen möchtest, dann kannst du diesen in einen Paste-Service wie z.B. LodgeIt! http://paste.pocoo.org/ eingeben und uns dann den Link zu diesem Code posten.

    mfg
    Gerold
    :-)

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.08.2004
    Beiträge
    101
    Die Open Anweisung habe ich aus versehen mit gelöscht.

    Sieht so aus:
    Code:
       Open "COMB.1:2400,8,N,1,inverted" For Output As #1       ' PB.1 ist Sender
       Open "COMB.0:2400,8,N,1,inverted" For Input As #2       ' PB.0 ist Empfänger
    Die Sache mit ISCHARWAITING ist ja gerade mein Problem, das bekomme ich nicht hin!

    Das Inputbin läuft ja schon, nur bleibt er wie gesagt stehen...
    Harman Kardon HTPC
    Bild hier  

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.08.2004
    Beiträge
    101
    Wenn ich deinen Programmcode so einfüge meckert Basco rum:

    Code:
    Error : 328 Line : 206 Not valid for SW UART, in File ...
    Harman Kardon HTPC
    Bild hier  

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Hallo Papsi!

    Wenn ISCHARWAITING nicht funktioniert, dann könnte dir vielleicht INKEY weiterhelfen. Das liefert 0 zurück wenn nichts anliegt. Das hindert dich aber auch daran, ein 0 zu empfangen. Denn das könntest du nicht unterscheiden.

    mfg
    Gerold


    Code:
       ...
       A = Inkey(#1)
       if A > 0 then
          If A = 10 Then Goto XYZ
    
          If Relaisx1hoch = 0 And Relaisx2hoch = 0 And Relaisx3hoch = 0 And Relaisx4hoch = 0 Then
              Alleshoch = 0
              X13hoch = 0
              X23hoch = 0
              X33hoch = 0
              X43hoch = 0
          End If
    
          If Relaisx1runter = 0 And Relaisx2runter = 0 And Relaisx3runter = 0 And Relaisx4runter = 0 Then
              Allesrunter = 0
              X13runter = 0
              X23runter = 0
              X33runter = 0
              X43runter = 0
          End If
       end if
    
       Debounce Tasterx1hoch , 0 , X1hoch , Sub       'Tasterabfrage
       Debounce Tasterx1runter , 0 , X1runter , Sub
       ...

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.08.2004
    Beiträge
    101
    L Ä U F T . . .
    (mußte nur Inkey von #1 auf #2 ändern, da #2 der "Empfangsport" ist)

    Das ist die Lösung:

    Code:
    ...
       A = Inkey(#2) 
       if A > 0 then 
          If A = 10 Then Goto XYZ 
       End If

    !!! Super Danke !!!
    Harman Kardon HTPC
    Bild hier  

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.08.2007
    Ort
    Oberhofen im Inntal (Tirol)
    Alter
    49
    Beiträge
    377
    Falls du später nicht nur ein Zeichen empfangen musst, könntest du vielleicht so vorgehen (ungetestet):
    Code:
    dim buffer as string * 10
    dim buffer_byte(10) as byte at buffer overlay
    dim counter as byte
    
       ...
       buffer = string(0, 10)
       counter = 0
       do 
          A = Inkey(#1)
          if A > 0 then
              incr counter
              if counter > 10 then
                  ' Fehler
                  '...
              end if
              buffer_byte(counter) = A
          end if
       loop until A = 0
       
       if counter > 0 then
          'tu etwas mit dem buffer
          ...
       end if
       ...
    mfg
    Gerold

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    12.08.2004
    Beiträge
    101
    Ne - das reicht mir so...

    Damit kann ich dann die Sendersache weitermachen.

    PS
    Habe da dann noch was:
    https://www.roboternetz.de/phpBB2/viewtopic.php?t=37588
    Harman Kardon HTPC
    Bild hier  

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad