Forum: Projekte & Code Siebensegment Editor Version 1


von Lehrmann M. (ubimbo)


Angehängte Dateien:

Lesenswert?

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ß

von Peter D. (peda)


Lesenswert?

Ü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

von meckermensch (Gast)


Lesenswert?

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.

von meckermensch (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

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

von meckermensch (Gast)


Lesenswert?

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.

von Tom Z. (tom_z)


Angehängte Dateien:

Lesenswert?

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

von Lehrmann M. (ubimbo)


Lesenswert?

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?

von *.ini Liebhaber (Gast)


Lesenswert?

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. 
;)

von Lehrmann M. (ubimbo)


Lesenswert?

*.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

von Maddin (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Maddin (Gast)


Lesenswert?


von Tom Z. (tom_z)


Lesenswert?

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
Noch kein Account? Hier anmelden.