Free Soft­ware Utilities

Here you can down­load some of my uti­li­ties. This site replaces the for­mer down­load page. I will publish any new ver­si­on or new uti­li­ty here. It is just easier to main­tain. Plea­se check the Free­ware Archi­ve for older versions.

Par­Ser:

Par­Ser is a uti­li­ty to cons­truct a non-stan­dard resi­stance or capa­ci­tance value from a set of stan­dard resi­stors or capa­ci­tors. Par­Ser sup­ports dif­fe­rent topo­lo­gies of up to three indi­vi­du­al com­pon­ents. Par­Ser can also cal­cu­la­te vol­ta­ge divi­ders and find a set of sui­ta­ble resi­stors. The mini­mum and maxi­mum shunt cur­rent can be spe­ci­fi­ed as well as the nomi­nal load current.

ParSer_Executables (Ver. 1.04)
(MD5: db6a4d42687d77bbd5b16bc5535885cd)

ParSer_Source (Ver. 1.04)
(MD5: b91cf916b63fe6ff60446dbd9a3bafa1)

Chan­ge histo­ry:
V1.04, Dec 2021: Com­pi­led with Visu­al Stu­dio 2019, fixed some Code Ana­ly­sis com­plaints, no func­tion­al changes

Here is the Par­Ser Online Help.

The name Par­Ser is mis­lea­ding. It stands for parallel/serial con­nec­tion of resi­stors or capa­ci­tors. I’m not very hap­py mys­elf with this name, but now it’s out and I’m not going to chan­ge it.

Com­pSynt – Par­Ser successor

Sor­ry, for now the descrip­ti­on is only in Ger­man. Sta­tus of this pro­ject is „alpha“. Not sure if and when I will pro­ce­ed. Comm­ents welcome.

Updates: 18.03.2026 und 29.03.2026

Vor eini­gen Jahr­zehn­ten hat­te ich mich in die Win­dows-Pro­gram­mie­rung unter der Win32-API ein­ge­ar­bei­tet. Ein schö­nes Lehr­lings­stück war damals Par­Ser. Es berech­ne­te die not­wen­di­gen Wider­stän­de und Kon­den­sa­to­ren, aus denen man einen vor­ge­ge­be­nen Ziel­wert durch Par­al­lel- oder Seri­en­schal­tung zusam­men­stel­len kann.

Obwohl Par­Ser auf aktu­el­len Win­dows Ver­sio­nen wei­ter­hin gut funk­tio­niert, war es Zeit für eine Über­ar­bei­tung. Das geht schon damit los, daß es nicht mehr wart­bar ist, weil die damals ver­wen­de­ten Werk­zeu­ge (ins­be­son­de­re ResEdit) nicht mehr ver­füg­bar sind und die alten Ver­sio­nen nicht mehr mit dem neu­en Visual‑C zusam­men­ar­bei­ten. Inzwi­schen bin ich auf Qt als Ent­wick­lungs­um­ge­bung umge­stie­gen, was schon­mal den prin­zi­pi­el­len Vor­teil der Platt­form­un­ab­hän­gig­keit hat. Die Pro­jek­te sind pro­blem­los auch für Linux über­setz­bar und Apple soll­te auch funk­tio­nie­ren. Also habe ich nun Par­Ser rund­erneu­ert und wer mit der Beta­ver­si­on her­um­spie­len will, kann direkt zum Down­load schrei­ten, ohne sich die nach­fol­gen­den Bemer­kun­gen anzutun.

Was ist neu?

Zunächst der Name

Mit dem Namen Par­Ser war ich nie glück­lich, denn er hat eigent­lich die Bedeu­tung eines „Par­sers“, was hier aber über­haupt nicht gemeint war. Eigent­lich stand der Name für das Par­al­lel- und Seri­ell­schal­ten ein­zel­ner Kom­po­nen­ten. Jetzt habe ich mich für Com­pSynt ent­schie­den, was für Com­po­nent-Syn­the­sis oder Kom­po­nen­ten­syn­the­se ste­hen soll. Der Name scheint auch noch nicht ander­wei­tig ver­ge­ben zu sein, denn Goog­le fin­det nur wenig.

Neue Funk­tio­nen

Die jet­zi­ge Alpha-Ver­si­on kann bis­her nur Wider­stän­de syn­the­ti­sie­ren, kei­ne Kon­den­sa­to­ren oder Wider­stands­netz­wer­ke. Das ist ein Grund, Par­Ser noch nicht zu löschen. Die Syn­the­se von Wider­stän­den wur­de von Par­Ser über­nom­men, aber die Berech­nung der Abwei­chun­gen vom gesuch­ten Wert wur­de ange­passt. Daher kann es zu gering­fü­gi­gen Unter­schie­den in den gefun­de­nen Ergeb­nis­sen kommen.

Neu in der Ver­si­on 0.2: Die Suche wur­de kom­plett über­ar­bei­tet. Im alten Algo­rith­mus wur­de viel Wert auf die Opti­mie­rung der Rechen­zeit gelegt, indem die Suche recht früh­zei­tig abge­bro­chen wur­de, wenn kei­ne gül­ti­gen Ergeb­nis­se mehr erwar­tet wer­den konn­ten. Das führ­te zu einem recht unüber­sicht­li­chen Code und hier und da zum Ver­wer­fen gül­ti­ger Ergeb­nis­se. Der neue Algo­rith­mus ist viel über­sicht­li­cher und fin­det offen­sicht­lich auch mehr gül­ti­ge Ergeb­nis­se. Dafür ist er mit­un­ter deut­lich lang­sa­mer, was auf heu­ti­gen Rech­nern irrele­vant ist. Ob die Lösung in 20 ms oder zwei Sekun­den gefun­den wur­de, ist in der Pra­xis völ­lig egal.

Mul­ti­th­re­a­ding

Ob hilf­reich oder nicht, Com­pSynt star­tet für die Suche jeder Netz­werk-Topo­lo­gie einen eige­nen Thread. Da das Ergeb­nis sowie­so in weni­gen Mil­li­se­kun­den gefun­den wird, ist das eigent­lich völ­lig unnö­tig, aber ich woll­te es schon lan­ge mal aus­pro­bie­ren. Es funk­tio­niert und scha­det wohl auch nicht.

Mehr­spra­chig­keit

Qt unter­stützt Mehr­spra­chig­keit und die Alpha-Ver­si­on kann in Deutsch oder Eng­lisch aus­ge­führt wer­den. Ohne wei­te­re Ein­ga­be­pa­ra­me­ter star­tet die Ver­si­on, auf die das aktu­el­le Gebiets­sche­ma ein­ge­stellt ist, in Deutsch­land also meist deutsch. Wer die eng­li­sche Ver­si­on star­ten will, muß als Para­me­ter „-e“ oder „-E“ beim Star­ten abge­ben. Wei­te­re Sprach­ver­sio­nen kann ich ger­ne erstel­len, wenn jemand mir die über­setz­ten Datei­en lie­fert. Nähe­re Erklä­run­gen ger­ne per Email.

Tool­tips

Tool­tips sind imple­men­tiert. Ein­fach den Maus­zei­ger kurz auf einem Menü­punkt ruhen las­sen und dann öff­net sich ein Fen­ster mit Erklä­run­gen. Naja, ein paar feh­len lei­der noch.

Berech­nung der Span­nung und Verlustleistung

Optio­nal kann Com­pSynt die Span­nungs­gren­ze und Belast­bar­keit der ein­zel­nen Wider­stän­de über­prü­fen. Dazu muß die aktu­ell an den Gesamt­wi­der­stand ange­leg­te Span­nung ange­ge­ben wer­den. Je nach Kon­fi­gu­ra­ti­on wer­den Grenz­über­schrei­tun­gen farb­lich im Aus­ga­be­fen­ster gekenn­zeich­net oder über­haupt nicht angezeigt.

Zu beach­ten ist, daß Wider­stän­de eine Span­nungs­fe­stig­keit haben, die oft ihre Lei­stungs­gren­ze über­schrei­tet. Es gilt also der nied­ri­ge­re Wert.

Ergän­zen­de Widerstandswerte

Auf Wunsch eines Benut­zers wur­de die Mög­lich­keit vor­ge­se­hen, einen zusätz­li­chen Wider­stand test­wei­se zu einem pri­va­ten Satz hin­zu­zu­fü­gen. Das ist dann hilf­reich, wenn man einen beschränk­ten Satz an Wider­stand­wer­ten hat, weil die Lei­ter­plat­ten­fer­ti­gung mög­lichst weni­ge Kom­po­nen­ten ver­wen­den soll.

