Ich hab gerade versucht das zu ändern, aber irgendwas mache ich wohl falsch. :hm:
So war das wohl nicht gemeint...
Achso, ohne die Punkte. Jetzt habe ich verstanden. Beim nächsten Script weiß ich Bescheid.
Ich hab gerade versucht das zu ändern, aber irgendwas mache ich wohl falsch. :hm:
So war das wohl nicht gemeint...
Achso, ohne die Punkte. Jetzt habe ich verstanden. Beim nächsten Script weiß ich Bescheid.
Hallo!
Mein nächstes Script ist fertig.
Damit kann man einen 24 Bit Binärcode nach Dezimal 'umwandeln' und andersrum. Grafisch dargestellt durch Schalter und Leuchtdioden.
Es sind 2 Icons erforderlich, die in dem Zip-Archiv liegen. Das Zip-Archiv einfach ins Script-Verzeichnis entpacken.
Es gibt eine neue Version. Hier mal die Änderungen:
- jetzt 24 Bit statt bisher 16 Bit
- Bit 0 ist jetzt rechts
- es gibt jetzt einen Zähler mit [Start], [Pause] und [Stop] plus Geschwindigkeitsregler
- das Umrechnungsergebnis kann man nun markieren und in die Zwischenablage kopieren
- Umrechnung von dezimal nach binär ist jetzt auch möglich
Die Icons sind auch neu, also das Icons.zip bitte mit downloaden.
Noch eine neuere Version. Mir ist noch was eingefallen:
- Man kann dem Zähler jetzt einen beliebigen Startwert vorgeben.
- Im Pause-Modus des Zählers kann man den Zählerstand verändern. Nach der Pause wird dann mit dem neuen Zählerstand weitergezählt.
- Das Flackern beim ganz schnellen zählen ist behoben.
- Die Eingabe wird überprüft, ob sie größer ist als 24 Bit
- Mehr Kommentare (ich bin selbst schon fast nicht mehr durchgestiegen)
Version 1.3 - Neue Funktionen:
- Der Zähler kann jetzt vorwärts oder rückwärts zählen (umschaltbar auch während des zählens)
- Ergebnis (Dezimal oder Binär) kann nun per Button (One-Klick) in die Zwischenablage befördert werden.
- Ein paar kosmetische Korrekturen
#AutoIt3Wrapper_Res_Language=1031 ;Resource Language code . default 2057=English (United Kingdom)
#AutoIt3Wrapper_Res_Comment=Bin2Dez
#AutoIt3Wrapper_Res_Description=Damit kann man einen 24 Bit Binaercode nach Dezimal umwandeln.
#AutoIt3Wrapper_Res_Fileversion=1.3.0.0 ;File Version
#AutoIt3Wrapper_Res_FileVersion_AutoIncrement=n ;(y/n/p)AutoIncrement FileVersion After Aut2EXE is finished. y=Yes/n=No/P=Prompt default=n
#AutoIt3Wrapper_Res_LegalCopyright=Thomas Stephan
#AutoIt3Wrapper_Res_Field=Email|[email='oscar@elektronik-kurs.de'][/email]
#AutoIt3Wrapper_Res_Field=AutoIt Version|%AutoItVer%
#AutoIt3Wrapper_Res_Field=created on:|%longdate% %time%
#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1)
If Not FileExists("schalter_an.ico") Then
MsgBox(48, "Bin2Dez", "Es fehlt folgende Datei: schalter_an.ico" & @CRLF & "Das Programm wird beendet!")
Exit
EndIf
If Not FileExists("schalter_aus.ico") Then
MsgBox(48, "Bin2Dez", "Es fehlt folgende Datei: schalter_aus.ico" & @CRLF & "Das Programm wird beendet!")
Exit
EndIf
$gMaxBits = 23; Maximale Bitzahl -1 (hier: 24 Bit = 0...23)
[/autoit] [autoit][/autoit] [autoit]Dim $gaSBit[$gMaxBits+1]
Dim $gaDBit[$gMaxBits+1]
Dim $gaWert[$gMaxBits+1]
Dim $gaButton[6]
Global $gStop, $gStart, $gPause, $gTmp1, $gTmp2, $gx, $gZaehler
Global $gBgColor = 0x909090; Hintergrundfarbe
Global $gUsColor = 0xeeeeee; Vordergrundfarbe der Überschrift
Global $gBsColor = 0x000000; Vordergrundfarbe der Bitbeschriftung
Global $gBwVColor = 0xcccccc; Vordergrundfarbe der Bitwerte
Global $gBwHColor = 0xffff00; Hintergrundfarbe der Bitwerte
Global $gGeschw = 50; Startwert für die Zählergeschwindigkeit
Global $gZaehlRichtung = 1; 1= vorwärts, -1= rückwärts
$gMain = GUICreate("Bin2Dez", 940, 330, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "f_Beenden")
GUISetBkColor($gBgColor, $gMain)
GUICtrlCreateLabel("24 Bit Binär / Dezimal",270,5,600,60)
GUICtrlSetFont(-1,32,800, "Tahoma")
GUICtrlSetColor(-1,$gUsColor)
GUICtrlCreateLabel("Bit: ",8,58,40,20)
GUICtrlSetFont(-1,12,800, "Tahoma")
GUICtrlSetColor(-1,$gBsColor)
GUICtrlCreateLabel("Wert:",8,171,40,20)
GUICtrlSetFont(-1,10,800, "Tahoma")
GUICtrlSetColor(-1,0xffff00)
GUICtrlCreateGroup ("Zähler", 535, 200, 395, 120)
GUICtrlSetFont(-1,10,400, "Tahoma")
$gaButton[0] = GUICtrlCreateButton("Start",685,235,60,30)
GUICtrlSetOnEvent(-1, "f_Zaehlertasten")
$gaButton[1] = GUICtrlCreateButton("Pause",755,235,60,30)
GUICtrlSetOnEvent(-1, "f_Zaehlertasten")
GUICtrlSetState(-1,$GUI_DISABLE)
$gaButton[2] = GUICtrlCreateButton("Stop",825,235,60,30)
GUICtrlSetOnEvent(-1, "f_Zaehlertasten")
GUICtrlSetState(-1,$GUI_DISABLE)
$gSlider = GUICtrlCreateSlider(685, 275, 200, 25)
GUICtrlSetData(-1,$gGeschw)
GUICtrlSetOnEvent(-1, "f_Tempo")
GUICtrlCreateLabel("Geschwindigkeit: min.",555,280,129,20)
GUICtrlSetFont(-1,8,800, "Tahoma")
GUICtrlSetColor(-1,$gUsColor)
GUICtrlCreateLabel("max.",889,280,30,20)
GUICtrlSetFont(-1,8,800, "Tahoma")
GUICtrlSetColor(-1,$gUsColor)
GUICtrlCreateLabel("Richtung:",555,237,45,20)
GUICtrlSetFont(-1,8,800, "Tahoma")
GUICtrlSetColor(-1,$gUsColor)
$gaButton[3] = GUICtrlCreateButton("vorwärts",605,235,65,20)
GUICtrlSetOnEvent(-1, "f_Zaehlertasten")
GUICtrlSetFont(-1,8,800, "Tahoma")
GUICtrlCreateGroup ("",-99,-99,1,1)
For $gx = $gMaxBits To 0 Step -1
$gaWert[$gx] = 0
$gTmp2 = $gMaxBits - $gx
$gTmp1 = StringFormat("% 4u",($gx))
GUICtrlCreateLabel($gTmp1,48+$gTmp2*37,60,30,16)
GUICtrlSetFont(-1,10,400, "Tahoma")
GUICtrlSetColor(-1,$gBsColor)
$gaSBit[$gx] = GUICtrlCreateIcon("schalter_aus.ico", -1, 50+$gTmp2*37, 75, 25, 85)
GUICtrlSetOnEvent(-1, "f_Schalten")
$gTmp1 = StringFormat("% 7u",(2^$gx))
$gaDBit[$gx] = GUICtrlCreateLabel($gTmp1,50+$gTmp2*37,175,35,10)
GUICtrlSetFont(-1,7,400, "Tahoma")
GUICtrlSetColor(-1,$gBwVColor)
Next
GUICtrlCreateGroup ("Ergebnis", 8, 200, 520, 120)
GUICtrlSetFont(-1,10,400, "Tahoma")
GUICtrlCreateLabel("Dezimal = ",26,224,200,60)
GUICtrlSetFont(-1,28,800, "Tahoma")
GUICtrlSetColor(-1,$gUsColor)
$gDez = GUICtrlCreateInput("0",220,220,230,50)
GUICtrlSetFont(-1,28,800, "Tahoma")
GUICtrlSetColor(-1,$gBsColor)
GUICtrlSetOnEvent(-1, "f_Eingabe")
$gaButton[4] = GUICtrlCreateButton("kopieren",455,234,55,20)
GUICtrlSetOnEvent(-1, "f_Zaehlertasten")
GUICtrlSetFont(-1,8,800, "Tahoma")
GUICtrlCreateLabel("Binär = ",110,280,200,30)
GUICtrlSetFont(-1,20,800, "Tahoma")
GUICtrlSetColor(-1,$gUsColor)
$gBin = GUICtrlCreateInput("000000000000000000000000",220,286,230,20, $ES_READONLY)
GUICtrlSetFont(-1,10,800, "Tahoma")
GUICtrlSetColor(-1,$gBsColor)
$gaButton[5] = GUICtrlCreateButton("kopieren",455,286,55,20)
GUICtrlSetOnEvent(-1, "f_Zaehlertasten")
GUICtrlSetFont(-1,8,800, "Tahoma")
GUICtrlCreateGroup ("",-99,-99,1,1)
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit];-----------------------------------------------------------------------------
; Hauptschleife
;-----------------------------------------------------------------------------
While 1
GUICtrlSetState($gDez, $GUI_FOCUS)
Do
Sleep(10)
Until $gStart = 1
GUICtrlSetState($gaButton[0],$GUI_DISABLE)
GUICtrlSetState($gaButton[1],$GUI_ENABLE)
GUICtrlSetState($gaButton[2],$GUI_ENABLE)
$gStart = 0
$gZaehler = GUICtrlRead($gDez); Startwert für den Zähler holen
Do; Hier startet der Zähler
For $gx = 0 To $gMaxBits; Die entsprechenden Bits von $gZaehler setzen bzw. löschen
If BitAnd($gZaehler, 2^$gx) Then
If $gaWert[$gx] = 0 Then; nur setzen, wenn noch nicht gesetzt
$gaWert[$gx] = 1
GUICtrlSetImage($gaSBit[$gx],"schalter_an.ico")
GUICtrlSetColor($gaDBit[$gx],$gBsColor)
GUICtrlSetBkColor($gaDBit[$gx],$gBwHColor)
EndIf
Else
If $gaWert[$gx] = 1 Then; nur löschen, wenn noch nicht gelöscht
GUICtrlSetImage($gaSBit[$gx],"schalter_aus.ico")
GUICtrlSetColor($gaDBit[$gx],$gBwVColor)
GUICtrlSetBkColor($gaDBit[$gx],$gBgColor)
$gaWert[$gx] = 0
EndIf
EndIf
Next
If $gPause = 1 Then; Wenn der Benutzer auf [Pause] geklickt hat
GUICtrlSetState($gaButton[2],$GUI_DISABLE)
GUICtrlSetData($gaButton[1],"Weiter")
Do
Sleep(10)
Until $gPause = 0; warten bis er die Pause beendet
$gZaehler = GUICtrlRead($gDez); wenn der Benutzer inzwischen den Wert verändert hat, Zählerwert ändern
GUICtrlSetData($gaButton[1],"Pause")
GUICtrlSetState($gaButton[2],$GUI_ENABLE)
EndIf
If $gStop = 1 Then; Wenn der Benutzer auf [Stop] geklickt hat
$gStop = 0; Werte zurücksetzen und für neuen Zählerstart vorbereiten
$gZaehler = 1
For $gx = 0 To $gMaxBits
$gaWert[$gx] = 0
GUICtrlSetImage($gaSBit[$gx],"schalter_aus.ico")
GUICtrlSetColor($gaDBit[$gx],$gBwVColor)
GUICtrlSetBkColor($gaDBit[$gx],$gBgColor)
Next
f_Berechnen()
ExitLoop; Zählerschleife verlassen
EndIf
f_Berechnen()
Sleep(10*(100-$gGeschw)); Warteschleife, die mit dem Slider beeinflusst werden kann
$gZaehler += $gZaehlRichtung
Until ($gZaehler < 0) or ($gZaehler >= 2^($gMaxBits+1)); 24 Bit überschritten oder kleiner als 0? Ja, dann Zählerschleife verlassen
GUICtrlSetState($gaButton[1],$GUI_DISABLE); [Pause] sperren
GUICtrlSetState($gaButton[2],$GUI_DISABLE); [Stop] sperren
GUICtrlSetState($gaButton[0],$GUI_ENABLE); [Start]-Button wieder freigeben
WEnd
;-----------------------------------------------------------------------------
;-----------------------------------------------------------------------------
;******************************************************************************************
; Diese Funktion wird aufgerufen, wenn der Benutzer das Programm beenden will
;******************************************************************************************
Func f_Beenden()
Exit
EndFunc
;******************************************************************************************
; Diese Funktion wird aufgerufen, wenn einer der grafischen Schalter angeklickt wurde
;******************************************************************************************
Func f_Schalten()
Local $lAusw = (@GUI_CTRLID - $gaSBit[$gMaxBits]) / 3
$lAusw = $gMaxBits - $lAusw
$gaWert[$lAusw] = Not $gaWert[$lAusw]
Switch $gaWert[$lAusw]
Case 0
GUICtrlSetImage($gaSBit[$lAusw],"schalter_aus.ico")
GUICtrlSetColor($gaDBit[$lAusw],$gBwVColor)
GUICtrlSetBkColor($gaDBit[$lAusw],$gBgColor)
Case 1
GUICtrlSetImage($gaSBit[$lAusw],"schalter_an.ico")
GUICtrlSetColor($gaDBit[$lAusw],$gBsColor)
GUICtrlSetBkColor($gaDBit[$lAusw],$gBwHColor)
EndSwitch
f_Berechnen()
GUICtrlSetState($gDez, $GUI_FOCUS)
EndFunc
;******************************************************************************************
; Diese Funktion berechnet die Dezimal- und Binärwerte und zeigt sie an
;******************************************************************************************
Func f_Berechnen()
Local $lErgDez = 0
Local $lErgBin = ""
For $lx = $gMaxBits To 0 Step -1
$lErgDez += 2^$lx*$gaWert[$lx]
Switch $gaWert[$lx]
Case 0
$lErgBin &= "0"
Case 1
$lErgBin &= "1"
EndSwitch
Next
GUICtrlSetData($gDez, $lErgDez)
GUICtrlSetData($gBin, $lErgBin)
EndFunc
;******************************************************************************************
; Diese Funktion wird aufgerufen, wenn der Benutzer einen der Buttons angeklickt hat
;******************************************************************************************
Func f_Zaehlertasten()
Local $lAusw = @GUI_CtrlId
Switch $lAusw
Case $gaButton[0]; Start
$gStart = 1
Case $gaButton[1]; Pause
$gPause = Not $gPause
Case $gaButton[2]; Stop
$gStop = 1
Case $gaButton[3]; Zaehlrichtung änder
$gZaehlRichtung = -$gZaehlRichtung
Beep(400,50)
If $gZaehlRichtung = 1 Then
GUICtrlSetData($gaButton[3],"vorwärts")
Else
GUICtrlSetData($gaButton[3],"rückwärts")
EndIf
Case $gaButton[4]; Dezimal-Ergebnis in die Zwischenablage kopieren
ClipPut(GUICtrlRead($gDez))
Beep(800,50)
Case $gaButton[5]; Binär-Ergebnis in die Zwischenablage kopieren
ClipPut(GUICtrlRead($gBin))
Beep(800,50)
EndSwitch
GUICtrlSetState($gDez, $GUI_FOCUS)
EndFunc
;******************************************************************************************
; Diese Funktion wird aufgerufen, wenn der Benutzer den Slider verändert
;******************************************************************************************
Func f_Tempo()
$gGeschw = GUICtrlRead($gSlider)
EndFunc
;******************************************************************************************
; Diese Funktion wird aufgerufen, wenn der Benutzer etwas in Dezimalfeld eingibt
;******************************************************************************************
Func f_Eingabe()
Local $lx
Local $ld = GUICtrlRead($gDez)
If $ld >= 2^($gMaxBits+1) Then
MsgBox(48,"Bin2Dez","Die eingegebene Zahl ist zu groß!" & @CRLF & "Sie läßt sich mit " & $gMaxBits+1 & " Bit nicht darstellen.")
GUICtrlSetData($gDez,0)
GUICtrlSetState($gDez, $GUI_FOCUS)
$ld = -1
EndIf
If $ld >= 0 Then
$gZaehler = $ld
For $lx = 0 To $gMaxBits
If BitAnd($ld, 2^$lx) Then
If $gaWert[$lx] = 0 Then
$gaWert[$lx] = 1
GUICtrlSetImage($gaSBit[$lx],"schalter_an.ico")
GUICtrlSetColor($gaDBit[$lx],$gBsColor)
GUICtrlSetBkColor($gaDBit[$lx],$gBwHColor)
EndIf
Else
If $gaWert[$lx] = 1 Then
$gaWert[$lx] = 0
GUICtrlSetImage($gaSBit[$lx],"schalter_aus.ico")
GUICtrlSetColor($gaDBit[$lx],$gBwVColor)
GUICtrlSetBkColor($gaDBit[$lx],$gBgColor)
EndIf
EndIf
Next
f_Berechnen()
GUICtrlSetState($gDez, $GUI_FOCUS)
EndIf
EndFunc
MfG. Oscar
Im Ernst? Du kannst die auswendig? Mit allen vier Ringen?
Wow! Dann bist Du kein Mensch, sondern ein Übermensch!
MfG. Oscar
Nee, ist nicht dringend. Ich wollt halt bloß mal schauen und wunderte mich, warum das nicht klappt.
So als Neuer muß man doch erstmal alles auskundschaften.
Ihr habt hier ein super Forum aufgezogen. Großes Lob!
MfG. Oscar
Hallo!
Ich habe ein Problem:
Im Datenbank-Bereich kann ich keins der Scripte downloaden. Es öffnet sich ein neues Browserfenster, aber das war's dann auch. Die Seite bleibt leer. Hmmm...
Gibt's dafür eine Erklärung?
Browser ist übrigens Firefox 2.0.0.4 falls das weiterhilft.
MfG. Oscar
Ich bin beim Software-Archiv vom Heise-Verlag darauf gestoßen. Ich habe mir einige Quellcodes angesehen und fand, daß das relativ einfach aussieht. Daraufhin habe ich mir das installiert und bin völlig begeistert von AutoIt.
Als ich dann noch dieses tolle deutsche Forum entdeckt hatte, da war's um mich geschehen.
MfG. Oscar
Hallo!
Ich bin jetzt ein wenig verwirrt. Deinen Hinweis mit der ControllID habe ich nicht ganz verstanden.
Ich benutze doch die Variable bei Switch (in dem Beispiel). Oder meinst Du etwas anderes?
X-) Alles klar. Button[x]. Ok, verstanden!
Ja, das mit Silber beim 3. Ring ist mir schon bewußt, aber das silberne Gif sieht immer so kaputt
aus, weil die Hälfte davon transparent dargestellt wird. Irgendwie habe ich das mit transparenten
Gifs in AutoIt noch nicht verstanden. Gibt's da vielleicht schon einen Thread (mit der Suche konnte
ich nichts finden)?
Der Rest kommt auf die ToDo-Liste. Danke!
MfG. Oscar
ZitatAlles anzeigenOriginal von snoozer
also finde das script eigentlich ganz coool^^ jemand aus meiner klasse hatte das auch mal programmiet alles aber webbased...so ich hab eigentlich nur zwei vorschläge ansonsten kann ich nur staunen dass so ein erstes script aussehen kann echt *daumen hoch* weiter so
[autoit]
so nummer 1:
du hast extra nen info.icon in deinem ornder drinn...brauchste nicht...es gibt die möglichkeit das von windows mitgelieferte icon zu laden..wenn du damit leben kannst dass es ein wenig pixelig ist...kannste das so in etwa in dein script einbinden:GUICreate("";)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlCreateIcon(@SystemDir & "\shell32.dll",-222,10,10,50,50)
GUISetState()
While 1WEnd
[/autoit]
und zweitens wärs cool wenn man auf den widestandsring klicken könnte und dann direkt nen "widerstand" auswählen könnt...mit + und - ist das ganze doch ein wenig nervend geht aber auch in ordnungso das wars vorerst von mir super script geht bis jetzt einwandfrei
mach weiter so!
snoozy
Naja, ich hatte das Ganze auch schonmal in Javascript erstellt. Aber jetzt wollte ich halt mal
AutoIt ausprobieren.
Der Tip mit dem Windows-SystemIcon ist ja klasse. Das habe ich gleich mal geändert. Vielen Dank!
Und das mit der Farbe direkt auswählen werde ich auch mal in Angriff nehmen.
<!--StartFragment--> smile <!--EndFragment-->
MfG. Oscar
Hallo!
Ich bin neu hier im Forum.
Mit AutoIt beschäftige ich mich seit etwa 6 Wochen. Ich interessiere mich so nebenbei
sehr für Elektronik (Hobbymäßig). Deshalb habe ich das mal zum Anlaß genommen,
ein Script in AutoIt zu schreiben.
Damit kann man den Widerstandscode auf elektrischen Widerständen in (für Menschen
lesbare) Werte umwandeln.
Benötigt werden einige Grafiken, die ich als ZIP-Archiv gepackt habe. Das "gfx"-Verzeichnis
in diesem Archiv muß einfach im gleichen Verzeichnis liegen, wie das Script.
Ich hoffe es gefällt euch.
Ich habe die Version jetzt nochmal überarbeitet und die Vorschläge von snoozer umgesetzt.
Man kann die Farben jetzt entweder über die [+] und [-] Buttons auswählen oder indem man
auf einen der ersten drei Farbringe klickt.
Wieder gibt es eine neue Version (1.3), bei der ich einiges geändert habe:
- Grafiken sind jetzt alles Icons. Damit klappt das mit der Transparenz (also unbedingt auch das
neue "gfx.zip" mit downloaden und ins Script-Verzeichnis entpacken).
- Der vierte Ring (Toleranz) ist jetzt ebenfalls änderbar.
- Anzeige der Toleranz (als Prozentwert und in Ohm).
Edit: ( 13.09.08 ) Ich habe mein Script mal an die neue AutoIt-Version angepasst, sodass es damit lauffähig ist. Es gibt also Version 1.4 im ZIP-Archiv aus dem Dateianhang.
Nochmals Danke an Euch (Bernd670 + snoozer)!