Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Alle Fragen zur Programmierung, die nicht in die speziellen Themen passen
Antworten
consolefetischist
Foriker
Beiträge: 20
Registriert: So 12. Apr 2020, 13:06
Kontaktdaten:

Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Beitrag von consolefetischist » So 25. Apr 2021, 17:10

Moin !
Ich habe einen Lüfter ( Pc,PWM) der Aussenluft nach innen fördert. Da der ziemlich laut ist lag es nahe den bereitstehenden PWM Anschluss zur Drehzahlregelung zu nutzen. Derzeit mache ich das mit nem Poti. Im Gambas Buch habe ich gelesen wie ich Zugang zur seriellen Schnittstelle bekomme, also habe ich, da ich das Beispiel nicht verstanden habe alles copypastet und solange editiert ( sooorrryyy )

:D bis es funktioniert. Oder naja, eben auch nicht.
Ich bekomme den Wert den der Arduino liefert doppelt angezeigt. Das kann ich ändern indem ich den Ardu anweise nur 1x pro Sekunde zu senden, was aber nicht in meinem Sinne ist. Ich denke es hat damit zu tun wie ich den Stream abfrage ?

Ich "Könnte" den Wert jetzt ja einfach Filtern bis es Passt, aber ich bin mir sicher das ich wieder einmal etwas übersehen habe *liebguck*
Das Programm ist das angepasste Beispiel aus dem Gambas Buch. :

die "Public Sub hRS232_Read()" habe ich komplett Auskommentiert da die nicht innerhalb des Timers ist und ich nicht verstehe wozu die da sein soll.

Danke im Voraus :)

gambas code
Public hRS232 As SerialPort
Public sTemperatureDigit As String
Public TTimer As Timer
 
Public Sub Form_Open()
 
  FMain.Center
  FMain.Resizable = False
 
  hRS232 = New SerialPort As "hRS232"
  TTimer = New Timer As "TTimer"
  TTimer.Delay = 1000 ' The temperature is read out every 500ms
  'SetLEDColor(pboxStatus, "red")
 
  StartMeasurement()
 
End
 
Public Sub StartMeasurement()
 
  hRS232.PortName = "/dev/ttyUSB0"
 
  hRS232.Speed = 9600
 
  hRS232.DataBits = SerialPort.Bits8
  hRS232.StopBits = SerialPort.Bits1
  hRS232.Parity = SerialPort.None
  hRS232.FlowControl = SerialPort.Software
 
  Try hRS232.Open(3)
  If Error Then
     Message.Error(("Error when opening the V24-RS232-USB adapter interface!"))
     'SetLEDColor(pboxStatus, "red")
  Else
     If hRS232.Status = Net.Active Then
        TTimer.Start()
        'Print hRS232.DTR
        'Print hRS232.DSR
        'Print hRS232.Blocking
        'Print hRS232.CTS
        'Print hRS232.RTS
     Endif
  Endif
 
End
 
Public Sub hRS232_Read()
 'Read #hRS232, sTemperatureDigit, Lof(hRS232)
'Print sTemperatureDigit
'Label1.Text = sTemperatureDigit
End
 
Public Sub TTimer_Timer()
 
   Read #hRS232, sTemperatureDigit, Lof(hRS232)
Print sTemperatureDigit
Label1.Text = sTemperatureDigit
 
 
 
End
 

Public Sub Form_Close()
 
  If hRS232.Status = Net.Active Then
     hRS232.Close()
     FMain.Close()
  Endif
 
End

Crabman
Foriker
Beiträge: 21
Registriert: So 6. Jan 2019, 13:31
Kontaktdaten:

Re: Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Beitrag von Crabman » So 25. Apr 2021, 21:48

Hi
Da hast Du dir ein Beispiel aus dem Buch gegriffen, das mit einem Dauerstrom von Daten eines speziellen Temperatursensors zu kämpfen hat. Die Verwendung des Timers ist sehr speziell und macht für Deine Anwendung keinen Sinn. Das Projekt unter https://www.gambas-buch.de/lib/exe/fetc ... alc.tar.gz hätte besser zu Deiner Anwendung gepasst. Es ist allgemeiner Natur und liest die Daten ganz normal und sofort nach dem Empfang aus dem Read-Ereignis - was Du in Deinem Programm unglücklicherweise auskommentiert hast. Das Read-Ereignis wird im Gambas Buch wie folgt beschrieben: "Das Ereignis wird ausgelöst, wenn Daten von der seriellen Schnittstelle gelesen werden können."

