Here you can download some of my utilities. This site replaces the former download page. I will publish any new version or new utility here. It is just easier to maintain. Please check the Freeware Archive for older versions.
ParSer:
ParSer is a utility to construct a non-standard resistance or capacitance value from a set of standard resistors or capacitors. ParSer supports different topologies of up to three individual components. ParSer can also calculate voltage dividers and find a set of suitable resistors. The minimum and maximum shunt current can be specified as well as the nominal load current.
ParSer_Executables (Ver. 1.04)
(MD5: db6a4d42687d77bbd5b16bc5535885cd)
ParSer_Source (Ver. 1.04)
(MD5: b91cf916b63fe6ff60446dbd9a3bafa1)
Change history:
V1.04, Dec 2021: Compiled with Visual Studio 2019, fixed some Code Analysis complaints, no functional changes
Here is the ParSer Online Help.
The name ParSer is misleading. It stands for parallel/serial connection of resistors or capacitors. I’m not very happy myself with this name, but now it’s out and I’m not going to change it.
CompSynt – ParSer successor
Sorry, for now the description is only in German. Status of this project is „alpha“. Not sure if and when I will proceed. Comments welcome.
Updates: 18.03.2026 und 29.03.2026
Vor einigen Jahrzehnten hatte ich mich in die Windows-Programmierung unter der Win32-API eingearbeitet. Ein schönes Lehrlingsstück war damals ParSer. Es berechnete die notwendigen Widerstände und Kondensatoren, aus denen man einen vorgegebenen Zielwert durch Parallel- oder Serienschaltung zusammenstellen kann.
Obwohl ParSer auf aktuellen Windows Versionen weiterhin gut funktioniert, war es Zeit für eine Überarbeitung. Das geht schon damit los, daß es nicht mehr wartbar ist, weil die damals verwendeten Werkzeuge (insbesondere ResEdit) nicht mehr verfügbar sind und die alten Versionen nicht mehr mit dem neuen Visual‑C zusammenarbeiten. Inzwischen bin ich auf Qt als Entwicklungsumgebung umgestiegen, was schonmal den prinzipiellen Vorteil der Plattformunabhängigkeit hat. Die Projekte sind problemlos auch für Linux übersetzbar und Apple sollte auch funktionieren. Also habe ich nun ParSer runderneuert und wer mit der Betaversion herumspielen will, kann direkt zum Download schreiten, ohne sich die nachfolgenden Bemerkungen anzutun.
Was ist neu?

Zunächst der Name
Mit dem Namen ParSer war ich nie glücklich, denn er hat eigentlich die Bedeutung eines „Parsers“, was hier aber überhaupt nicht gemeint war. Eigentlich stand der Name für das Parallel- und Seriellschalten einzelner Komponenten. Jetzt habe ich mich für CompSynt entschieden, was für Component-Synthesis oder Komponentensynthese stehen soll. Der Name scheint auch noch nicht anderweitig vergeben zu sein, denn Google findet nur wenig.
Neue Funktionen
Die jetzige Alpha-Version kann bisher nur Widerstände synthetisieren, keine Kondensatoren oder Widerstandsnetzwerke. Das ist ein Grund, ParSer noch nicht zu löschen. Die Synthese von Widerständen wurde von ParSer übernommen, aber die Berechnung der Abweichungen vom gesuchten Wert wurde angepasst. Daher kann es zu geringfügigen Unterschieden in den gefundenen Ergebnissen kommen.
Neu in der Version 0.2: Die Suche wurde komplett überarbeitet. Im alten Algorithmus wurde viel Wert auf die Optimierung der Rechenzeit gelegt, indem die Suche recht frühzeitig abgebrochen wurde, wenn keine gültigen Ergebnisse mehr erwartet werden konnten. Das führte zu einem recht unübersichtlichen Code und hier und da zum Verwerfen gültiger Ergebnisse. Der neue Algorithmus ist viel übersichtlicher und findet offensichtlich auch mehr gültige Ergebnisse. Dafür ist er mitunter deutlich langsamer, was auf heutigen Rechnern irrelevant ist. Ob die Lösung in 20 ms oder zwei Sekunden gefunden wurde, ist in der Praxis völlig egal.
Multithreading
Ob hilfreich oder nicht, CompSynt startet für die Suche jeder Netzwerk-Topologie einen eigenen Thread. Da das Ergebnis sowieso in wenigen Millisekunden gefunden wird, ist das eigentlich völlig unnötig, aber ich wollte es schon lange mal ausprobieren. Es funktioniert und schadet wohl auch nicht.
Mehrsprachigkeit
Qt unterstützt Mehrsprachigkeit und die Alpha-Version kann in Deutsch oder Englisch ausgeführt werden. Ohne weitere Eingabeparameter startet die Version, auf die das aktuelle Gebietsschema eingestellt ist, in Deutschland also meist deutsch. Wer die englische Version starten will, muß als Parameter „-e“ oder „-E“ beim Starten abgeben. Weitere Sprachversionen kann ich gerne erstellen, wenn jemand mir die übersetzten Dateien liefert. Nähere Erklärungen gerne per Email.
Tooltips
Tooltips sind implementiert. Einfach den Mauszeiger kurz auf einem Menüpunkt ruhen lassen und dann öffnet sich ein Fenster mit Erklärungen. Naja, ein paar fehlen leider noch.
Berechnung der Spannung und Verlustleistung
Optional kann CompSynt die Spannungsgrenze und Belastbarkeit der einzelnen Widerstände überprüfen. Dazu muß die aktuell an den Gesamtwiderstand angelegte Spannung angegeben werden. Je nach Konfiguration werden Grenzüberschreitungen farblich im Ausgabefenster gekennzeichnet oder überhaupt nicht angezeigt.

Zu beachten ist, daß Widerstände eine Spannungsfestigkeit haben, die oft ihre Leistungsgrenze überschreitet. Es gilt also der niedrigere Wert.
Ergänzende Widerstandswerte
Auf Wunsch eines Benutzers wurde die Möglichkeit vorgesehen, einen zusätzlichen Widerstand testweise zu einem privaten Satz hinzuzufügen. Das ist dann hilfreich, wenn man einen beschränkten Satz an Widerstandwerten hat, weil die Leiterplattenfertigung möglichst wenige Komponenten verwenden soll.
Um passende Widerstände zu finden, wählt man die zu testende(n) Topologie(n) und die zu untersuchenden IEC-Reihe(n) aus. Dann wird der private Satz importiert und auf „Ergänzungsvorschlag“ geklickt. CompSynt sucht nun die beste Lösungen für jeden gewählten Widerstand und jede Topologie und zeigt die jeweils beste Lösung an. Den so gefundenen Widerstand kann man dann dem privaten Satz hinzufügen.
Optionale Benutzung des Gebietsschemas
Ein wichtiger Punkt ist die Verwendung des eingestellten Gebietsschemas. Dateneingabe, Ergebnisausgabe, Import und Export privater Datensätze folgt dem auf dem PC eingestellten Gebietsschema, wenn das in der Konfiguration angeklickt ist. Dann ist in Deutschland das Komma als Dezimaltrennzeichen und der Punkt als Tausenderseparator eingestellt. Anderenfalls wird ein Punkt als Dezimaltrennzeichen verwendet.
Es ist wichtig, bei Im- und Export dieselbe Einstellung zu verwenden. CompSynt kann die verwendete Einstellung anhand der eingelesenen Daten prinzipiell nicht in allen Fällen erkennen, manche erzeugen aber eine Fehlermeldung in der Statuszeile. Aufpassen: auch ohne Fehlermeldung kann der Import fehlerhaft sein. 1.000 hat im deutschen Gebietsschema der Wert 1000, im C‑Gebietsschema aber 1,000. Beide Interpretationen sind im jeweiligen Kontext korrekt.
Empfehlung: aktuelles Gebietsschema verwenden, dann können die Daten auch ohne Verrenkungen mit Libreoffice Calc oder Excel im CSV-Format eingelesen werden.
Datenformate einer privaten Datei
Für die private Import/Exportdatei wurde jetzt das CSV-Format verwendet. Alte Dateien von ParSer können also nicht eingelesen werden. Sie können mit einem Texteditor in das neue Format konvertiert werden oder durch Export ganz neu erstellt werden.
Es kann eines von drei Datenformaten ausgewählt werden, jeweils mit oder ohne Anwendung des Gebietsschemas. CompSynt kann auch in den Eingabefeldern im Menü einige Suffixes erkennen und den darauf folgenden Text ignorieren. So kann man beispielsweise einen Zielwert als 375 mΩ, eine Spannung als 1 kV oder eine Toleranz als 5 % angeben. In diesem Format kann auch die Import/Exportdatei geschrieben und gelesen werden. Für die Lesbarkeit ist das ganz nett, aber Calc kann damit nicht umgehen. Daher kann alternativ ein reines Fließkommaformat oder ein Exponentialformat ausgewählt werden.
Bei der Interpretation dieser Eingabedaten kann man sich beim Programmieren leicht die Finger brechen. Also bitte darauf achten, ob alles korrekt ist und mir eventuelle Fehler mitteilen.
Konfigurationsmenü
Es gibt ein Konfigurationsmenü, in dem die meisten Einstellungen direkt geändert werden können.

Bei Problemen empfiehlt sich ein Blick in die Registry unter: Computer\HKEY_CURRENT_USER\SOFTWARE\DK8PP Freeware\CompSynt. Durch Löschen dieses Registry-Eintrags und löschen des CompSynt-Verzeichnisses ist das Programm übrigens rückstandslos deinstalliert.
CompSynt Alpha-Version 0.21
Hier nun zum Download die aktuelle Alpha-Version für Windows:
und der Quelltext:
Fehlermeldungen und Vorschläge für zukünftige Erweiterungen sind willkommen.
Änderung zur vorigen Version: Die Toleranz der Widerstände kann nach wie vor eingegeben werden, sie wird aber in der jetzigen Version nicht benutzt. Zur Eingabe der maximalen Abweichung der einzelnen Widerstände, soll jetzt der neue Eintrag „Abweichung“ im Konfigurationsmenü benutzt werden.
Die Zeiten, in denen man nur ein EXE-File herunterladen musste, sind wohl ein für allemal vorbei. Jedes lauffähige Qt-Projekt wird mit den benötigten Laufzeitbibliotheken ausgeliefert. Daher kommen hier schnell 15 MB zusammen, auch gezippt.
Ich habe nun einige Tage vergeblich damit verdaddelt, eine Linux-Version in einer virtuellen Ubuntu-Maschine zu erstellen. Es funktioniert soweit, daß ich das Programm problemlos auf dieser Entwicklungsmaschine ausführen kann, aber ich scheitere am „Deployment“, also der Zusammenstellung des Programms mit allen benötigten Bibliotheken. Es gelingt mir nicht, eine Stand-Alone-Version zu erzeugen, die auf jedem anderen Rechner läuft. Ich gebe jetzt auf, weil ich das nicht brauche, bin aber für Hinweise dankbar, wie man das macht.
Zur Beachtung
Es gelten die hier und hier aufgelisteten Hinweise zu den Lizenzbedingungen und zum Virenschutz.
Wie geht’s jetzt weiter?
Ich habe diese Entwicklung zwischen andere Projekte eingeschoben, während ich auf Leiterplatten aus China gewartet habe. Ich betrachte es als „Freizeitprojekt“, soweit ein Rentner das sagen darf. Folgendes steht ohne besondere Dringlichkeit auf der ToDo-Liste:
Unterstützung für Kondensatoren und Widerstandsnetzwerke
Implementierung eines (kontext-sensitiven) Help-Systems
Das kann dauern, ich verspreche nichts! Eventuelle Fehler kann ich dennoch schnell beheben.
Bin2C:
Bin2C is a utility to convert binary files to C source code. It provides a simple way to include binary files (e.g. images or audio files) in embedded projects, which often do not support any file system.
Here is the Bin2C Online Help.
Bin2C Executables (Ver. 2.20)
(MD5: 2b15117dbbf2da5538f361995489911c)
Bin2C Source Files (Ver. 2.20)
(MD5: 0b4afb75ef4f1bcd84b694aae88b57e5)
Change history:
V2.20, Dec 2021: Compiled with Visual Studio 2019, fixed some Code Analysis complaints, no functional changes
DrawTimingDiagram:
During my recent (mostly Verilog) developments, I felt the need for a simple timing diagram generator with text output. Such a thing is very helpful to document the behavior of modules inside the source code rather than in a separate file. For this purpose I wrote DrawTimingDiagram. Here is the DrawTimingDiagram Online Help.
DrawTimingDiagram Executables (V1.01)
(MD5: 0804e03edbd13f2c3636ca45d665f97d)
DrawTimingDiagram Source (V1.01)
(MD5: eacfe0247ae02b65f7ac00b8b3b230b9)
Change history:
V1.01, Dec 2021: Initial release
Waterfall:
Mostly all modern amateur radio transceivers are software defined radios (SDR). As such, they come with a built-in waterfall diagram display, which in turn invites for stupid and useless experiments. Since retired, I have time for a little fun and I wrote a small program, which converts a PNG graphics file to a wave file. That wave file can be transmitted and it generates a waterfall display, which resembles the PNG input file. This is strictly for fun and shall not be used to annoy anyone, so use it at your own discretion. Here is a sample:





The result is obviously limited by the low frequency- and amplitude-resolution of the waterfall diagram. Anyway, it works.
There is no help file, but the operation should be self-explanatory. Here is the user dialog:

Time per row specifies the transmit duration of one PNG row. The total transmit time is the number of rows multiplied by this value. The ramp specifies the duration for linearly fading in and out a single row. Without such ramps, the signal will become rather distorted due to many harmonics.
Here are the download files:
Waterfall Executables (V0.2)
(MD5: 32da4134da5e065e32fb29a80bce781c)
Waterfall Source (V0.2)
(MD5: 301307cec175a78f445043aa23769e99)
Note that there are a number of different PNG file formats and not all of them are supported. I did not do extensive testing. If you encounter any problems, please let me know. In such a case, please send me sample file for testing.
General Comments:
All utilities are written for Windows and should run on all current versions. Please let me know if you encounter any problems or if you have any recommendation for improvements. None of the utilities needs to be installed. Just copy the .exe file to your preferred path and remove the file for uninstalling it.
The utilities store some parameters in the registry or in an ini-file. See the respective help file for details. Earlier versions used the key „HKEY_CURRENT_USER\SOFTWARE\Michael Krämer Freeware“ but I recently changed this to „HKEY_CURRENT_USER\SOFTWARE\DK8PP Freeware\“. I’m sorry for any inconvenience.
All files are compressed with 7‑zip, which ensures integrity by a built-in CRC32. If the file is corrupted by the download, 7‑zip should complain during unpacking. For some additional degree of file authenticity, I added the MD5 hash codes for the compressed files. I agree that downloading and running executables from unknown sources is generally not a good idea. I’m also reluctant to do that myself. Let me therefore suggest the following:
- Scan the downloaded executable with a local or online virus scanner.
- Run the executable in a virtual machine.
- Review the provided source code and compile it yourself.
I appreciate if you report any errors that you find and I also value any suggestions to improve my programming style.
By the way, feel free to use and modify the source code as you like. I don’t reserve any copyrights. But if you distribute modified code, say that it is yours, not mine. I simply want to avoid any liability issues. Life is too short to fight with hungry lawyers.
Sometimes I receive more or less mild complaints for programming under Windows rather than Linux. Well, I had some experience with Linux in the late 90es. I then decided to stay with Windows, simply because it works reliably. Again, life is too short to lose time with immature environments. I’m sure that Linux has improved since the old days, but I will not change any more. I don’t use any sophisticated tools, just the Win32 API and plain C, not even C++. Therefore the executables should also run under Wine.
