PC-Programme von Uwe

Hier findet Ihr eine paar von mir geschriebenen PC-Programme die während dem programmieren der Librarys für den STM32F4 entstanden sind.

01 = PixelFontGenerator
02 = ImageGenerator
03 = FileConverter
04 = UART-Terminal-Programm
05 = UDP-Server
06 = HID-Terminal-Programm


01=PixelFontGenerator :

Weil mein Display keinen Zeichensatz hat, musste ich welche erzeugen. Und weil das per PC am einfachsten geht, habe ich dieses Programm geschrieben. Es wandelt beliebige Windows Fonts in Pixeldaten um und speichert diese als C-File ab.

Hinweis : unter Windows muss die Funktion “ClearType” ausgeschaltet sein !!
sonst werden die TrueType-Schriftarten nicht richtig dargestellt.

Der Windows-Font muss ein Monospace-Typ sein.
(d.h. alle Zeichen müssen die gleiche Breite haben)
Hinweis : ab der Version 1.6 können auch propotional Fonts umgewandelt werden

Die Breite vom erzeugten Font darf 16 Pixel nicht übersteigen.
(Hinweis : ab der Version 1.4 sind auch Fonts bis 32Pixel breite möglich)

Man kann vorher die Schriftart und Schriftgröse (event. Fett und Kursiv) einstellen und dann alle Ascii Zeichen vom Font automatisch umwandeln lassen.

Ab der Version 1.5 kann das Programm per “autoset” die Parameter für Start/Stop Koordinate selbst ermitteln.

Es kann auch festgelegt werden, das mehr (oder weniger) Zeichen als der “normale” Ascii-Zeichensatz (von 32 bis 126) umgewandelt werden sollen. Allerdings ist dieses File dann event. nicht mehr kompatibel zu meinen Font-Librarys. Das kann aber von euch angepasst werden.

Ab der Version 1.7 können auch Unicode Zeichen umgewandelt werden.
Ein spiegeln und invertieren der Zeichen ist auch möglich.

Ab der Version 1.8 können die Pixeldaten von einem Character
per MAUS geändert werden.

Das erzeugte C-File kann dann im C-Programm per #include eingebunden werden.

Hier das File zum download :

PixelFontGenerator
PixelFontGenerator

Hier der PixelFontGenerator Version 1.0.8 zum Download:

 


02=ImageGenerator :

Das Display das ich einsetze hat eine Farbtiefe von 16Bit (RGB565). Um normale Windows-Bitmaps (*.bmp) in dieses Format umzuwandeln, habe ich dieses Programm geschrieben.

Die maximale Bildgröße ist auf 240 x 320 Pixel beschränkt (das ist auch die Displaygröße).
Hinweis : ab der Version 1.3 kann die Größenbeschränkung abgeschaltet werden)

Vor dem umwandeln kann ausgewählt werden, ob ein C-File oder ein Image (Hex-File) erzeugt werden soll. Das C-File muss per #include in das Flash der CPU kopiert werden und mit der Library “STM32_UB_GRAPHIC” angezeigt werden. das Image-File kann auf SD-Karte gespeichert werden und dann mit der Library “STM32_UB_PICTURE” geladen und angezeigt werden.

Hier das File zum download :

ImageGenerator
ImageGenerator

Hier der ImageGenerator Version 1.0.3 zum Download:


03=FileConverter :

Dieser Konverter wandelt HEX-Files in Ascii-Files um und umgekehrt. Damit kann z.B. ein JPG-Bild (*.jpg) in ein C-File umgewandelt werden. Per #include kann so das Bild z.B. von der Library “STM32_UB_GRAPHIC” angezeigt werden.

