Seite 1 von 1

Schalter mit frei wählbaren Ausgängen

Verfasst: Mittwoch 29. September 2010, 15:56
von elomaster79
Hallo abacom,

ich benötige für eine Steuerung einen Drehschalter mit zwei Ausgängen und einer Ausstellung oder drei Ausgängen Hand/AUS/Auto. Ist da vielleicht was machbar?
Mann könnte ja die Anzahl der Ausgänge über Eigenschaften definieren.

Habe in dieser Art leider nichts gefunden.

Mit freundlichen Grüßen
elomaster79

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Mittwoch 29. September 2010, 18:46
von tmm
Hallo,

ich bin nicht Abacom, habe aber trotzdem einen Vorschlag anzubieten:

Die Led's benutze ich gerne als Schalter, weil Schaltzustand durch die Anwendung (siehe mein Beispiel) selbst geändert und auch angezeigt werden kann.
Mein 4-fach-Schalterbeispiel (sieht nicht aus wie ein Drehschalter, funktioniert aber so :P )kannst du einfach kleiner oder größer machen - wie du es halt brauchst.

Gruß MM

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Mittwoch 29. September 2010, 20:30
von thcweb
Ich nutze dafür immer das Auwahlfeld (Drop Down)

Der Vorteil ist dabei, das gleichzeitig die Stellung mit angezeigt wird. Zudem ist die Bedienung via TouchScreen so gut.

mfg thomas

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Mittwoch 29. September 2010, 21:44
von compander
Hallo elomaster79.

....oder Du probierst den uralten "Radio-Switch" aus.
Ist zu finden auf: http://www.minirock2009.de.vu
(PLE Mini/Radioswitch. Von 2007)
Leider hast Du nicht erwähnt, ob an deinem Schalter digitale Signale oder analoge Werte anliegen.
Der Radioswitch ist für digitale Signale gedacht.
Anbei ein winziges ergänzendes Beispiel, wie man auch analoge Werte (hier der Wert=1; auf der ersten Leitung) selektieren/schalten kann.
(wenn Du den vierten Schalter entfernst, und die entsprechde Leitung auf "Masse" legst, so hast Du einen 3-fach
Umschalter. Sofern Du nicht auf "Teufelkommraus" auf einen "Drehschalter" bestehst.....)

Gruß vom C :shock: mpander.

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 11:36
von elomaster79
Hallo zusammen,

danke für die Vorschläge. Die einfachste Variante ist da wohl das Auwahlfeld "Drop Down" :D .

Gruß elomaster79

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 11:40
von Udo_Olaf
Hallo zusammen,

diese DLL kann einen MultiSwitch simulieren.

Mit der Ini-Datei „MultiSwitch.ini“ lassen sich zwischen 2 und 9 Ein/Ausgänge festlegen. Die kann mit jedem Editor geändert werden.

Und so sieht die Datei aus:

[MultiSwitch]
Inputs=4
Default=1

Mit „Inputs“ legt man die Anzahl der Eingänge (und Ausgänge) fest. Kann zwischen 2 und 9 sein.
Mit „Default“ bestimmt man den Ausgang, der beim Start aktiv sein soll. Mit „Default=0“ wird beim Start kein Ausgang eingeschaltet.

Die Ini-Datei sollte im gleichen Verzeichnis liegen wie die Projektdatei .prj.
Wenn diese Datei nicht gefunden wird, dann werden für „Inputs=2“ und für „Default=0“ eingesetzt.
Das gleiche gilt wenn unsinnige Werte in der Datei stehen.

Viel Erfolg damit

Udo_Olaf

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 12:06
von funkybaer
Hallo Udo_Olaf

Leider kommt bei mir "keine Funktionen importiert"

Gruß Gerhard

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 13:19
von Udo_Olaf
Hallo funkybear,

ich habe die DLL noch mal geändert. Bitte nochmal probieren.
Verstehen kann ich das nicht - auf (fast) allen Rechnern läuft´s, nur bei einigen nicht.
Bitte um kurze Mitteilung (nicht nur wenn´s nicht geht).

Grüße

Udo_Olaf

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 13:48
von - chris -
Bei mir funktionierts, allerdings muß die dll
ins selbe Verzeichnis wie das Projekt, sonst
wird die ini nicht gefunden.
(Windows 7 64bit)

Ich habe auch mal eine MultiSwitch.dll erstellt.
(siehe Anhang)

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 14:02
von Udo_Olaf
Hallo - chris -,