Was Du mit 'zu schnell' meinst, kann ich nicht nachvollziehen und was Du mit 'Gambas redet mit Arduino' meinst, ist auch unklar, denn der Auszug aus dem Quellcode zeigt nur den Empfang der Daten beim PC. Also redet der Arduino mit Gambas und nicht Gambas mit dem Arduino.

Meine Empfehlung: Nimm die Auskommentierung der Kommandos im Read-Ereignis zurück und lass den Timer mitsamt seiner Ereignisroutine weg. Du willst doch die Anzeige sicher sofort und nicht ein Mal pro Sekunde, oder? Die verzögerte Versendung der Daten vom Arduino (1 Mal pro Sekunde) macht ebenfalls keinen Sinn und sollte in jedem Fall unterbleiben.
Ob der eingestellte Handshake (hRS232.FlowControl = SerialPort.Software) wirklich vom Arduino bedient wird und für Deine Anwendung Sinn macht, solltest Du prüfen. Ich hätte vorerst auf jeglichen Handshake verzichtet.

Viele Grüße
Crabman

consolefetischist
Foriker
Beiträge: 20
Registriert: So 12. Apr 2020, 13:06
Kontaktdaten:

Re: Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Beitrag von consolefetischist » Mo 26. Apr 2021, 14:14

Vielen Dank für den Schubs in die richtige Richtung!
Natürlich hätte es anders herum heißen müssen Arduino->Gambas ist mir aber erst nicht aufgefallen.

Jetzt weiß ich wenigstens was die "von mir unglücklicherweise Auskommentierte" Routine macht :)
Seufz.. mit anderen Worten, neu schreiben wird wohl einfacher sein als den ganzen Code umzubauen.

Apropos Gambas.. meine Hausautomation V2 tut seltsame dinge gerade(macht das Licht in der Küche an ohne Grund). Um diese Baustelle werde ich mich zuerst kümmern müssen.

LG

consolefetischist
Foriker
Beiträge: 20
Registriert: So 12. Apr 2020, 13:06
Kontaktdaten:

Re: Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Beitrag von consolefetischist » Fr 30. Apr 2021, 19:29

Herrjemine ! DA soll einer drauf kommen. :x

Ich kann Button13.Background = Color.Green setzen (unter openbox funktioniert das sogar ).

Ich kann aber *nicht* If Button13.Background = Color.Green .... abfragen.

Toll. Wider alles umschreiben :x

EDIT:

If Button13.Background = 65280 funktioniert auch nicht !? bwaaaah jemand ne Idee ?
Edit:
OK, dann eben mit Button13.enabled=true DAS kann ich zumindest abfragen...


dim result as string
dim workarond as string

result = workaround+workaround+workaround+workaround
print result

circle :mrgreen:

Benutzeravatar
PJBlack
Foriker
Beiträge: 59
Registriert: Sa 8. Dez 2018, 23:50
Kontaktdaten:

Re: Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Beitrag von PJBlack » Sa 1. Mai 2021, 01:27

du könntest auch die .tag eigenschaft nutzen um so ziemlich alles mitzugeben
gambas code
Button13.Tag = "on" ' oder True oder 0815
und
gambas code
Button13.Tag = "off" ' oder False oder 4711
.enabled zu nutzen ist m.m.n. der falsche ansatz ...
consolefetischist hat geschrieben:
Mo 26. Apr 2021, 14:14
seltsame dinge gerade(macht das Licht in der Küche an ohne Grund)
wo ist das problem wenn ein gambas in die küche will?

consolefetischist
Foriker
Beiträge: 20
Registriert: So 12. Apr 2020, 13:06
Kontaktdaten:

Re: Gambas "redet" mit Arduino aber die Übertragung ist "zu schnell" ?

Beitrag von consolefetischist » Sa 1. Mai 2021, 19:10

PJBlack hat geschrieben:
Sa 1. Mai 2021, 01:27
du könntest auch die .tag eigenschaft nutzen um so ziemlich alles mitzugeben
gambas code
Button13.Tag = "on" ' oder True oder 0815
und
gambas code
Button13.Tag = "off" ' oder False oder 4711
.enabled zu nutzen ist m.m.n. der falsche ansatz ...
consolefetischist hat geschrieben:
Mo 26. Apr 2021, 14:14
seltsame dinge gerade(macht das Licht in der Küche an ohne Grund)
wo ist das problem wenn ein gambas in die küche will?
Still jetzt ! mit .enabled funzt es ! schhhhhh! ein Gambas in der Küche ist nur gut wenn er/sie/es den Topf findet!
Immerhin habe ich ich die Kontrolle über meine Küche wiedererlangt :P


Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste