mikrocontroller.net

Forum: Projekte & Code Siebensegment Editor Version 1


Autor: Lehrmann Michael (ubimbo)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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ß

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
//                      Segment order
#define _A      0x10
#define _B      0x20
#define _C      0x40
#define _D      0x02
#define _E      0x01
#define _F      0x08
#define _G      0x04
#define _DP     0x80

//                      Number code
#define _0      _A+_B+_C+_D+_E+_F
#define _1         _B+_C
#define _2      _A+_B+   _D+_E+   _G
#define _3      _A+_B+_C+_D+      _G
#define _4         _B+_C+      _F+_G
#define _5      _A+   _C+_D+   _F+_G
#define _6      _A+   _C+_D+_E+_F+_G
#define _7      _A+_B+_C
#define _8      _A+_B+_C+_D+_E+_F+_G
#define _9      _A+_B+_C+_D   +_F+_G
#define CHAR_E  _A+      _D+_E+_F+_G
#define CHAR_r              _E+   _G
#define MINUS                     _G
#define SPACE   0

//                      7 segment table
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

Autor: meckermensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: meckermensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry für DoPo...

Peter Dannegger schrieb:
> //                      Segment order
> #define _A      0x10
> #define _B      0x20
> #define _C      0x40
> #define _D      0x02
> #define _E      0x01
> #define _F      0x08
> #define _G      0x04
> #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_002dspeci...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
test.c:5:1: warning: "_A" redefined
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

Autor: meckermensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Tom Z. (tom_z)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.
Informationen über das Aufrufen von JIT-Debuggen
anstelle dieses Dialogfelds finden Sie am Ende dieser Meldung.

************** Ausnahmetext **************
System.FormatException: Die Eingabezeichenfolge hat das falsche Format.
   bei System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
   bei System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
   bei System.Int16.Parse(String s, NumberStyles style, NumberFormatInfo info)
   bei System.Convert.ToInt16(String value)
   bei siebensegmentcalc.Form1.anzeige()
   bei siebensegmentcalc.Form1.Label8_Click(Object sender, EventArgs e)
   bei System.Windows.Forms.Control.OnClick(EventArgs e)
   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   bei System.Windows.Forms.Control.WndProc(Message& m)
   bei System.Windows.Forms.Label.WndProc(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladene Assemblys **************
mscorlib
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4952 (win7RTMGDR.050727-4900).
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
7-Segment-Calculator
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///C:/Users/Tom/Pictures/7-Segment-Calculator.exe.
----------------------------------------
Microsoft.VisualBasic
    Assembly-Version: 8.0.0.0.
    Win32-Version: 8.0.50727.4927 (NetFXspW7.050727-4900).
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll.
----------------------------------------
System
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Windows.Forms
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System.Drawing
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System.Runtime.Remoting
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll.
----------------------------------------
mscorlib.resources
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4952 (win7RTMGDR.050727-4900).
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
System.Windows.Forms.resources
    Assembly-Version: 2.0.0.0.
    Win32-Version: 2.0.50727.4927 (NetFXspW7.050727-4900).
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.


Ich nutz Windows 7 Home Premium



MfG Tom

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: *.ini Liebhaber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. 
;)

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Maddin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Maddin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe Ihn wieder gefunden:

http://www.elv.de/output/controller.aspx?cid=153&d...
man

Autor: Tom Z. (tom_z)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.