Seite 1 von 2
Gadgets - verfügbare Anschlüsse anzeigen
Verfasst: 26.10.2006 12:41
von Doris
Guten Tag allerseits,
ich als blutige Anfängerin in der Programmiererei hab mir gedacht, PureBasic könnte "meins" sein. Sieht auch eindeutig so aus, und es macht viel Spaß.
Gleich bei der ersten Aufgabe bin ich nun auf folgendes Problem gestoßen:
Ich möchte in meinem Fenster die auf dem Rechner verfügbaren COM-Anschlüsse anzeigen, um sie dem Anwender später zur Auswahl zur Verfügung zu stellen.
Ich kann nun einfach nicht herausbekommen, wie ich das Gadget anlegen muss, damit ich die Anschlüsse zusehen bekomme, die im Geräte-Manager verfügbar sind...
Kann mir hier bitte jemand helfen? Vielen Dank schon im Voraus.
Gruss - Doris
Verfasst: 26.10.2006 12:53
von bobobo
Hi auch..
in etwas so
Code: Alles auswählen
; Debugger Anmachen !!
For i=1 To 100
If OpenComPort(0,"Com"+Str(i)+":")
Debug "Com"+Str(i)+": ist vorhanden"
EndIf
Next i
End
ich mach das gleich auch mal mit Gadgets .. momang ..VisualDesigner anwerfen .. Gerüst basteln .. Datenabfrage in der PBIDE integrieren.
Ich finde zwar OpenComPort() nicht in der Dokumentation .. es geht
aber trotzdem
Ansonsten guck auch mal ins Codearchiv auf purearea.net
und bemüh die Forensuche
Verfasst: 26.10.2006 12:54
von AND51
Möchtest du wissen, wie man Gadgets erstellt?
Dann musst du zunächst ein Fenster öffnen:
Sobald du dieses Fenster erstellt hast, erstellst du eine Gadgetliste. Dazu gibt es den fehel
CreateGadgetList(), und der geht so: DU setzt einfach das handle des Windows, zu dem die folgenden Gadgets erstelt werden sollen, in die Klammer ein:
Nun kannst du alle gadgets erstelen, die du möchtest. Beispielsweise einen Button für jeden COM-Anschluss.
Code: Alles auswählen
ButtonGadget(0, 5, 5, 200, 30, "COM 1")
ButtonGadget(1, 5, 5, 200, 30, "COM 2")
ButtonGadget(2, 5, 5, 200, 30, "COM 3")
Alles klar?

Verfasst: 26.10.2006 13:00
von Doris
Vielen Dank erstmal, dass man hier so schnell Antwort bekommt.
Meine ersten Gadgets stehen schon, ich bin begeistert.
Aber das Problem ist, dass ich nicht weiss, welche Com-Ports der Anwender des Programms auf seinem Rechner hat und ich möchte nur die anzeigen, die auch vorhanden sind.
Dazu müsste ich vermutlich den Gerätemanager "lesen", um das herauszufinden...aber wie?
Gruss - Doris
Verfasst: 26.10.2006 13:04
von bobobo
Comportsauswahl per OpenComPort in Comboboxauswahl zum auswählen
für PB 4
Code: Alles auswählen
Enumeration
#Window_0
#Combo_0
#Button_0
#Button_1
#Button_2
#Text_0
EndEnumeration
If OpenWindow(#Window_0, 216, 0, 380, 159, "Portauswahl", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
If CreateGadgetList(WindowID(#Window_0))
ComboBoxGadget(#Combo_0, 10, 30, 130, 200, #PB_ComboBox_UpperCase)
ButtonGadget(#Button_0, 240, 30, 90, 20, "ok")
ButtonGadget(#Button_1, 240, 60, 90, 20, "ko")
ButtonGadget(#Button_2, 240, 90, 90, 20, "¿?")
TextGadget(#Text_0, 10, 10, 190, 20, "Wähle den Port")
EndIf
EndIf
For i=1 To 100 ; ist vielleicht etwas viel , aber man kann ja nie wissen
If ReadFile(0,"Com"+Str(i)+":") ;liefert was zurück wenn der Port verfügbar ist
AddGadgetItem(#Combo_0,-1,"Com"+Str(i)+":")
CloseFile(0) ; Comport wieder zu
EndIf
Next i
SetGadgetState(#Combo_0,0)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Combo_0
ElseIf GadgetID = #Button_0
SetGadgetText(#TExt_0,"Na gut ..meinetwegen "+GetGadgetText(#Combo_0))
DisableGadget(#Button_0,1)
Delay(1000)
DisableGadget(#Button_0,0)
SetGadgetText(#TExt_0,"Wähle den Port")
ElseIf GadgetID = #Button_1
End
ElseIf GadgetID = #Button_2
MessageRequester("AHA","Das Zeichen ¿ erhälst Du, wenn Du ALT drückst und dann 0191 eingibst",#MB_ICONEXCLAMATION)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Verfasst: 26.10.2006 13:32
von bobobo
OpenComPort funktioniert wohl wie OpenFile
um einen Port zu schließen sollte ein Closefile() ausreichen
hier die geänderte CommPortAuswahlSchleife
Code: Alles auswählen
For i=1 To 100
If OpenComPort(0,"Com"+Str(i)+":")
AddGadgetItem(#Combo_0,-1,"Com"+Str(i)+":")
CloseFile(0)
EndIf
Next i
hab ich oben auch mit eingetragen
Verfasst: 26.10.2006 13:34
von Doris
Vielen herzlichen Dank!
So werd ich es versuchen.
Viele Grüße
Doris
Verfasst: 26.10.2006 13:55
von Zaphod
Das ist ja ein Ding... es gibt Tatsächlich OpenComPort() .... warum um alles in der Welt ist das denn nicht Dokumentiert?
Verfasst: 26.10.2006 14:03
von bobobo
Weil es nicht nötig ist ..scheint identisch mit OpenFile() zu sein
Könnte Andre ja mal was machen
Verfasst: 26.10.2006 16:05
von Doris
Vielen Dank nochmal, bobobo,
ich hab das jetzt so ausprobiert, aber aus irgendeinem Grund findet das Programm dann beim Ablauf nicht die COM-Ports, die wirklich vorhanden sind, sondern es fängt erst bei COM3 an, obwohl COM1 vorhanden ist und es listet auch solche COM-Ports auf, die gar nicht da sind (geht z.B. bis COM9)
Jetzt bin ich baff...und gespannt, ob hier jemand eine Idee hat.
Gruss - Doris