- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 6 von 6

Thema: Polling???

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    39
    Beiträge
    366

    Polling???

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    hat einer von euch vielleicht eine idee wie ich in meinem code eine art "polling" einbauen kann?

    mein mc sendet eine anforderung und wartet auf eine antwort, nur kann es auch sein, dass er keine antwort kriegt. Dann soll er 'incr Adr' und die routine von vorne starten.


    hab jezt schon sehr viel ausprobiert von interrupts bis ischarwaiting, aber irgendwie funzt es nicht.

    Code:
    Sub Wr_sende
       Gosub Crc
       Gosub Wr_inits
       Printbin Wr_pakets(1) ; 10                               'Paket wird gesendet
       Return
    End Sub Wr_sende
    
    
    
    'Antwort von Wr empfangen
    Sub Wr_empfange
      ' Call Wr_inite
       Inputbin Wr_pakete(1) , 8                                'Bytes werden eingelesen
       Gosub Mc1_sende
       Return
    End Sub Wr_empfange
    
    
    
    'Statusabfrage
    Sub Wr_getstate
       Value = 1
       Wr_anzahl = Wr_anzahl + 1
       Adr = Wr_anzahl
    
       For Adr = 2 To Wr_anzahl
    
       Command = 50                                             'Command für Statusabrfrage
    
       Adr = Adr
       Command = Command
       Par1 = 000
       Par2 = 032
       Par3 = 032
       Par4 = 032
       Par5 = 032
       Par6 = 032
       Par7 = Bcclo
       Par8 = Bcchi
    
          '//UNTERPROGRAMME
             Gosub Wr_inits
             Gosub Wr_sende
             Gosub Wr_empfange
             Wait 3
       Next Adr
    
       If Adr = Wr_anzahl Then
       Adr = 2
       End If
    
       Return
    End Sub Wr_getstate
    gruß

    xeus

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    arg unsauber:

    For n = 1 To 500
    Eingang = Inkey()
    If Eingang <> 0 Then
    gosub daten_auswerten
    End If
    Next n
    Incr adr

    Inkey wird eine Zeit lang abgefragt.
    Eben so lange wie es dauert es 500 mal abzufragen.
    Je nach Taktfrequenz und gewünschter Wartezeit müsstest du unterschiedliche Werte ausprobieren )
    Tut sich in der Zeit nix, kommt also kein Byte an, dann wird die Adresse erhöht

    Gruß
    Christopher

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    39
    Beiträge
    366
    erstmal danke,
    aber was verbiergt sich hinter Eingang?

    hab es jetzt mal so probiert:

    If Usr = 1 Then
    Inputbin Wr_pakete(1) , 8
    else
    incr adr

    nur irgendwie treagiert er dabei auf kein empfangsbyte

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi "Eingang" ist einfach nur eine Variable

    Gruß
    Christopher

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    23.07.2004
    Ort
    Regensburg
    Alter
    39
    Beiträge
    366
    Also, hab es hinbekommen, dass er die routine so oft wiederholt und die adr um 1 erhöt bis er ein byte empfängt.
    nun ist nur das problem, das er dann nicht mehr so lang wiederholt bis er was kriegt, sondern einfach abwartet.

    If Usr.rxc = 1 Then
    Gosub Wr_empfange

    gibt es irgendeine möglichkeit den inhalt des registers zu löschen, so dass er wieder empfangsbereit ist, bzw merkt wenn etwas ansteht?

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    habe gerade den Befehl "Timeout" in Bascom entdeckt.
    Guck' dir den mal an.

    Gruß
    Christopher

Berechtigungen

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

12V Akku bauen