Seite 2 von 2

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 01.12.2010 15:15
von SaschaDE
Noch ne dummer Frage :freak: :

Ich suche nun eine Möglichkeit, dass wenn in dem StringGadget etwas eingegeben wurde (in diesem Fall ein 4-Zeichen-Befehl an den Mikrocontroller) und der Nutzer Return drückt, dies als Event gemeldet wird. Im Gadget.pb Beispiel wird dazu "#PB_EventType_ReturnKey" benutzt ... scheinbar gibt es das nicht mehr in den neuen Versionen ... was wäre eine Alternative ?

Gibt es irgendwo eine Übersicht der möglichen EventType die es für ein Gadget gibt ? Dann könnte ich selber probieren und muss nicht so viel fragen.

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 01.12.2010 15:31
von Kiffi
Du erstellst einen Shortcut. Dieser löst ein Menu-Event
aus. Darauf reagierst Du dann:

Code: Alles auswählen

Enumeration ; Windows
  #myWindow
EndEnumeration
Enumeration ; Gadgets
  #myStringGadget_MitReturn
  #myStringGadget_OhneReturn
EndEnumeration
Enumeration ; Menu-/Toolbaritems
  #myWindowShortcutReturn
EndEnumeration

OpenWindow(#myWindow, #PB_Ignore, #PB_Ignore, 320, 100, "")

StringGadget(#myStringGadget_MitReturn,  10, 10, 300, 20, "Return funktioniert nur, wenn hier der Focus liegt")
StringGadget(#myStringGadget_OhneReturn, 10, 50, 300, 20, "Hier wird Return ignoriert (wg. GetActiveGadget)")

AddKeyboardShortcut(#myWindow, #PB_Shortcut_Return, #myWindowShortcutReturn)

Repeat
  
  Select WaitWindowEvent()
      
    Case #PB_Event_Menu
      Select EventMenu()
        Case #myWindowShortcutReturn
          If GetActiveGadget()=#myStringGadget_MitReturn
            MessageRequester("", GetGadgetText(#myStringGadget_MitReturn))
          EndIf
      EndSelect
      
    Case #PB_Event_CloseWindow
      Quit=#True
      
  EndSelect
  
Until Quit = #True
SaschaDE hat geschrieben:Gibt es irgendwo eine Übersicht der möglichen EventType die es für ein Gadget gibt ? Dann könnte ich selber probieren und muss nicht so viel fragen.
ja, steht alles in der PB-Hilfe drin. ;-)

Grüße ... Kiffi

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 01.12.2010 17:13
von HeX0R
SaschaDE hat geschrieben: Nachdem die Combobox mit den vorhandenen Ports gefüllt ist (hoffe mal das man das so machen kann) ...
Klar kann man das so machen, sollte man aber nicht
(Du bekommst nicht die vorhandenen Ports, sondern die momentan nicht belegten).

Ausserdem werden bei USB/Seriell-Adaptern auch gerne mal COM-Ports jenseits der 20 benutzt.

Falls du dann mal irgendwann eine Kaufversion von PB hast,
kannst du es hiermit probieren.

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 02.12.2010 11:41
von SaschaDE
Vielen Dank Kiffi und Hex0R für die Hilfe ... ich hoffe ich werde die Kaufversion möglichst bald bekommen. Muss den Chef noch ein wenig weichklopfen :praise: .

Bis dahin habe ich folgendes Problem:

Ich kann nun über das StringGadget wie von Kiffi beschrieben bei Returndruck ein Event bekommen und dann den Inhalt aus dem StringGadget in einem String haben. Den muss ich nun weiter verarbeiten und über RS232 senden.

Das Format der Befehle ist immer Befehl+Leerzeichen+Zahl. Der Befehl kann aus Buchstaben und Zahlen bestehen (z.B. SY, S1, DK usw.). Die Zahl ist immer dezimal und maximal 16 Bit ... der Nutzer würde also zum Beispiel "SY 2010" eingeben, was in dem Fall das Jahr der Herstellung wäre. Über RS 232 soll dann gesendet werden:

SY 2010 ->
0x53 (ASCII für S)
0x59 (ASCII für Y)
0x07 (Highbyte vom dez. 2010)
0xDA (Lowbyte von dez. 2010)

Ich brauche nun also eine Möglichkeit, aus dem String "SY 2010" eine Möglichkeit, die ASCIIs einzeln zu bekommen, dann das Leerzeichen wegmachen, dann aus der ASCII-Zahl eine echte Zahl machen. Erster Schritt wäre , einen Zugang auf einzelne Zeichen im String zu haben.

Bitte nicht falsch verstehen, ich suche keine fertige Lösung (ich wills ja lernen), sondern eher einen Tip wo in der Hilfe ich entsprechende Hinweise finde. Die Dokumentation zu Purebasic scheint mir recht mager, aber wahrscheinlich hab ich noch nicht alles gefunden was es an Dokumentation gibt.

Edit:
Ahhh ... hier hab ich was gefunden:
http://www.purebasic.com/german/documentation/string/

Damit komm ich bestimmt schon ein Stück weiter.

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 02.12.2010 13:05
von andi256

Code: Alles auswählen

string$ = "SY 2010"

Debug  string$
string$ = RemoveString(string$," ")  ; Leerzeichen wegmachen

Debug  string$

For i = 1 To Len(String$)
  zeichen$ = Mid(string$,i,1)
  Debug "--------"
  Debug "Einzelzeichen       : " + zeichen$
  Debug "Einzelzeichen in acs: " + Str(Asc(zeichen$))
  Debug "Einzelzeichen in hex: " + Hex(Asc(zeichen$))
  Debug "--------"
Next i

jahr$ = (Mid(string$,3,4))

Debug "Jahr:"        + jahr$
jahrhex$ = Hex(Val(jahr$))
Debug "Jahr in hex: "+ jahrhex$

If Len(jahrhex$) % 2 = 1       ;auf gerade Stellen mit 0 füllen
  jahrhex$ = "0" + jahrhex$
EndIf
Debug  jahrhex$
For i = 1  To Len(jahrhex$) Step 2
  Debug Mid(jahrhex$,i,2)
Next i 

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 02.12.2010 13:19
von SaschaDE
Vielen, vielen Dank Andi256 ... das geh ich jetzt mal durch bis ich alles verstehe.

Re: ComboBox-Gadget und #CBN_SELCHANGE

Verfasst: 03.12.2010 22:22
von HeX0R
In deinem Fall kannst du nicht mit Strings arbeiten, weil bei dir auch 0-Bytes vorkommen können (die in PB das Ende des Strings markieren).

Du musst also mit Memorypuffern arbeiten und dann "hineinpoken".
Siehe hierzu PokeS, PokeB, PokeW...