sowohl meine als auch Deine DLL funktionieren bei mir. Meine geht bei mir auch wenn sie nicht im Projektverzeichnis ist.
Aber das ist eigentlich unerheblich. Ist doch ganz nett das Teil - oder? Womit hast Du Deine DLL erzeugt?

Grüße

Udo_Olaf

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 15:08
von - chris -
Hallo Udo_Olaf

Ja, ist ganz nett das Teil :-)

Die DLL hab ich mit PureBasic erstellt.

Gruß Christoph

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 18:02
von Udo_Olaf
Hallo - chris - ,

eigentlich habe ich gedacht, dass Du mein C-Projekt einfach durch einen anderen Compiler "gejagt" hast.
Dann hast Du also alles in Basic umgesetzt. Wenn Deine Quellen kein Geheimnis sind, dann würde mich mal interessieren wie so was in Basic aussieht.
Basic, das ist bei mir schon ewig her - mindestens 20 Jahre...

Grüße

Udo_Olaf

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Donnerstag 30. September 2010, 18:50
von - chris -
Hier das ganze in PureBasic:

Code: Alles auswählen

; MultiSwitch.pb

EnableExplicit

Global inp.a, def.a

Structure sDLLParams
  DLLParam.d[101]
EndStructure

; return number of input channels...
ProcedureDLL.a CNumInputsEx(*PUser.sDLLParams)

  Protected Inputs.a

  If inp > 1 And inp < 10
    Inputs = inp
  Else
    Inputs = 2
  EndIf

  ProcedureReturn Inputs
EndProcedure

; return number of output channels...
ProcedureDLL.a CNumOutputsEx(*PUser.sDLLParams)

  Protected Outputs.a

  If inp > 1 And inp < 10
    Outputs = inp
  Else
    OutPuts = 2
  EndIf

  ProcedureReturn Outputs
EndProcedure

; return name for each input...
ProcedureDLL GetInputName(Channel.a, *Name.i)

  Protected GetInputName.s

  GetInputName = "E" + Str(Channel + 1)

  PokeS(*Name, GetInputName, -1, #PB_Ascii)

EndProcedure

; return name for each output...
ProcedureDLL GetOutputName(Channel.a, *Name.i)

  Protected GetOutputName.s

  GetOutputName = "A" + Str(Channel + 1)

  PokeS(*Name, GetOutputName, -1, #PB_Ascii)

EndProcedure

; check inputs and set outputs while running...
ProcedureDLL CCalculate(*PInput.sDLLParams, *POutput.sDLLParams, *PUser.sDLLParams)

  Protected i.i, j.i

  For i = 0 To 8

    If *PInput\DLLParam[i] > 2.5

      For j = 0 To 8
        *POutput\DLLParam[j] = 0
      Next j

      *PUser\DLLParam[i]   = 5
      *POutput\DLLParam[i] = 5

    EndIf

  Next i

EndProcedure

; called when project is started...
ProcedureDLL CSimStart(*PInput.sDLLParams, *POutput.sDLLParams, *PUser.sDLLParams)

  Protected i.i
  
  For i = 0 To 8
    *POutput\DLLParam[i] = 0
  Next i  
  
  If def > 0 And def < 10
    *POutput\DLLParam[def - 1] = 5
  EndIf
    
EndProcedure

; called when project is stopped...
ProcedureDLL CSimStop(*PInput.sDLLParams, *POutput.sDLLParams, *PUser.sDLLParams)
  
  ; nothing to do...
  
EndProcedure

; called when button CONFIGURE is pressed in dialogue...
ProcedureDLL CConfigure(*PUser.sDLLParams)

  MessageRequester("Configure", "Nothing to configure")

EndProcedure


Procedure ReadIniFile()

  Protected path$

  path$ = GetPathPart(ProgramFilename())
  If Right(path$, 1) <> "\"
    path$ = path$ + "\"
  EndIf

  OpenPreferences(path$ + "MultiSwitch.ini")

  PreferenceGroup("MultiSwitch")

  inp = Val(ReadPreferenceString("Inputs", "2"))
  def = Val(ReadPreferenceString("Default", "0"))

  ClosePreferences()

EndProcedure


ProcedureDLL AttachProcess(Instance.i)

  ReadIniFile()

EndProcedure

Re: Schalter mit frei wählbaren Ausgängen

Verfasst: Freitag 1. Oktober 2010, 06:21
von funkybaer
Hallo zusammen

nun gehts bei mir auch

Gruß gerhard