Um pas­sen­de Wider­stän­de zu fin­den, wählt man die zu testende(n) Topologie(n) und die zu unter­su­chen­den IEC-Reihe(n) aus. Dann wird der pri­va­te Satz impor­tiert und auf „Ergän­zungs­vor­schlag“ geklickt. Com­pSynt sucht nun die beste Lösun­gen für jeden gewähl­ten Wider­stand und jede Topo­lo­gie und zeigt die jeweils beste Lösung an. Den so gefun­de­nen Wider­stand kann man dann dem pri­va­ten Satz hinzufügen.

Optio­na­le Benut­zung des Gebietsschemas

Ein wich­ti­ger Punkt ist die Ver­wen­dung des ein­ge­stell­ten Gebiets­sche­mas. Daten­ein­ga­be, Ergeb­nis­aus­ga­be, Import und Export pri­va­ter Daten­sät­ze folgt dem auf dem PC ein­ge­stell­ten Gebiets­sche­ma, wenn das in der Kon­fi­gu­ra­ti­on ange­klickt ist. Dann ist in Deutsch­land das Kom­ma als Dezi­mal­trenn­zei­chen und der Punkt als Tau­sen­der­se­pa­ra­tor ein­ge­stellt. Ande­ren­falls wird ein Punkt als Dezi­mal­trenn­zei­chen verwendet.

Es ist wich­tig, bei Im- und Export die­sel­be Ein­stel­lung zu ver­wen­den. Com­pSynt kann die ver­wen­de­te Ein­stel­lung anhand der ein­ge­le­se­nen Daten prin­zi­pi­ell nicht in allen Fäl­len erken­nen, man­che erzeu­gen aber eine Feh­ler­mel­dung in der Sta­tus­zei­le. Auf­pas­sen: auch ohne Feh­ler­mel­dung kann der Import feh­ler­haft sein. 1.000 hat im deut­schen Gebiets­sche­ma der Wert 1000, im C‑Gebietsschema aber 1,000. Bei­de Inter­pre­ta­tio­nen sind im jewei­li­gen Kon­text korrekt.

Emp­feh­lung: aktu­el­les Gebiets­sche­ma ver­wen­den, dann kön­nen die Daten auch ohne Ver­ren­kun­gen mit Libre­of­fice Calc oder Excel im CSV-For­mat ein­ge­le­sen werden.

Daten­for­ma­te einer pri­va­ten Datei

Für die pri­va­te Import/Exportdatei wur­de jetzt das CSV-For­mat ver­wen­det. Alte Datei­en von Par­Ser kön­nen also nicht ein­ge­le­sen wer­den. Sie kön­nen mit einem Text­edi­tor in das neue For­mat kon­ver­tiert wer­den oder durch Export ganz neu erstellt werden.

Es kann eines von drei Daten­for­ma­ten aus­ge­wählt wer­den, jeweils mit oder ohne Anwen­dung des Gebiets­sche­mas. Com­pSynt kann auch in den Ein­ga­be­fel­dern im Menü eini­ge Suf­fi­xes erken­nen und den dar­auf fol­gen­den Text igno­rie­ren. So kann man bei­spiels­wei­se einen Ziel­wert als 375 mΩ, eine Span­nung als 1 kV oder eine Tole­ranz als 5 % ange­ben. In die­sem For­mat kann auch die Import/Exportdatei geschrie­ben und gele­sen wer­den. Für die Les­bar­keit ist das ganz nett, aber Calc kann damit nicht umge­hen. Daher kann alter­na­tiv ein rei­nes Fließ­kom­ma­for­mat oder ein Expo­nen­ti­al­for­mat aus­ge­wählt werden.

Bei der Inter­pre­ta­ti­on die­ser Ein­ga­be­da­ten kann man sich beim Pro­gram­mie­ren leicht die Fin­ger bre­chen. Also bit­te dar­auf ach­ten, ob alles kor­rekt ist und mir even­tu­el­le Feh­ler mitteilen.

Kon­fi­gu­ra­ti­ons­me­nü

Es gibt ein Kon­fi­gu­ra­ti­ons­me­nü, in dem die mei­sten Ein­stel­lun­gen direkt geän­dert wer­den können. 

Bei Pro­ble­men emp­fiehlt sich ein Blick in die Regi­stry unter: Computer\HKEY_CURRENT_USER\SOFTWARE\DK8PP Freeware\CompSynt. Durch Löschen die­ses Regi­stry-Ein­trags und löschen des Com­pSynt-Ver­zeich­nis­ses ist das Pro­gramm übri­gens rück­stands­los deinstalliert.

Com­pSynt Alpha-Ver­si­on 0.21

Hier nun zum Down­load die aktu­el­le Alpha-Ver­si­on für Windows:

und der Quelltext:

Feh­ler­mel­dun­gen und Vor­schlä­ge für zukünf­ti­ge Erwei­te­run­gen sind willkommen.

Ände­rung zur vori­gen Ver­si­on: Die Tole­ranz der Wider­stän­de kann nach wie vor ein­ge­ge­ben wer­den, sie wird aber in der jet­zi­gen Ver­si­on nicht benutzt. Zur Ein­ga­be der maxi­ma­len Abwei­chung der ein­zel­nen Wider­stän­de, soll jetzt der neue Ein­trag „Abwei­chung“ im Kon­fi­gu­ra­ti­ons­me­nü benutzt werden.

Die Zei­ten, in denen man nur ein EXE-File her­un­ter­la­den muss­te, sind wohl ein für alle­mal vor­bei. Jedes lauf­fä­hi­ge Qt-Pro­jekt wird mit den benö­tig­ten Lauf­zeit­bi­blio­the­ken aus­ge­lie­fert. Daher kom­men hier schnell 15 MB zusam­men, auch gezippt.

Ich habe nun eini­ge Tage ver­geb­lich damit ver­dad­delt, eine Linux-Ver­si­on in einer vir­tu­el­len Ubun­tu-Maschi­ne zu erstel­len. Es funk­tio­niert soweit, daß ich das Pro­gramm pro­blem­los auf die­ser Ent­wick­lungs­ma­schi­ne aus­füh­ren kann, aber ich schei­te­re am „Deployment“, also der Zusam­men­stel­lung des Pro­gramms mit allen benö­tig­ten Biblio­the­ken. Es gelingt mir nicht, eine Stand-Alo­ne-Ver­si­on zu erzeu­gen, die auf jedem ande­ren Rech­ner läuft. Ich gebe jetzt auf, weil ich das nicht brau­che, bin aber für Hin­wei­se dank­bar, wie man das macht.

Zur Beach­tung

Es gel­ten die hier und hier auf­ge­li­ste­ten Hin­wei­se zu den Lizenz­be­din­gun­gen und zum Virenschutz.

Wie geht’s jetzt weiter?

Ich habe die­se Ent­wick­lung zwi­schen ande­re Pro­jek­te ein­ge­scho­ben, wäh­rend ich auf Lei­ter­plat­ten aus Chi­na gewar­tet habe. Ich betrach­te es als „Frei­zeit­pro­jekt“, soweit ein Rent­ner das sagen darf. Fol­gen­des steht ohne beson­de­re Dring­lich­keit auf der ToDo-Liste:

Unterstützung für Kondensatoren und Widerstandsnetzwerke
Implementierung eines (kontext-sensitiven) Help-Systems

Das kann dau­ern, ich ver­spre­che nichts! Even­tu­el­le Feh­ler kann ich den­noch schnell beheben.

Bin2C:

Bin2C is a uti­li­ty to con­vert bina­ry files to C source code. It pro­vi­des a simp­le way to include bina­ry files (e.g. images or audio files) in embedded pro­jects, which often do not sup­port any file system.

Here is the Bin2C Online Help.

Bin2C Exe­cuta­bles (Ver. 2.20)
(MD5: 2b15117dbbf2da5538f361995489911c)

Bin2C Source Files (Ver. 2.20)
(MD5: 0b4afb75ef4f1bcd84b694aae88b57e5)

Chan­ge histo­ry:
V2.20, Dec 2021: Com­pi­led with Visu­al Stu­dio 2019, fixed some Code Ana­ly­sis com­plaints, no func­tion­al changes

Draw­Timing­Dia­gram:

During my recent (most­ly Ver­i­log) deve­lo­p­ments, I felt the need for a simp­le timing dia­gram gene­ra­tor with text out­put. Such a thing is very hel­pful to docu­ment the beha­vi­or of modu­les insi­de the source code rather than in a sepa­ra­te file. For this pur­po­se I wro­te Draw­Timing­Dia­gram. Here is the Draw­Timing­Dia­gram Online Help.

Draw­Timing­Dia­gram Exe­cuta­bles (V1.01)
(MD5: 0804e03edbd13f2c3636ca45d665f97d)

Draw­Timing­Dia­gram Source (V1.01)
(MD5: eacfe0247ae02b65f7ac00b8b3b230b9)

Chan­ge histo­ry:
V1.01, Dec 2021: Initi­al release

Water­fall:

Most­ly all modern ama­teur radio trans­cei­vers are soft­ware defi­ned radi­os (SDR). As such, they come with a built-in water­fall dia­gram dis­play, which in turn invi­tes for stu­pid and use­l­ess expe­ri­ments. Sin­ce reti­red, I have time for a litt­le fun and I wro­te a small pro­gram, which con­verts a PNG gra­phics file to a wave file. That wave file can be trans­mit­ted and it gene­ra­tes a water­fall dis­play, which resem­bles the PNG input file. This is strict­ly for fun and shall not be used to annoy anyo­ne, so use it at your own dis­creti­on. Here is a sample:

The result is obvious­ly limi­t­ed by the low fre­quen­cy- and ampli­tu­de-reso­lu­ti­on of the water­fall dia­gram. Any­way, it works.

The­re is no help file, but the ope­ra­ti­on should be self-expl­ana­to­ry. Here is the user dialog:

Waterfall User Dialog
Water­fall User Dialog

Time per row spe­ci­fi­es the trans­mit dura­ti­on of one PNG row. The total trans­mit time is the num­ber of rows mul­ti­pli­ed by this value. The ramp spe­ci­fi­es the dura­ti­on for line­ar­ly fading in and out a sin­gle row. Wit­hout such ramps, the signal will beco­me rather dis­tor­ted due to many harmonics.

Here are the down­load files:

Water­fall Exe­cuta­bles (V0.2)
(MD5: 32da4134da5e065e32fb29a80bce781c)

Water­fall Source (V0.2)
(MD5: 301307cec175a78f445043aa23769e99)

Note that the­re are a num­ber of dif­fe­rent PNG file for­mats and not all of them are sup­port­ed. I did not do exten­si­ve test­ing. If you encoun­ter any pro­blems, plea­se let me know. In such a case, plea­se send me sam­ple file for testing.

Gene­ral Comments:

All uti­li­ties are writ­ten for Win­dows and should run on all cur­rent ver­si­ons. Plea­se let me know if you encoun­ter any pro­blems or if you have any recom­men­da­ti­on for impro­ve­ments. None of the uti­li­ties needs to be instal­led. Just copy the .exe file to your pre­fer­red path and remo­ve the file for unin­stal­ling it.

The uti­li­ties store some para­me­ters in the regi­stry or in an ini-file. See the respec­ti­ve help file for details. Ear­lier ver­si­ons used the key „HKEY_CURRENT_USER\SOFTWARE\Michael Krä­mer Free­ware“ but I recent­ly chan­ged this to „HKEY_CURRENT_USER\SOFTWARE\DK8PP Free­ware\“. I’m sor­ry for any inconvenience.

All files are com­pres­sed with 7‑zip, which ensu­res inte­gri­ty by a built-in CRC32. If the file is cor­rupt­ed by the down­load, 7‑zip should com­plain during unpack­ing. For some addi­tio­nal degree of file authen­ti­ci­ty, I added the MD5 hash codes for the com­pres­sed files. I agree that down­loa­ding and run­ning exe­cuta­bles from unknown sources is gene­ral­ly not a good idea. I’m also reluc­tant to do that mys­elf. Let me the­r­e­fo­re sug­gest the following:

  • Scan the down­loa­ded exe­cuta­ble with a local or online virus scanner.
  • Run the exe­cuta­ble in a vir­tu­al machine.
  • Review the pro­vi­ded source code and com­pi­le it yours­elf.
    I app­re­cia­te if you report any errors that you find and I also value any sug­ge­sti­ons to impro­ve my pro­gramming style.

By the way, feel free to use and modi­fy the source code as you like. I don’t reser­ve any copy­rights. But if you dis­tri­bu­te modi­fi­ed code, say that it is yours, not mine. I sim­ply want to avo­id any lia­bi­li­ty issues. Life is too short to fight with hun­gry lawyers.

Some­ti­mes I recei­ve more or less mild com­plaints for pro­gramming under Win­dows rather than Linux. Well, I had some expe­ri­ence with Linux in the late 90es. I then deci­ded to stay with Win­dows, sim­ply becau­se it works relia­bly. Again, life is too short to lose time with imma­tu­re envi­ron­ments. I’m sure that Linux has impro­ved sin­ce the old days, but I will not chan­ge any more. I don’t use any sophi­sti­ca­ted tools, just the Win32 API and plain C, not even C++. The­r­e­fo­re the exe­cuta­bles should also run under Wine.