Gadgets - verfügbare Anschlüsse anzeigen

Anfängerfragen zum Programmieren mit PureBasic.
Doris
Beiträge: 5
Registriert: 20.10.2006 14:23
Wohnort: München

Gadgets - verfügbare Anschlüsse anzeigen

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
Zuletzt geändert von bobobo am 26.10.2006 12:55, insgesamt 1-mal geändert.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Möchtest du wissen, wie man Gadgets erstellt?

Dann musst du zunächst ein Fenster öffnen:

Code: Alles auswählen

OpenWindow(0, 0, 0, 800, 600, "COM-Anschlüsse")
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:

Code: Alles auswählen

CreateGadgetList(WindowID(0))
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? :D
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Doris
Beiträge: 5
Registriert: 20.10.2006 14:23
Wohnort: München

Beitrag 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
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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

Zuletzt geändert von bobobo am 26.10.2006 16:36, insgesamt 2-mal geändert.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Doris
Beiträge: 5
Registriert: 20.10.2006 14:23
Wohnort: München

Beitrag von Doris »

Vielen herzlichen Dank!

So werd ich es versuchen.

Viele Grüße
Doris
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

Das ist ja ein Ding... es gibt Tatsächlich OpenComPort() .... warum um alles in der Welt ist das denn nicht Dokumentiert?
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Weil es nicht nötig ist ..scheint identisch mit OpenFile() zu sein

Könnte Andre ja mal was machen
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Doris
Beiträge: 5
Registriert: 20.10.2006 14:23
Wohnort: München

Beitrag 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
Antworten