PC-Programme von mir

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

01 = Pixel-Font-Generator
02 = Image-Generator
03 = File-Converter
04 = UART-Terminal-Programm
05 = UDP-Server
06 = HID-Terminal-Programm


01=Pixel-Font-Generator :

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_UB_v108


02=Image-Generator :

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_UB_v103


03=File-Converter :

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_UB_v103


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 :

Discovery_Terminal_UB_v108


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.

UB_MK3_ETH_Server_v101


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_ub_v101

33 Antworten auf PC-Programme von mir

  1. kay sagt:

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

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

    2. Der Pixel-Font-Generator,
    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);
              }
            }
          }
          
  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.

  3. Uwe sagt:

    Hallo,

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

    Zum “Pixel-Font-Generator” 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

  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

  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

  10. hitesh sagt:

    hi i want to create my own gui with custom hid can you please share your hid project source code

  11. TheMason sagt:

    Hallo Uwe, ich habe ähnlich wie mein vorposter eine Frage zum Quellcode des HID Terminals.
    Ich habe mit der DLL in einem selbstgeschriebenen Programm schon mein Gerät finden und öffnen können, aber ich weiß nicht wie ich das senden bzw empfangen realisieren muss. Mit get/Set Report xxx der DLL kommt bei mir nichts an. Mit deinem Terminal Programm schon. Hast du vllt einen kurzen schnipsel wie du in deinem Programm Daten sendest bzw empfängst ?

  12. Saif sagt:

    Hallo Uwe,

    ich habe ähnlich wie mein vorposter eine Frage zum Quellcode des HID Terminals.
    Kannst du mir bitte die Source Code deinen HID Terminal.

    Danke dir in voraus

Hinterlasse eine Antwort

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


neun + = fünfzehn

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>