Die Umgekehrte Richtung geht auch…macht aber nur Sinn, wenn das Format stimmt.
(Die einzelnen Werte müssen als 8bit Ascii-Hexwert z.B. “0xA4″ in dem File vorliegen.

Es können auch WAV-Files oder MP3-Files in C-Files gewandelt werden.

Hier das File zum download :

FileConverter
FileConverter

Hier der FileConverter Version 1.0.3 zum Download:


04=UART Terminal-Programm : (für die Verbindung zum PC per UART)

Mit dem Terminal-Programm kann eine PC-Verbindung zum Discovery-Modul aufgebaut werden. Entweder mit der UART-Lib oder mit der USB_CDC-Lib.

Nach dem einstellen des Comports und der Baudrate können Strings gesendet und empfangen werden.

Ab Version 1.3 können auch Files gesendet und empfangen werden.
Ab Version 1.5 kompatibel mit SPS-Library
Ab Version 1.6 kompatibel mit uBasic-Projekt
Ab Version 1.7 kompatibel mit STM32F4-BASIC-Projekt
Ab Version 1.8 zum Test vom F429-Board

Hier das File zum download :

UART Terminal-Programm
UART Terminal-Programm

Hier das UART Terminal-Programm Version 1.0.8 zum Download:


05=UDP-Server :

Dieses PC-Programm hab ich mal für das myAVR MK3-Board in Verbindung mit dem ENC28J60 geschrieben um damit Text-Strings per Ethernet als UDP-Protokoll senden und empfangen zu können.

Es funktioniert aber genauso mit dem STM32F4 wenn meine UDP-Library benutzt wird.

Es funktioniert genauso wie das UART-Terminal nur muss statt der Baudrate und dem Com-Port die IP-Adresse und die Port-Nr eingetragen werden.

Hier das File zum download :

UDP-Server
UDP-Server

Hier der UDP-Server Version 1.0.1 zum Download:


06=HID Terminal-Programm :

Mit dem HID Terminal-Programm kann eine USB PC-Verbindung zum Discovery-Modul aufgebaut werden (mit der USB_HID-Lib) und danach können Daten per USB gesendet und empfangen werden.

Die HID-DLL von Silicon-Labs ist notwendig und muss im gleichen Pfad wie die EXE liegen.

Hier das File zum download :

HID Terminal-Programm
HID Terminal-Programm

Hier das HID Terminal-Programm Version 1.0.1 zum Download:


30 Antworten auf PC-Programme von mir

  1. kay sagt:

    Guten Tag,
    Ich hätte mal 2 Fragen zu ihren PC-Programme.

    1.Der ImageGenerator,
    Besteht denn die möglichkeit die Pixel-Grösse auf 800x480Pixel zu erhöhgen.

    2. Der PixelFontGenerator,
    Besteht auch hier die Möglichkeit grössere Fot-Dateien zu erstellen.

    Über eine Antwort von ihnen würde ich mich freuen.

    mfg
    Kay

    • admin_ub sagt:

      Hinweis : bei 800×480 Pixel braucht ein Bild 750 kByte Speicherplatz. Das wird dann wohl nur auf einen externen Speicher passen.
      Und für größere Fonts muss ich die Variabeln von uint16_t auf uint32_t ändern.
      Beide Änderungen sind mit meinen Libs nicht kompatibel. Aber prinzipiell machbar ist das…ich werd es auf die Liste setzen.

    • admin_ub sagt:

      fertig…bitte mal testen

      • Kay sagt:

        Habe den Pixel_Font Generator mal ausprobiert leider bekomme ich keine Grösser Schriftart hin.

        • admin_ub sagt:

          es fehlte noch eine Zeile um die Maske anzupassen (Zeile 11), probier mal das hier :

          void Draw_BIG_Char(u16 x, u16 y, u8 ascii, BIG_UB_Font *font, u16 vg, u16 bg)
          {
            u32 xn,yn,start_maske,maske;
            const u32 *wert;
          
            ascii -= 32;
            wert=&font->table[ascii * font->height];
          
            start_maske=0x80;
            if(font->width>8) start_maske=0x8000;
            if(font->width>16) start_maske=0x80000000;
          
            for(yn = 0; yn < font->height; yn++) {
              maske=start_maske;
              // Cursor setzen
              UB_LCD_SetCursor2Draw(x,yn+y);
              for(xn = 0; xn < font->width; xn++) {
                if((wert[yn] & maske) == 0x00) {
                  // Pixel in Hintergrundfarbe zeichnen
                  LCD_RAM = bg;
                }
                else {
                  // Pixel in Vordergrundfarbe zeichnen
                  LCD_RAM = vg;
                }
                maske=(maske>>1);
              }
            }
          }
          

          • Kay sagt:

            Bestens mit Version1.04
            Danke
            mfg

  2. Joerg B sagt:

    Das Terminal Programm ist echt super, habe sonst hTerm benutzt aber das stürzte immer wieder mal ab.

    Falls du mal Zeit findest wäre ein Zeitstempel der empfangenen Daten sehr nützlich.

    • admin_ub sagt:

      probier mal Version 1.6 aus ob du das mit dem Zeitstempel so gemeint hast.

      • Joerg B sagt:

        Genau das meinte ich.
        Danke!

  3. Uwe sagt:

    Hallo,

    besten Dank füer diese Site – die ist extrem hilfreich für Newbies wie mich :)

    Zum “PixelFontGenerator” habe ich eine Frage: ich bekomme immer die “Wrong Font Settings – deactivate ClearyType” Meldung, und das obwohl ich ClearType ausgeschaltet habe (Systemsteuerung). Ich benutze Win7 64.
    Was mache ich falsch?

    Danke und Gruss
    Uwe

    • admin_ub sagt:

      bin mir nicht sicher was der Fehler ist. Event liegt es an meinem Program
      oder es gibt noch eine andere Art der Font-Settings bei WIN7.
      Das eigentliche Problem ist bei aktiviertem ClearType oder welche Form von
      “Kantenglättung” auch immer. Das Windows die Schrift mit einem “Schatten”
      versieht damit das Schriftbild auf dem Monitor besser aussieht.
      Dieser Schatten macht die Schrift beim umwandeln aber extrem “FETT”
      man kann die einzelnen Buchstaben nicht richtig erkennen.
      Versuch mal keine TrueType Schriftart sondern eine “standard”
      ohne Kantenglättung. Ich habe z.B. eine “Courier” die sieht auch auf WIN7
      ok aus. Und da kommt dann auch keine Fehlermeldung.

  4. Uwe sagt:

    Das hatte ich schon probiert (hätt ich erwähnen sollen, sorry). Damit funktioniert es tadellos. Möglicherweise haben andere W7 Nutzer das selbe Problem, da wäre es vielleicht sinnvoll, den Fonttyp in der Auswahl mit anzuzeigen. Das erleichtert die Suche erheblich. Ich hab hier recht viele, aber vom Typ “Raster” (Anzeige in der Systemsteuerung/ Schriftart) sind es vielleicht noch 10…

    Vielleicht noch einen Wunsch: wäre klasse, wenn das Fenster mit der Fontanzeige vergrößerbar wäre :)

    Gruss Uwe

    • admin_ub sagt:

      ich hab es jetzt noch mal ausprobiert. Bei mir gehr es unter WIN7
      “Start/Systemsteuerung/Darstellung&Anpassung/Schriftarten/ClearType”
      und welches Fenster meinst du die “Fontauswahl” ? kommt von Windows und kann nicht geändert werden. Oder das Vorschaubild unter “Ascii” wo ein einzelnes Zeichen dargestellt wird ?

      • Uwe sagt:

        Hm, seltsam. Ich mach das selbe wie Du.
        Im Moment sind “monospaced” Fonts aber völlig ausreichend, sollte nur zum herumspielen sein.

        Mit “Fontauswahl” meinte ich das Fenster, das nach einem klick auf “Choose Font” erscheint.
        Also das “Schriftart” Fenster. Hier wäre eine Sortierung nach Fonttyp (proportional/ monospaced) ganz hilfreich gewesen. Geht ja leider nicht. Durchprobieren ist auch unschön, ich nehm hier als “Workaround” die
        ‘Systemsteuerung/ Darstellung und Anpassung/ Schriftarten’. Hier nach “Schriftarttyp” sortieren
        – “monospaced” entspricht dem Typ “Raster”.
        Dann hat man alle verwendbaren Fonts im Überblick.

        Die andere Sache mit der Vergrößerung war das Vorschaubild unter “Ascii”. Auch hier wäre es sicher hilfreich, bei größeren Fonts den kompletten Buchstaben zu sehen.

        Gruss Uwe

  5. Joe sagt:

    Hallo,

    leider bekomme ich es nicht hin die Arial Fonts mit dem Generator so zu erzeugen dass diese so gut aussehen wie die von UB erstellten.

    Könnte mir jemand die Fonts für den vollen ASCI Satz erzeugen, oder mir sagen welche Einstellungen nötig sind.
    Ich bräuchte auch einen Font der etwas kleiner ist als der Arial-7×10.

    Danke Joe

  6. veryalien sagt:

    When using the Discovery Terminal Version 1.8 (04=UART Terminal-Programm) to transfer some of the basic test files to my STM32F429 Discovery board, I am getting repeatable syntax errors on certain lines. Some of the file text seems to be missed during transmission.
    For example, color.txt and data.txt cannot be loaded correctly using the Discovery Terminal program, I always get syntax errors on the same lines.
    Is this some kind of flow control problem? I’m using a USB to TTL converter with TX, RX and GND connected.
    However, I don’t have any problems to send exactly the same files using the same USB to TTL cable and Putty. When I copy a file and paste it through Putty it is loaded correctly on the F429 Discovery board with no problem.

    • admin_ub sagt:

      try to improve the transmission by setting the priority of the Terminal.exe to “realtime” . if this not solve the problem, recompile the complete stm project after setting the uart baudrate to “19200″.

  7. Flo sagt:

    Hi,

    ich benutze den UDP-Server.
    Mit was hast du dieses Programm programmiert bzw. kannst du mir den Quellcode des UDP-Server Programms bitte zur Verfügung stellen, da ich dafür ein paar Änderungen machen möchte und mehr Funktionalitäten integrieren möchte.

    Danke!

    Gruß Flo

    • admin_ub sagt:

      sorry kann ich nicht. nimm visual studio und programmier es selbst.

  8. Gianni sagt:

    Hello Uwe,
    using your font generator, it happens that, with large and proportional font (eg font: Arial 48) occasionally
    the table of data exceeds 32 bits providing, for example: 0xF000F0000.
    Do you think it is possible to correct the problem?
    Many thanks and greetings
    Gianni

    • admin_ub sagt:

      sorry, my generator cant handle such big fonts
      but you can add a function to double the size of a given font
      by doubling the pixels in x and y direction

      • Gianni sagt:

        Thanks a lot, cheers,
        Gianni

  9. Gunther sagt:

    Hallo,

    ich möchte so ein UART-Terminal Programm selber schreiben.

    Kannst du mir dazu Tipps geben, wo ich Tutorials, Hilfestellungen finden, wie ich mit Visual Studio oder einem anderen Programmiertool so eine Kommunikation aufbauen/realisieren kann?

    Vielen Dank schon einmal.

    Viele Grüße
    Gunther

    • Gunther sagt:

      Hi,

      und könntest du mir noch gleich dazu Tipps/Tutorials/Beispiele/Quellen für die selbe Funktion nur mit der Ethernetverbindung geben (quasi wie dein UDP-Server-Programm). Also wie baue ich eine Ethernetverbindung hierfür auf? Auf meinem STM32 Board Funktioniert die Ethernetkommunikation mit deinem “UDP-Server” Programm. Aber jetzt möchte ich ein eigegenes dazu schreiben.

      Vielen Dank schonmal

      Gruß Gunther

    • admin_ub sagt:

      was für eine IDE hast du denn zur Verfügung ?
      Ein Demo eines UDP-Servers per Python habe ich schon gepostet.
      Python kann auch serielle Verbindungen und auch eine “Windows optik”
      ist möglich…aber Tutorials musst du selber suchen.


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

1 Antwort zu PC-Programme von Uwe

  1. David sagt:

    Hi,
    könntest du bitte im Programm PixelFontGenerator die Ausgabe der Bytes nicht Zeilenweise, sondern Spaltenweise ausgeben, also ein Byte von oben nach unten. Wenn dies nicht möglich sein sollte, könntest du bitte die Ausgabe nicht in Hex, sondern in Bytes (0b01111100) ausgeben.
    Danke

    VG David

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert