Ich hab mal ein kleines Programm geschrieben, um eigene Schriftarten auf dem LCD darzustellen. Das Programm sollte relativ selbsterklärend sein. Es gibt bis jetzt 3 "berechnungs" Modi: Spalten: Für einen Software character generator verwendbar, in dieser Darstellungsweise wird ein bisschen weniger Flash speicher benötigt, jedoch etwas mehr Aufwand beim Lesen. Zeilen: Diese Daten kann man direkt in den Character Generator RAM des T6963c schreiben oder auch für seinen eigenen Software Character generator verwenden. invertierte Zeilen: Diese Funktion benötigt Bernhard für seine Textdarstellung auf dem TV, ob es noch irgendwo anders Anwendung finden kann weis ich nicht. (Hierbei wird das Byte nicht von rechts nach links gelesen, sondern von links nach rechts) Ich hoffe jemand kann damit was anfangen. Freue mich natürlich auch, wenn jemand nen Verbesserungsvorschlag hat oder einen Bug findet :) PS: Das ganze ist in Java geschrieben. Ich habs bei mir mit Java 5 am laufen sollte aber auch mit 1.4 oder früher laufen.
Hallo, Super! Genau sowas kann ich gut gebrauchen. Aber gleich eine unverschämte Frage dazu. Ich benutze teilweise selbstdefinierte Zeichen, die folgenden Aufbau haben können: Waagerechte Folge über x Zeichen, die z.B. eine Rasterlinie mit Querstrichen darstellen. Senkrechte Folge über x Zeichen, die z.B. eine Rasterlinie mit Querstrichen darstellen. "Bigfonts" in einem Raster von x*y Zeichen. Sinn der Sache ist es, z.B. den Grafiklayer komplett löschen zu können, ohne Raster und Anzeigen neu schreiben zu müssen, wenn die grafische Anzeige neu aufgebaut wird (Oszi, Logikanalyzer asl Beispiel). Könnte man Dein Programm so erweitern, daß man eine Anzahl Zeichen in x- und y-Richtung vorgibt, man dann in diesem Raster malt und das als entsprechende Anzahl Zeichen erzeugt? Also z.B. X=3, Y=3, entsprechend großes Raster anzeigen, ausmalen und dann 9 Definitionen erzeugen füe y1x1,y1x2,y1x3,y2x1 usw. usw. Dann könnte man auch wie früher in einem Spriteeditor Symbole erzeugen, die man lieber im Textmode anzeigen will. Maximum wäre theoretisch bei mir 1 Zeilen a 40 Zeichen (also 40), 1 Spalte a 16 Zeilen (16) oder etwa 6x6 (36). Vielleicht könnte man ja da was machen... ;) Gruß aus Berlin Michael
Hmjo klar lässt sich machen, nur dann muss ich das Layout noch mal überdenken :) Ich werde mal sehen, was sich machen lässt.
Noch mal ne frage: du benötigst dann aber Pro Zeichen alle Pixel oder? Immoment hab ich es ja jetzt so vorgesehen, dass immer eine Reihe Pixel rechts und unten Frei bleibt, damit die Zeichen nicht aneinander Kleben, das ist für diese Anwendung dann nicht Sinnvoll oder? Soll ich auch im normalen Editor alle Pixel zur verfügung stellen?
Hallo, erstmal Danke für die schnelle Reaktion. Ja, stimmt, alle Pixel, da hatte ich noch nicht drauf geachtet. Alle Pixel im normalen Editor (wahlweise) wäre da natürlich auch nicht verkehrt. Die Berücksichtigung von 8/6-Pixelmode beim T6369c traue ich mich jetzt garnicht anzusprechen. ;) Ich hatte schonmal überlegt, sowas in VisualBasic zu schreiben, wäre das Einzige, was ich noch zur Hand hätte, fehlte aber die Zeit und die zwingende Notwendigkeit. :( Naja, mußte VB sowieso wieder rauskramen, um einen speziellen Editor für .dbf zu schreiben, weil kein Windows-ODBC-Treiber mehr unsere FoxPro-Variante fehlerfrei schreiben will. Die Software, zu der die gehören, wird aber eben noch genutzt... Gruß aus Berlin Michael
Die 6/8er umschaltung sollte auch kein größeres Problem sein. Ich hab nur immoment keine wirkliche Ahnung, wo ich den bigfonts editor unterbringen soll ... soll es ein neues Fenster werden oder soll ich die Größe des Normalen Fensters an die Pixelzahl anpassen?
Hallo, hmm, wenn ich es machen würde, würde ich vermutlich das normale Fenster anpassen, also irgenwo Voreinstellung von x=1 bis X=? und Y=1 bis Y=?. X=1 und Y=1 wäre dann eben Grundeinstellung. Evtl. noch die Werte sinnvoll begrenzen, die 6/8-Umschaltung berücksichtigen und dann das Fenster erzeugen? Beim Übernehmen dann wieder entsprechend zerlegen? Hängt natürlich von Deiner Programmstruktur ab, ob das so ginge. Gruß aus Berlin Michael
doch denke das lässt sich machen. Muss mal gucken ob ich heute zeit finde.
Hallo, keine ungesunde Hektik... ;-) Mein Projekt, das den Anlaß dazu gab, liegt im Moment wegen Zeitmangel und Gehäusebau-Problemen etwas auf Eis. http://www.mikrocontroller.net/forum/read-4-389541.html#new Die Hard-/Software steht zwar inzwischen zu 80%, der Drahtverhau muß jetzt aber erstmal eine mechanische Grundlage bekommen... Gruß aus Berlin Michael
Ja von deinem Oszi hab ich schon gelesen :) Nene ich Programmiere gern :P Und da ich hier noch n paar 240x128er LCDs rumliegen habe hab ich mir auch schon gedanken gemacht damit nen klein Oszi zu bauen :>
So Update: - Wahl zwischen 6x8 und 8x8 Schrift - Leerzeilen ein oder Ausblenden - Position der Elemente Passt sich an die Größe des "editors" an, somit ist alles vorbereitet für die BigFonts :> Die Bigfonts mach ich nächstes mal rein jetzt ist mein Kopf erst ma zu voll ^^
Argh ... so schnell kanns gehen man klickt immer zu schnell jetzt hier mit Anhang Wenn wer n Bug findet nur her damit xD
Hallo, Du sollst ja Deinen Bug haben (oder ich bin zu blöd ;)). Er speichert nicht, macht alles, schreibt aber keine Datei? Die erste Version übrigens auch nicht, hatte ich garnicht probiert. Hab vorsichtshalber gerade noch die aktuelle JRE gezogen 5.0 Update 6. Hat natürlich nicht geholfen. ;( Gruß aus Berlin Michael
Hmmmm ich kann gerade nich sagen warum das nich mehr geht ... hab da dran nichts mehr geändert !?! bei mir gehts auf jeden fall immoment auch nicht :/ ich werd mich mal eben dran hocken.
Sooo jetzt gehts war n kleiner Fehler drin bei der Überprüfung, ob die der dateiname zulässig ist (kein null pointer und länge > 0) Geht jetzt wieder :)
Hallo, naja, dafür scheint jetzt das File defekt oben angekommen zu sein... "invalid or corrupt jarfile" meint er jetzt. Nimm es nicht tragisch, es gibt wirklich schlimmeres. :-))))) Gruß aus Berlin Michael
hmhm ... auf meiner Platte gehts noch ich probiers noch mal :>
Hmm muss wohl bei dir was Faul sein, denn wenn ich das alte archiv runterlade gehts auch ... haste vll beim download n fehler gehabt?
Hallo, naja, ich setz mich für heute heulend in die Ecke. ;)))) Die Version von 17:47Uhr . downlaod - starten -geht. Beide neueren Versionen mault das blöde JRE hier rum?!? Na egal, schaue ich morgen aml, jetzt kann ich nicht neustarten, der macht noch was im Hintergrund. Danke für Deine Mühe und schönen Sonntagabend noch. :) Gruß aus Berlin Michael
Hmm sehr merkwürdig aber naja nen schönen Abend dir noch :) vll finde ich ja auch bei mir nen Fehler.
So noch ne Frage zu den Bigfonts ... wie soll ich die Formatieren? Alle bytes hintereinander also .db 54,54,6,8,6,8,4,68,6,31,84,215,13,151,1,55,211,133 ;Kommentar oder für jedes teilZeichen eine eigene Zeile? also .db 54,54,6,8,6,8,4,68 ; Kommentar(1) .db 6,31,84,215,13,151,1,55; Kommentar(2) usw?
Hallo, ich würde die getrennte Version bevorzugen. Hätte den Vorteil, daß man Duplikate, die sich vielleicht ergeben, einfach rauswerfen kann. Da zumindest ich das dann sowieso erst machen würde, wenn ich den Zeichencode habe und die zugehörigen Ausgaben zusammenstelle und da fällt mir doch glatt was ein... hast Du noch Platz für eine Einstellung? Erster Zeichencode? Den dann als Kommentar fortlaufend mit ausgeben? Letztlich definiert man ja dann irgendwo die Ausgabe auch wieder mit .db Zeichencode,Zeichencode usw. usw. Die Definitionen schicke ich ja sowieso im Loop zum Char-Ram, die Zuordnung bliebe also immer erhalten, solange man nicht mit Hand drin ändert. Gruß aus Berlin Michael
So ich hab deinen Text jetzt zum 3. mal durchgelesen und endlich verstanden was du meinst ... ist wohl schon etwas spät :> Die Zeichenketten werden ja nach dem ASCII code Sortiert jetzt könnte ich einfach den Listenindex dahinterschreiben ... ist kein Problem
Ok das war einfach ... probiers mal damit dsa war doch was du meintest oder? ^^
Hallo, mal ne ganz dumme Frage für nicht Java Kenner. Wie führt man das Programm aus? Wo muss ich klicken damit es gestartet wird? mfg Stefan
Wenn du Java RE oder SDK drauf hast (also einfach nur Java runtime von java.sun.org) sollte ein doppelklick reichen :) Falls dir WinAce oder ein anderes KomprimierungsProgramm die verknüpfung überschrieben hat kannst du mal Probieren in der cmd "java -jar char_gen.jar" einzutippen (musst dich hierbei natürlich im gleichen verzeichnis befinden)
Hallo, danke, jetzt läuft es. Woran es lag: Ich hab die Datei runtergeladen und gespeichert. Es wurde aber nicht unter char_gen.jar sondern unter char_gen.zip gespeichert. Warum auch immer. Wenn ich da dann draufklicke entpackt mir Winzip das zurück in die Sourcen. Da konnte ich natürlich nichts von ausführen. Jetzt grade nachmal runtergeladen und in char_gen.jar zurückbenannt, nun gehts. Zwischenzeitlich habe ich mir nun auch das Java SDK und EDK runtergeladen und installiert. Ich hatte auch versucht das was er mir da entpackt hat neu zu compilieren und dann auszuführen, ging aber auch nicht :-) Naja, jetzt habe auch ich mal einen Grund mich mit Java zu beschäftigen :-) mfg Stefan
Java wird während der laufzeit interpretiert (bzw der bytecode) also hätte "java frame" im entpackten ordner auch funktionert. Bei den .JARs hat mans halt alles schön in einer Datei. Freue mich aber auch über Feedback zum programm :P
Hallo Hauke, sehr schöne Idee!! Könntest Du uns bitte Dein Programm als ZIP-Datei zur Verfügung stellen? Danke Bernhard
Hallo, @Bernhard Schulz: hat es einem bestimmten Grund mit dem Zip? .jar ist eine Java-Applikation, läßt sich einfach per Doppelklick starten, wenn das Sun-Java-SRE installiert ist. Ansonsten bei Problemen siehe obige Postings, falls Windows da an den Endungen rumpfuscht. Gruß aus Berlin Michael
@Michael,
>hat es einem bestimmten Grund mit dem Zip?
Ich dachte, *.jar wäre eine gepacktes Programm.
Sorry, ich ziehe meine Anfrage zurück.
Bernhard
*.jar ist zwar gepackt aber lässt sich auch wieder entpacken. Ich hab alle Sourcen mit rein gepackt also kannst du dir auch den Quellcode angucken falls du willst (aber vorsicht ist nichts kommentiert ^^)
Hallo, Du übertriffst Dich selbst mit dem Tempo. :)))) so nach meinem Windows-Neustart geht es auch wieder mit Doppelklick, muß wohl die Installatione vom JRE Update6 noch nicht komplett gewesen sein gestern abend. Mit dem Index gefällt mir so erstmal gut, ist ja mehr für die angedachten Bigfonts u.ä., wenn ich da z.B. ein Zeichen erstelle und hinterher den Kram aneinander hänge, siehe ich so, wo was neues anfängt und wo das Teil in der Anordnung hingehört. Ich denke einfach, wenn ich ein halbes Jahr später in solch eine Definition hineinschaue, hilft das dann doch etwas. ;) Speichern geht jetzt auch, aaaaber... er speichert den Index nicht mit in den Kommentar, wenn er ausgewählt war? ;( Gruß aus Berlin Michael
Ich guck mal eben drüber ich glaub ich weis schon wo dran es liegt
So das ging auch schnell :) Ich speicher jetzt, was Wirklich in der Liste drin steht, und nicht was im Array steht
@Hauke ich muss mal etwas naiv fragen, auf meinem betagten PC läuft derzeit Windows 98. Wo bekomme ich das Java her? Bernhard
http://java.sun.com/javase/downloads/index.jsp Da lädst du dir "Java Runtime Environment (JRE) 5.0 Update 8" runter Installieren und das wars
Sooo ich hab n bissl weiter gemacht und den Editor an die BigFonts angepasst. Nur erst mal zum testen ob es so genehm ist :> Übernommen werden immer noch nur die Daten aus der oberen linken Zelle. Der Code ist jetzt unheimlich kompliziert und mir reicht es für heute ^^ Viel spass beim testen
Hallo, es ist so genehm. :)) Das die Geschichte etwas kompliziert wird. habe ich schon befürchtet... Zumindest hat es sich hier im "Super-Schnell-Test" nicht daneben benommen, ich komme aber auch erst am Wochenende dazu, da genauer rumzuspielen. Muß erstmal Brötchen verdienen. Gruß aus Berlin Michael
Sooo jetzt sind sowohl der Code als auch ich verrückt ... :) Aber es Funktioniert (denke ich) Ich wette es sind noch Bugs drin aber ich bin jetzt zu durcheinander um alles zu testen ^^ Feedback erwünscht !! :) PS: In der "Ausgabe" Zeile wird immoment nichts ausgegeben, weil ich das Prinzip etwas geändert habe. In der Liste sieht man nun nicht mehr die Daten die erzeugt wurden sondern nur Welche Zeichen erstellt wurden und ob es sich dabei um einen BigFont handelt (und wenn ja wird auch angegeben von welcher größe z.b. 2x2)
Hallo, vermutlich hast Du die Wette um die Bugs gewonnen... :) Im Anhang die Ausgabedatei. Einstellung 3x3, 6x8Bit-Font, keine Leerzeile, kein Index Links oben sind 6x8 Pixel aktiviert, der Rest ist leer. Hmmmmmmm.... Ich bastel erstmal meine TCP-Pakete weiter. ;) Schönes Wochenende :) Gruß aus Berlin Michael
Probiers jetzt mal ... ich hatte es nur mit 2x2 Fonts probiert da ging alles ^^ Aber ich hoffe jetzt läufts. Als nächstes will ich noch einbauen, dass man "Malen" kann, d.h. mit gedrückter maustaste drüber werden die boxen aktiviert und dass man verschieden große "stifte" nehmen kann, sodass mehrere Pixel auf einmal aktiviert werden können.
argh natürlich mal wieder zu früh geklickt und dann zu spät gemerkt ^^
Hallo, ja, sieht jetzt ok aus. Zu Deiner Mal-Idee: das habe ich mich garnicht mehr getraut zu fragen....... Gruß aus Berlin Michael
Das is vermutlich einfacher als die BigFonts :)
Hallo, @Hauke Radtki: naja, habe von Jave schlicht garkeine Ahnung, weiß also nicht, welche Unterstützung es dafür bietet. Hmm, ich könnte gerade Deinen Satz mit dem verrückten Code von oben wiederholen... Die Buffer- und Prüfsummen-Geschichte für TCP war eigentlich bis eben noch ok bei meiner AVR-Ethernet-Spielerei. Jetzt plötzlich nicht mehr?!?!? ;) Gruß aus Berlin Michael
:)) Java Unterstützt sowas nur indirekt ... man kann halt herausbekommen wo der Zeiger ist, und ob/weche komponente sich unter ihm befindet, so sollte das machbar sein.
Und auf ein neues ... Malen kann man jetzt mit gedrückter ALT taste wird gemalt mit gedrückter STRG taste wird gelöscht. Das liegt daran, dass ich keine Funktion in Java gefunden habe mit der man überprüfen kann ob die maustaste gedrückt ist ... Das Malen ist bei einer großen anzahl von pixeln langsamer, einfach aus dem grund weil ich nicht rausfinden konnte, was welcher pixel das mouseOver ereignis auslöst und so alle Pixel durch gehen muss und gucken muss ob sich die maus über einem davon befindet, nicht Ideal aber es funktioniert erst mal, man darf halt die maus nicht zu schnell bewegen. Auch das aussehen der Pixel ist jetzt eher an ein LCD angelehnt ...
Hallo,
warum mußt Du Dir unbedingt den Sonntag versauen? ;))
>Auch das aussehen der Pixel ist jetzt eher an ein LCD angelehnt ...
Bei mir eher ein ausgeschaltetes LCD, will sagen, keine Anzeige
irgendwelcher Pixel, leere Fläche dort.
Scheint aber zu malen, speichert die Daten, ich sehe eben nur nichts.
Naja, man kann eben nicht alles haben. :)))))
Gruß aus Berlin
Michael
Man sollte natürlich auch das was man Exportiert hat testen ... irgendwie hat er die Bilder nicht mit reingepackt. Ich probier das mal hinzubekommen :/
Sooo jetzt gehts ... Java is wirklich umständlich bei Dateizugriffen -.-
Sooo jetzt geht das Zeichnen etwas schneller und Ich hab den Dicken Pinsel eingebaut
Hallo, scheint jetzt alles richtig zu machen. :)) Werde wohl mal die paar nötigen Zeichen meines Bigfont malen und das Ergebnis in meinen Code vom meinem "Super-"Oszi werfen, dann sehe ich ja, was dabei rauskommt. ;) Naja, ansonsten nochmal Gratulation, ist richtig gut geworden so. Mal schauen, ob es noch andere interessiert. Ansonsten lehne ich mich jetzt zurück und warte,bis Du die Geschichte mit den mouse-button-events klarkommt, Google hat nur irgendwas zu SwingUtilities in dem Zusammenhang rausgerückt. Gruß aus Berlin Michael
Ok das war einfach ... gewusst wie :)) Jetzt kann man einfach Zeichnen wie man es gewöhnt ist :)
Hallo, naja, warum nicht gleich so... ;))) Ein Problem ist noch in der Setz-Routine. Einzel-Pixel lassen sich nicht setzen, beim Klick auf Links wird der Pixel markiert, beim Loslassen ist er wieder weg... Bein malen ist es ok, beim Löschen mit Rechts geht auch alles richtig. Liegt wohl daran, daß gesetzte Pixel mit Links gelöscht werden? Sollten eben nur noch mit Rechts gelöscht werden, denke ich. Gruß aus Berlin Michael
Ja das Problem hab ich auch gerade bemerkt, liegt daran, dass wenn ein event ausgeführt, sobald die linke maustaste über einem pixel gedrückt wird, dass das Pixel aktiviert. Da es jedoch checkboxen sind, und dadurch die funktion haben sobald ein klick ausgeführt wird (also in diesem fall dann die taste wieder losgelassen wird) der zustand getoggelt wird. D.h. beim drücken aktiviert beim loslassen getoggelt ^= ausgeschaltet Ich arbeite dran :)
Soo das wäre auch geklärt und ein kleiner bug mit dem großen Pinsel ist auch gelöst
Hallo, nö nö, is nich..... ;)) Setz mal einen Pixel und dann lösche ihm mit Rechts gleich wieder. Wenn Du einen anderen setzt, darfst Du den ersten löschen. Zieh eine Linie und dann lösche nur den ersten Pixel usw. Eigentlich lustig, kannst Du als Game vermarkten. ;-))))))))) Gruß aus Berlin Michael
Gut dass es aufmerksame Tester wie dich gibt :)))) So jetzt aber.
Hallo, sieht jetzt ok aus. :) Naja, Tester... dafür bin ich bei meinen Bekannten berühmt-berüchtigt... Kann ich ja an der Ergonomie rummaulen, wo die Funktionen gehen. :) - Er warnt nicht, wenn beim Save die Ausgabedatei schon existiert - Warum .txt als Vorgabe und nicht .asm - Wenn man schnell malt, sind waagerechte/senkrechte Linien schwer zu halten, in Grafikprogrammen kann man da meist Shift festhalten, dann werden nur waagerechte/senkrechte Linien gezeichnet Soll ich weitermachen? ;-))))))))))))) Nee, lieber nicht, gefällt mir ausgesprochen gut bisher. Danke nochmal für die Mühe. Gruß aus Berlin Michael
Das mit den Linien hab ich mir schon gedacht, nur ich weis wegen dem vier-dimensonalen Pixel array noch nicht ganz wie ich das realisieren soll ^^ txt war nur das erste was mir eingefallen ist ... asm ist aber ganz leicht machbar :> Das mit dem Warnen, wenn die Datei schon existiert sollte ich auch noch hinbekommen, und ja mach nur weiter :> Nur ich denke heute werde ich vorerst nix mehr machen.
Aufgrund extremer langeweile hab ich die beiden ersten sachen schnell mal Implementiert.
Sooo ich hab noch n bisschen dran geschraubt. Bugfixes: - Beim Speichern konnte es passieren, dass in die ausgewählte Datei gespeichert wird, obwohl abbrechen geklickt wurde -Das Zeichnen selbst verursacht jetzt keine CPU last mehr(bzw nahezu keine), die alte Version war immer bei 100% (jaja bei dualcore nur bei 50 ....) Jetzt noch ne Frage: Soll ich auch "Pinsel" größer einbauen als 2x2 Pixel? Was noch kommt: Linien Zeichnen durch das drücken der Shift-taste in eine Richtung fixieren
Hallo, gleich mal reinschauen. :) Für mich sind größere Pinsel eigentlich nicht nötig, der Zeichenbereich ist ja nicht sooo riesig. Gruß aus berlin Michael
Ach was ich auch noch vergessen hab was ich noch einbauen will: Dass das Programm eine .properties Datei erzeugt in der die letzten benutzten einstellungen gespeichert werden (größe, Zeilenstart-,Trenn-,Endzeichen usw)
Sooo dar war erst mal n dicker bug beim erstellen von 8x8 schriftarten ... Und das Programm erstellt jetzt eine charGen.properties, in der alle einstellungen gespeichert werden.
Auch wenns nich die meisten runterladen ... n bisschen Feedback hätte ich trotzdem gerne von den paar :))
Hallo, naja, sind bestimmt ein paar mit der 3-G-Methode dabei... Gezogen-Gesehen-Gelöscht. ;) Will nicht hoffen, daß die 4-G-Methode auch dabei ist...... Hab nur kurz reingeschaut, machte offenbar noch, was es sollte. Da ich meine Gehäuseprobleme mit dem Oszi/.../... noch nicht komplett gelöst habe, wartet die Software und damit die praktische Nutzung Deines Programms leider noch etwas. Gruß aus Berlin Michael
Hi, hab das Programm mal runtergeladen und versucht zu testen. Nach save kann ich aber die abgespeicherte Datei nirgends finden (vielleicht zu blöd die software zu bedienen ;)). Gruß Slowflyer
Wenn du auf Save drückst sollte ein Dialog erscheinen, in dem du auswählen kannst, wo du die Datei Speichern willst. Wenn nicht is da was faul :)
Das Dialog-Fenster erscheint. Wenn ich den Dateinamen eingegeben habe und auf speichern clicke, taucht die Datei weder im angegebenen Verzeichnis noch sonst wo auf der Festplatte auf. Gibt es vielleicht irgendwelche Bedingungen, die vorher erfüllt sein müssen? Gruß, Slowflyer
Die einzige bedingung ist, dass du auf das verzeichnis schreibrechte hast. Welche Java Version hast du?
Hallo, nö... Die einzige Bedingung ist, das Du wieder heile machst... ;) Speichert nicht mehr. Gruß aus Berlin Michael
Tatsache ... Speichern tut er schon noch. jedoch nur, wenn die Datei schon vorhanden ist. Ist jetzt aber gefixed also sollte es gehen :)) Nein, es sollte nicht es muss gehen ! :P
Hallo, na geht doch, Du willst ja nur die Leute verwirren... ;)) Wollte ich letztens schon anmerken: er überschreibt bei mir immernoch eine bestehende Datei ohne Warnung. Gruß aus Berlin Michael
Sicher? kommt kein Neues Fenster, das dich fragt ob du die bestehende Datei überschreiben willst? Ah ich glaub ich habs gefunden. Wenn die Datei existiert, du jedoch nur den Dateinamen ohne endung in das Feld schreibst überschreibt er die Datei ohne Warnung. Ich arbeite dran.
Sooo ich mach gerade n komplettes redisign der Software, weil das jetzt doch alles etwas unübersichtlich geworden ist. Möglich wirds dann auch sein: - Rechtecke,Linien usw zu Zeichnen (Kreise vorerst nicht, da Java die Kreise miserabel berechnet, und sie bei geringen auflösungen deswegen schei** aussehen) - Fertige Schriftarten zu Importieren und zu Editieren - Bilder zu Importieren (auch runterscalierbar) - Das ganze als C oder Assembler code Exportieren - Bereits erstellte eigene Schriftarten wieder laden Aber da ich euch nicht mit halbfertigem zeugs rumnerven will, gibts das erst, wenns wirklich einigermaßen gut funktioniert.
Sooooooo ... Ich hab mal n bisschen weiter gemacht, das ist bei rausgekommen. Ist noch lange nicht fertig, aber der Editor selbst ist nahezu fertig. Speichern/Exportieren kann man noch nix, aber das kommt noch. Was noch kommt: - Ein Editor für Bilder ( Man kann dann Bilder laden (und auch auf die Größe skalieren), Farbtiefe anpassen, damit sie für das eigene LCD geeignet ist (z.b. auch für das S65 oder das Nokia Display) und dann auch als Code Exportieren) -Gefüllte Ovale zeichnen geht noch nicht, auch ein Oval zu zeichnen selbst funktioniert nicht Optimal - "dicke" stifte gehen nicht, d.h. alle Linien, Rechtecke, Ovale sind nur 1 Pixel dick - Speichern/Laden der erstellten Schriftart / Exportieren als Code - Die Auflistung der Zeichen ist noch nicht fertig. Man wird noch Zeichen Hinzufügen / Löschen können. Änderungen der Werte (z.b. des HexCodes) wird auch die anderen Werte Aktualisieren (Dec wert, Ascii zeichen) - Man wird die Farben, mit denen man Zeichnet noch Auswählen können (immoment ist linksklick schwarz und rechtsklick weiß)
Hallo, damit Du nicht denkst, Du führst hier nur Selbstgespräche... ;) Sieht sehr interessant aus, ich warte mal auf die Fortsetzung. Oval sieht doch eigentlich ok aus? Gruß aus Berlin Michael
Aussehen tuts gut .. ja aber es ruckelt beim zeichnen, und wenn das oval ne geringe höhe oder breite hat ist es auch nich so schön (es fehlen pixel). Hab heute noch eine Füllmethode eingebaut mit der ich auch das Oval füllen werde. funktioniert shcon ganz gut. Damit das ganze praxistauglich wird werde ich als nächstes das Exportieren implementiren.
Hallo zusammen habe mir beide Prog´s Hauke herunter geladen funktioniert auch super DANKE an dieser Stelle für den Aufwand und die Investierte Zeit. Ich bin noch nicht so lange im Programmiergeschäft mit Assembler und C, Java etc. unterwegs. Habe mir vor kurzem nen GLCD mit KS0108 angeschafft nen Prog in asm hab ich mir auch so hingebogen. Mein anliegen ist dieses, ich weiß nicht wie ich meinem avr klar mache, wenn ich nen text ausgeben will er auf meine Tabelle mit den gespeicherten bzw codierten Buchstaben zugreifen soll und mir das gespeicherte Wort auf dem Display ausgeben soll? Irgend wie so!?. Hm ... hoffe mal das mir jemand vielleicht mal nen brocken Code posten kann. Hier mein´s:
1 | ..... |
2 | |
3 | ;*************************************************************** |
4 | ; Hauptprogramm |
5 | ; Schreibt "ATmega8535" in die erste Zeile und "LCD-Routine" |
6 | ; in die zweite Zeile des LCDs. |
7 | ;*************************************************************** |
8 | |
9 | main: |
10 | ldi temp1,LOW(RAMEND);setze Stack-Pointer |
11 | out SPL,temp1 ;an das SRAM-Ende |
12 | ldi temp1,HIGH(RAMEND) |
13 | out SPH,temp1 |
14 | |
15 | ldi r19, LED1 ;LED1 AN |
16 | out PORTD, r19 |
17 | |
18 | rcall init ;PORTA initialisieren |
19 | |
20 | ldi r19, LED2 ;LED2 AN |
21 | out PORTD, r19 |
22 | |
23 | ldi buffer,set_LCD ;setze LCD Funktion |
24 | rcall write_instr |
25 | |
26 | ldi buffer,LCD_on ;schalte LCD ein |
27 | rcall write_instr |
28 | |
29 | ldi buffer,clear_LCD ;loesche Anzeige |
30 | rcall write_instr |
31 | |
32 | ldi buffer,entry_mode ;Eingabemodus |
33 | rcall write_instr |
34 | |
35 | ldi r19, LED3 ;LED1 & 2 AN |
36 | out PORTD, r19 |
37 | |
38 | ;*************************************************************** |
39 | ;Holt den Text 'ATmega8535' aus der Tabelle und schreibt diesen |
40 | ;in die erste Zeile der Anzeige |
41 | ;*************************************************************** |
42 | ldi counter,6 ;Zeichenzaehler |
43 | ; ldi ZL,LOW(Tabelle1*2) ;Low-Zeiger auf Tabellenanfang |
44 | ; ldi ZH,HIGH(Tabelle1*2) ;High-Zeiger auf Tabellenanfang |
45 | |
46 | ldi ZL,LOW(FONT5x7*2) ;Low-Zeiger auf Tabellenanfang |
47 | ldi ZH,HIGH(FONT5x7*2) ;High-Zeiger auf Tabellenanfang |
48 | |
49 | loop_msg1: |
50 | lpm buffer,Z+ ;hole Zeichen aus Tabelle |
51 | rcall write_data ;Zeichen uebergeben |
52 | |
53 | ; lpm buffer,Z+ ;hole Zeichen aus Tabelle |
54 | ; rcall write_data ;Zeichen uebergeben |
55 | ; ;schreibe Zeichen in LCD |
56 | adiw ZL,1 ;16-Bit Zeiger erhoehen |
57 | dec counter ;alle Zeichen gesendet? |
58 | brne loop_msg1 ;Nein! Sende naechstes Zeichen |
59 | |
60 | ;*************************************************************** |
61 | ;Holt den Text 'LCD-Routine' aus der Tabelle und schreibt diesen |
62 | ;in die zweite Zeile der Anzeige |
63 | ;*************************************************************** |
64 | |
65 | ldi buffer,0b11000000 ;LCD-Startadresse 2.Zeile |
66 | rcall write_instr ;sende Befehl |
67 | ldi counter,11 ;Zeichenzaehler |
68 | ldi ZL,LOW(Tabelle2*2) ;Low-Zeiger auf Tabellenanfang |
69 | ldi ZH,HIGH(Tabelle2*2) ;High-Zeiger auf Tabellenanfang |
70 | |
71 | ;loop_msg2: |
72 | |
73 | lpm ;hole Zeichen aus Tabelle |
74 | mov buffer,zeichen ;Zeichen uebergeben |
75 | rcall write_data ;schreibe Zeichen in LCD |
76 | adiw ZL,1 ;16-Bit Zeiger erhoehen |
77 | |
78 | ;no_carry2: |
79 | |
80 | dec counter ;alle Zeichen gesendet? |
81 | brne loop_msg2 ;Nein! Sende naechstes Zeichen |
82 | |
83 | |
84 | |
85 | ;Endlosschleife. AVR zuruecksetzen, um Programm erneut zu starten |
86 | |
87 | loop: rjmp loop |
88 | |
89 | ;*************************************************************** |
90 | ;Tabelle 1 mit dem Text "ATmega8535", der in die 1.Zeile |
91 | ;geschrieben werden soll |
92 | ;*************************************************************** |
93 | |
94 | Tabelle1: .DB "ATmega8535" |
95 | |
96 | ;*************************************************************** |
97 | ;Tabelle 2 mit dem Text "LCD-Routine", der in die 2.Zeile |
98 | ;geschrieben werden soll |
99 | ;*************************************************************** |
100 | |
101 | Tabelle2: .DB "LCD-Routine" |
102 | |
103 | .db 126,127,19,19,19,127,126,0 ; A(65) Index: 0 |
104 | .db 127,127,107,107,107,127,62,0 ; B(66) Index: 1 |
105 | .db 127,127,99,99,99,99,99,0 ; C(67) Index: 2 |
106 | .db 127,127,99,99,99,62,28,0 ; D(68) Index: 3 |
107 | .db 127,127,107,107,107,107,0,0 ; E(69) Index: 4 |
108 | .db 127,127,27,27,27,27,0,0 ; F(70) Index: 5 |
109 | .db 62,127,99,99,107,123,59,0 ; G(71) Index: 6 |
110 | .db 127,127,8,8,8,127,127,0 ; H(72) Index: 7 |
111 | .db 0,0,65,127,127,65,0,0 ; I(73) Index: 8 |
112 | .db 48,64,65,127,63,1,0,0 ; J(74) Index: 9 |
113 | .db 127,127,8,28,119,99,0,0 ; K(75) Index: 10 |
114 | .db 127,127,96,96,96,96,0,0 ; L(76) Index: 11 |
115 | .db 127,127,6,12,6,127,127,0 ; M(77) Index: 12 |
116 | .db 127,127,6,12,24,127,127,0 ; N(78) Index: 13 |
117 | .db 62,127,99,99,99,127,62,0 ; O(79) Index: 14 |
118 | .db 127,127,19,19,19,31,14,0 ; P(80) Index: 15 |
119 | .db 62,127,99,107,115,63,94,0 ; Q(81) Index: 16 |
120 | .db 127,127,11,19,51,111,78,0 ; R(82) Index: 17 |
121 | .db 0,70,73,73,73,50,0,0 ; S(83) Index: 18 |
122 | .db 3,3,127,127,3,3,0,0 ; T(84) Index: 19 |
123 | .db 63,127,96,96,96,127,63,0 ; U(85) Index: 20 |
124 | .db 15,31,56,96,56,31,15,0 ; V(86) Index: 21 |
125 | .db 127,127,48,24,48,127,127,0 ; W(87) Index: 22 |
126 | .db 99,119,54,8,54,119,99,0 ; X(88) Index: 23 |
127 | .db 3,6,124,124,6,3,1,0 ; Y(89) Index: 24 |
128 | .db 67,99,115,123,111,103,99,0 ; Z(90) Index: 25 |
129 | |
130 | .EXIT |
Ich weiß zahlen wird er nicht ausgeben da nicht in der Tabelle. Danke im Voraus :-))
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.