Servus Zusammen, nachdem ich in letzter Zeit mit vielen Siebensegmentanzeigen gearbeitet habe, habe ich mir wegen des Workflows ein kleines Tool zusammengetippt das die Arbeit gerade bei vielen Zeichen vereinfachen soll. - VB.net, nur Windows, erfordert dot.net Framework (leider) Von großer Übersicht kann man nicht sprechen - es ging mir auch eher um Funktionalität. Ein kurzer Abriss: - Ausgabe in beliebig festlegbaren Syntax (C, ...) - binäre, dezimale und hexadezimale Darstellung auswählbar - vorgegebene Zeichendatenbank mit ca. 100 bis 150 Zeichen. Bei Gleichheit des ausgewählten Zeichens mit einem Anderen ergeht ein Hinweis. - Animationsvorlagen und Sonderzeichen - Zeichen on-the-fly jederzeit veränderbar (durch Klick auf die Anzeige) - Automatik für bis zu 8 Siebensegmentstellen - auf Wunsch automatischer Sprung zur nächsten Siebensegmentstelle Das Programm ist jetzt nichts Besonderes - für Unerfahrene vielleicht ganz hilfreich. Für Erfahrene nimmt es Arbeit ab, wenn viele Zeichen ausgegeben werden müssen. Das Programm speichert die benutzerdefinierte Einstellungen in der Registry ab (31 Werte). Eine Internetverbindung wird zu keiner Zeit aufgebaut. Größe 112 kB. Beim ersten mal Starten: Bitte im Tab 'Einstellungen' ganz unten rechts Standartwerte anklicken und bestätigen. Ab dem zweiten Programmstart sind benutzerdefinierte Werte verfügbar (werden beim Schließen automatisch gespeichert). Bitte meldet euch bei - Fehlern und Verbesserungsvorschlägen - Anregungen (neu Funktionen, fehlende Zeichen in der Datenbank, ...) Viel Spaß
Üblicher Weise erzeugt man nicht für jedes Zeichen extra Code, das ist viel zu aufwendig und zu umständlich. Man legt sich daher im Flash die Codetabelle ab und ruft damit eine einzige Ausgabefunktion auf. Pro Zeichen hat man also nur ein Byte Codeverbrauch mehr. In C sieht das etwa so aus:
1 | // Segment order
|
2 | #define _A 0x10
|
3 | #define _B 0x20
|
4 | #define _C 0x40
|
5 | #define _D 0x02
|
6 | #define _E 0x01
|
7 | #define _F 0x08
|
8 | #define _G 0x04
|
9 | #define _DP 0x80
|
10 | |
11 | // Number code
|
12 | #define _0 _A+_B+_C+_D+_E+_F
|
13 | #define _1 _B+_C
|
14 | #define _2 _A+_B+ _D+_E+ _G
|
15 | #define _3 _A+_B+_C+_D+ _G
|
16 | #define _4 _B+_C+ _F+_G
|
17 | #define _5 _A+ _C+_D+ _F+_G
|
18 | #define _6 _A+ _C+_D+_E+_F+_G
|
19 | #define _7 _A+_B+_C
|
20 | #define _8 _A+_B+_C+_D+_E+_F+_G
|
21 | #define _9 _A+_B+_C+_D +_F+_G
|
22 | #define CHAR_E _A+ _D+_E+_F+_G
|
23 | #define CHAR_r _E+ _G
|
24 | #define MINUS _G
|
25 | #define SPACE 0
|
26 | |
27 | // 7 segment table
|
28 | prog_uint8_t chartab[] = { _0, _1, _2, _3, _4, _5, _6, _7, _8, _9 }; |
Die Segmentanschlüsse lege ich mir so, wie es für das Layout am günstigsten ist. Daher sind sie extra definiert. Peter
Lehrmann Michael schrieb: > Das Programm speichert die benutzerdefinierte Einstellungen in der > Registry ab (31 Werte). Sorry, das ist eine MS-typische Unart. Solch einfache Programme sollten direkt ohne Installation laufen und dabei keinerlei Systemeinstellungen verändern, Daten in der Registry speichern etc. Ansonsten gilt was Peter Dannegger gesagt hat.
Sorry für DoPo...
Peter Dannegger schrieb:
1 | > // Segment order |
2 | > #define _A 0x10 |
3 | > #define _B 0x20 |
4 | > #define _C 0x40 |
5 | > #define _D 0x02 |
6 | > #define _E 0x01 |
7 | > #define _F 0x08 |
8 | > #define _G 0x04 |
9 | > #define _DP 0x80 |
Äh - stand nicht neulich irgendwo im Forum diese Bezeichner sind reserviert? > The C standard requires that all system-specific macros be part of the > reserved namespace. All names which begin with two underscores, or an > underscore and a capital letter, are reserved for the compiler and > library to use as they wish. http://gcc.gnu.org/onlinedocs/cpp/System_002dspecific-Predefined-Macros.html
meckermensch schrieb: > Äh - stand nicht neulich irgendwo im Forum diese Bezeichner sind > reserviert? Ich benutze diese Methode schon, seit ich mit MCs angefangen habe (8051-Assembler). Daher habe ich diese Bezeichner einmal so festgelegt und immer wieder übernommen. Und damals wußte ich noch nicht viel über C. Falls diese Bezeichner noch woanders verwendet werden, würde mich ja der Compiler warnen:
1 | test.c:5:1: warning: "_A" redefined |
2 | test.c:4:1: warning: this is the location of the previous definition |
Der 8051 hat ja nen speziellen Tabellenbefehl: MOVC A, @A+DPTR Und damit hat er einem das Arbeiten mit Tabellen quasi aufgedrängt. Peter
Peter Dannegger schrieb: > Falls diese Bezeichner noch woanders verwendet werden, würde mich ja der > Compiler warnen. Stimmt... Ich (Anfänger) nutze auch öfters solche Bezeichner, nachdem ich gelesen hab dass die reserviert sind versuche mir das aber abzugewöhnen. Naja, wenn der Compiler aufpasst alles nicht so schlimm.
Hallo, bei mir spinnt das Programm. Es kommt ständig so eine Fehlermeldung, wenn ich irgendwas anklicke in dem Programm. Ausser wenn ich die Reiter durchschalte, dann passiert es nicht.
1 | Informationen über das Aufrufen von JIT-Debuggen |
2 | anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung. |
3 | |
4 | ************** Ausnahmetext ************** |
5 | System.FormatException: Die Eingabezeichenfolge hat das falsche Format. |
6 | bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) |
7 | bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) |
8 | bei System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info) |
9 | bei System.Convert.ToInt16(String value) |
10 | bei siebensegmentcalc.Form1.anzeige() |
11 | bei siebensegmentcalc.Form1.Label8_Click(Object sender, EventArgs e) |
12 | bei System.Windows.Forms.Control.OnClick(EventArgs e) |
13 | bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) |
14 | bei System.Windows.Forms.Control.WndProc(Message& m) |
15 | bei System.Windows.Forms.Label.WndProc(Message& m) |
16 | bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) |
17 | bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) |
18 | bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) |
19 | |
20 | |
21 | ************** Geladene Assemblys ************** |
22 | mscorlib |
23 | Assembly-Version: 2.0.0.0. |
24 | Win32-Version: 2.0.50727.4952 (win7RTMGDR.050727-4900). |
25 | CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll. |
26 | ---------------------------------------- |
27 | 7-Segment-Calculator |
28 | Assembly-Version: 1.0.0.0. |
29 | Win32-Version: 1.0.0.0. |
30 | CodeBase: file:///C:/Users/Tom/Pictures/7-Segment-Calculator.exe. |
31 | ---------------------------------------- |
32 | Microsoft.VisualBasic |
33 | Assembly-Version: 8.0.0.0. |
34 | Win32-Version: 8.0.50727.4927 (NetFXspW7.050727-4900). |
35 | CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll. |
36 | ---------------------------------------- |
37 | System |
38 | Assembly-Version: 2.0.0.0. |
39 | Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900). |
40 | CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll. |
41 | ---------------------------------------- |
42 | System.Windows.Forms |
43 | Assembly-Version: 2.0.0.0. |
44 | Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900). |
45 | CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll. |
46 | ---------------------------------------- |
47 | System.Drawing |
48 | Assembly-Version: 2.0.0.0. |
49 | Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900). |
50 | CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll. |
51 | ---------------------------------------- |
52 | System.Runtime.Remoting |
53 | Assembly-Version: 2.0.0.0. |
54 | Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900). |
55 | CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll. |
56 | ---------------------------------------- |
57 | mscorlib.resources |
58 | Assembly-Version: 2.0.0.0. |
59 | Win32-Version: 2.0.50727.4952 (win7RTMGDR.050727-4900). |
60 | CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll. |
61 | ---------------------------------------- |
62 | System.Windows.Forms.resources |
63 | Assembly-Version: 2.0.0.0. |
64 | Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900). |
65 | CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll. |
66 | ---------------------------------------- |
67 | |
68 | ************** JIT-Debuggen ************** |
69 | Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der |
70 | Konfigurationsdatei der Anwendung oder des Computers |
71 | (machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden. |
72 | Die Anwendung muss mit aktiviertem Debuggen kompiliert werden. |
73 | |
74 | Zum Beispiel: |
75 | |
76 | <configuration> |
77 | <system.windows.forms jitDebugging="true" /> |
78 | </configuration> |
79 | |
80 | Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten |
81 | Ausnahmen an den JIT-Debugger gesendet, der auf dem |
82 | Computer registriert ist, und nicht in diesem Dialogfeld behandelt. |
Ich nutz Windows 7 Home Premium MfG Tom
Tom Z. schrieb: > Ich nutz Windows 7 Home Premium Benutzt denn sonst jemand Win7 und hat das Programm schonmal ausprobiert? Tom welches .net Framework verwendest du denn?
Lehrmann Michael schrieb: > Das Programm speichert die benutzerdefinierte Einstellungen in der > Registry ab (31 Werte). Für das kleine Programm würde ich da Inis Vorschlagen oder Ressourcen. ;)
*.ini Liebhaber schrieb: > Lehrmann Michael schrieb: >> Das Programm speichert die benutzerdefinierte Einstellungen in der >> Registry ab (31 Werte). > > Für das kleine Programm würde ich da Inis Vorschlagen oder Ressourcen. > ;) Unter Win7 habe ich ziemlich schlechte Erfahrungen mit *.ini gemacht. Wie bereits erwähnt ist das Programm nur so zusammengeklickt - ich hab mir da nicht sonderlich viel Mühe gegeben - auch wenn ich es eigentlich tun sollte. Vielleicht arbeite ich das ganze mal noch ein bisschen besser aus. - (SQL) Datenbank für die Symbole + Editmöglichkeit - dann hat sich auch die Sache mit den Einstellungen erledigt - noch andere Segmentanzeigen - die von Peter angedeuteten Möglichkeiten - Verzicht auf .net Plattform
Hi, ja ha ha, das sah fast genauso aus und schwirrte hier irgendwo im Forum rum. Es war etwas einfacher gestrickt und man konnte auch 14 und 16 segment anzeigen damit beakkern. Ich habe diese Fehlermeldung wenn ich z.B. auf ein Segment klicke nach dem Starte. Habe XP und Studio 6.0. Ist alles schon etwas älter... M.
ich habe Ihn wieder gefunden: http://www.elv.de/output/controller.aspx?cid=153&detail=1&detail2=45 man
Lehrmann Michael schrieb: > Tom welches .net Framework verwendest du denn? Hallo, in Programme und Funktionen steht das hier: 4.0.30319 hab grade gesehen, dass in den von mir geposteten Error Code das hier drin steht: > CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727 >/mscorlib.dll.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.