Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Binäreditor gesucht

69 views
Skip to first unread message

Peter Weber

unread,
Nov 9, 2012, 11:39:47 AM11/9/12
to
Hallo NG,

will mein 10-Kanallauflicht, das mittels bmcm USB-PIO und angesteuerten
Optokopplern mit Triacs hardwäremassig realisiert ist, programmieren.
Hierfür habe ich Digital-ProfiLab 4.0 im Einsatz und 4 Grundschaltungen
mittels Schieberegister erstellt. Man kommt aber an Grenzen. Nun möchte
ich 2 ROM-Bausteine einsetzten (8Bit von ROM1 und 2Bit von ROM2), um
Bitmuster für die 10 Kanäle setzen zu können. Das ROM selbst lässt sich
innerhalb von Digital-ProfiLab binär füllen, was dabei aber sehr
umständlich und unübersichtlich wird. Ich hab mal die ersten 8 Stufen
von ROM1 gesetzt und als Datei gespeichert. Leider wird die Datei
Hexadizimal erstellt.

01
02
04
08
10
20
40
80


Mit welchem Editor kann ich die Datei Binär editieren und somit dann in
den ROM-Baustein laden?

Es sollte dann so aussehen, wie ich es gerne eingeben würde!

1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1

so sollte es dann ausgegeben werden:

1000 0100 -> 2 1
0100 0001 -> 8 2
0011 1001 -> 9 C

--
MfG,
Peter Weber

Thorsten Ostermann

unread,
Nov 9, 2012, 11:50:32 AM11/9/12
to
Hallo Peter!

> Mit welchem Editor kann ich die Datei Binᅵr editieren und somit dann in
> den ROM-Baustein laden?

http://www.hexedit.com/ sollte das kᅵnnen (also das Editieren, nicht das
Programmieren).

Gruᅵ
Thorsten
--
Der Schrittmotor-Blog: http://www.schrittmotor-blog.de/
Thorsten online: http://www.ostermann-net.de/electronic
Rund um Schrittmotor, Frᅵs-Bohr-Plotter & Mikrocontroller

Thorsten Just

unread,
Nov 9, 2012, 11:52:19 AM11/9/12
to
Am 09.11.2012 17:39, schrieb Peter Weber:
>
> Mit welchem Editor kann ich die Datei Binär editieren und somit dann in
> den ROM-Baustein laden?

Ich weiß jetzt nicht, ob das einige Hex-Editoren nicht auch schön
können. Ansonsten einfach einen x-beliebigen Editor, da nur 0 und 1
tippen und dann einem kleinen Skript vorwerfen, dass die Konvertierung
erledigt.

Thorsten

Frank Buss

unread,
Nov 9, 2012, 12:33:19 PM11/9/12
to
Sowas kann man schön übersichtlich und schnell in Python programmieren.
Folgendes als convert.py speichern:

inp = open('test.txt', 'r')
out = open('test.bin', 'wb')
for line in inp:
byte = 0
bit = 0
for char in line:
if char == '1' or char == '0':
if char == '1': byte |= 1 << bit
bit += 1
out.write('%c' % byte)

Dann Python installieren (ich habe hier Version 2.7, sollte aber auch
mit neureren Versionen gehen), DOS-Eingabeaufforderung starten (sofern
unter Windows, Linux ist es meist im Pfad und vorinstalliert) und dann
per "\python27\python convert.py" starten. Es liest die Datei test.txt
ein und gibt die Binärdatei test.bin aus. Beispiel für test.txt:

1 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 1

Erzeugt eine binäre Datei test.bin mit den Bytes 0x01, 0x02, 0x04, 0x08,
0x10, 0x20, 0x40, 0x80.

Wenn kein Wert auf Übersichtlichkeit und Lesbarkeit gelegt wird, dann
kann man das bestimmt auch als Perl-Einzeiler implementieren :-)

PS: normalerweise gibt man bei Zahlen die höchstwertigste Ziffer zuerst
an, so auch bei Binärzahlen, sodaß man das Python-Programm mit bit=7
beginnen lassen sollte und dann bit-=1 schreiben sollte.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss

Peter Weber

unread,
Nov 9, 2012, 2:42:59 PM11/9/12
to
Beim ROM-Baustein von Digital-ProfiLab 4.0 beginnt links das Bit 0, bei
der Ausgabe in Hexadezimal werden die beiden Nibble des Byte getauscht.
Kann ich es nicht in Excel realisieren, dass das Byte in 8 Zellen mit
1er + 0er eingegeben wird, und danach der Hexadezimalwert der beiden
Nibble ermittelt werden kann und in 2 weiteren Zellen geschrieben wird.
Das Problem ist halt, das ich 10 Kanäle habe (10 Bit) und beim
ROM-Baustein immer nur einer editiert werden kann, wenn ich auch die 2
Bit das 2. ROM parallel editieren könnte hätte ich das Bitmuster im
Blick, aber so muss ich es abwechselnd editieren und die Sache wird
unübersichtlich und Fehler schleichen sich ein.

--
MfG,
Peter Weber

Frank Buss

unread,
Nov 9, 2012, 3:20:38 PM11/9/12
to
Peter Weber wrote:
>
> Beim ROM-Baustein von Digital-ProfiLab 4.0 beginnt links das Bit 0, bei
> der Ausgabe in Hexadezimal werden die beiden Nibble des Byte getauscht.
> Kann ich es nicht in Excel realisieren, dass das Byte in 8 Zellen mit
> 1er + 0er eingegeben wird, und danach der Hexadezimalwert der beiden
> Nibble ermittelt werden kann und in 2 weiteren Zellen geschrieben wird.
> Das Problem ist halt, das ich 10 Kanäle habe (10 Bit) und beim
> ROM-Baustein immer nur einer editiert werden kann, wenn ich auch die 2
> Bit das 2. ROM parallel editieren könnte hätte ich das Bitmuster im
> Blick, aber so muss ich es abwechselnd editieren und die Sache wird
> unübersichtlich und Fehler schleichen sich ein.

Klar, in Excel geht das natürlich auch. Damit kann man glaube ich auch
Binärdateien schreiben, wie ja die vielen Viren dafür beweisen :-)
Ich würde aber empfehlen, einfach das Python-Script entsprechend zu
erweitern, ist einfacher. Du kannst es weiterhin in Excel editieren und
als CSV-Format exportieren. Das wird von meinem Scriptbeispiel auch
verstanden, da nur die "1" und "0" Zeichen ausgewertet werden.

Peter Weber

unread,
Nov 10, 2012, 4:39:20 AM11/10/12
to
Am 09.11.2012 21:20, schrieb Frank Buss:
> Peter Weber wrote:
>>
>> Beim ROM-Baustein von Digital-ProfiLab 4.0 beginnt links das Bit 0, bei
>> der Ausgabe in Hexadezimal werden die beiden Nibble des Byte getauscht.
>> Kann ich es nicht in Excel realisieren, dass das Byte in 8 Zellen mit
>> 1er + 0er eingegeben wird, und danach der Hexadezimalwert der beiden
>> Nibble ermittelt werden kann und in 2 weiteren Zellen geschrieben wird.
>> Das Problem ist halt, das ich 10 Kanᅵle habe (10 Bit) und beim
>> ROM-Baustein immer nur einer editiert werden kann, wenn ich auch die 2
>> Bit das 2. ROM parallel editieren kᅵnnte hᅵtte ich das Bitmuster im
>> Blick, aber so muss ich es abwechselnd editieren und die Sache wird
>> unᅵbersichtlich und Fehler schleichen sich ein.
>
> Klar, in Excel geht das natᅵrlich auch. Damit kann man glaube ich auch
> Binᅵrdateien schreiben, wie ja die vielen Viren dafᅵr beweisen :-)
> Ich wᅵrde aber empfehlen, einfach das Python-Script entsprechend zu
> erweitern, ist einfacher. Du kannst es weiterhin in Excel editieren und
> als CSV-Format exportieren. Das wird von meinem Scriptbeispiel auch
> verstanden, da nur die "1" und "0" Zeichen ausgewertet werden.

Ich hab in Excel mal angefangen, mir fehlt jetzt nur noch die Formel, wo
die 4 Bit eines Nibble mit der Wertigkeitstabelle verglichen und dann
bei ᅵbereinstimmung der passende Hexwert eingetragen wird.

http://www.imagenetz.de/f665add62/Bin-r_Hexadezimalumwandlung.zip.html

--
MfG,
Peter Weber

Fritz Rutz

unread,
Nov 10, 2012, 11:25:56 AM11/10/12
to
On Sat, 10 Nov 2012 10:39:20 +0100, Peter Weber wrote:
>
>Ich hab in Excel mal angefangen, mir fehlt jetzt nur noch die Formel, wo
>die 4 Bit eines Nibble mit der Wertigkeitstabelle verglichen und dann
>bei Übereinstimmung der passende Hexwert eingetragen wird.
>
>http://www.imagenetz.de/f665add62/Bin-r_Hexadezimalumwandlung.zip.html

Wieso mit der Wertigkeitstabelle vergleichen wenn Excel diese Funktion
bereits eingebaut hat? Mit der folgenden Funktion muesste es klappen:

=BIN2HEX(CONCATENATE(Bit_3,Bit_2,Bit_2,Bit_1))

Fuer die Zelle L24 in Deinem Sheet waere also die Formel wie folgt:

=BIN2HEX(CONCATENATE(E24,D24,C24,B24))

Schreibfaule koennen auch =BIN2HEX(E24&D24&C24&B24) verwenden.

Gruss

Fritz

PS: Falls die Wertetabelle zwingend verwendet werden soll (z.B. fuer
den generellen Einsatz bei anderen Problemstellungen) gaebe es z.B.
die folgende Moeglichkeit (es gibt sicher elegantere Moeglichkeiten):

=OFFSET(E4,INT(FIND("N"&E24&D24&C24&B24,"N"&D4&C4&B4&A4&"N"&D5&C5&B5&A5&"N"&D6&C6&B6&A6&"N"&D7&C7&B7&A7&"N"&D8&C8&B8&A8&"N"&D9&C9&B9&A9&"N"&D10&C10&B10&A10&"N"&D11&C11&B11&A11&"N"&D12&C12&B12&A12&"N"&D13&C13&B13&A13&"N"&D14&C14&B14&A14&"N"&D15&C15&B15&A15&"N"&D16&C16&B16&A16&"N"&D17&C17&B17&A17&"N"&D18&C18&B18&A18&"N"&D19&C19&B19&A19)/5),0)

Note: "N" wird eingefuehrt damit nicht die erste passende Bitfolge
sondern das passende Nibble beim suchen als Resultat ausgegeben wird.
Der Divisor (hier 5) muss passend zu der Stringlaenge gewaehlt werden
(N + 4 Nibble Werte). Mit einer Hilfsspalte wo die Zusammenfuehrung
von Spalten A-D der Wertetabelle bereits durchgefuehrt wurde kann
natuerlich deutlich einfacher mit den eingebauten Excelfunktionen
(Stichworte Lookup, Match, Index etc.) zum gewuenschten Wert
referenziert werden.

Frank Buss

unread,
Nov 10, 2012, 12:50:35 PM11/10/12
to
Fritz Rutz wrote:
> PS: Falls die Wertetabelle zwingend verwendet werden soll (z.B. fuer
> den generellen Einsatz bei anderen Problemstellungen) gaebe es z.B.
> die folgende Moeglichkeit (es gibt sicher elegantere
> Moeglichkeiten):
>
> =OFFSET(E4,INT(FIND("N"&E24&D24&C24&B24,"N"&D4&C4&B4&A4&"N"&D5&C5&B5&A5&
> "N"&D6&C6&B6&A6&"N"&D7&C7&B7&A7&"N"&D8&C8&B8&A8&"N"&D9&C9&B9&A9&"N"&
> D10&C10&B10&A10&"N"&D11&C11&B11&A11&"N"&D12&C12&B12&A12&"N"&D13&C13&
> B13&A13&"N"&D14&C14&B14&A14&"N"&D15&C15&B15&A15&"N"&D16&C16&B16&A16&
> "N"&D17&C17&B17&A17&"N"&D18&C18&B18&A18&"N"&D19&C19&B19&A19)/5),0)

Das generiert aber keine Binärdatei, aber vielleicht meinte Peter damit
ja auch eine ASCII-Datei, wo die Werte in hexadezimaler
Schreibweise gespeichert werden sollen, was sich übrigens mit meinem
Python-Script durch Austausch der write-Zeile realisieren liesse:

out.write('%02x\n' % byte)

und dann die Ausgabedatei nicht mit "wb", sondern nur mit "w" öffnen.

Für eine Wertetabelle könnte man es so erweitern:

wertetabelle = [0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01]

und dann:

if char == '1': byte |= wertetabelle[bit]

Aber der Excel-Code sieht auch prima aus. Sehr leicht zu lesen und zu
verstehen, und bei Änderungen kann man den Code problemlos warten :-)

Peter Weber

unread,
Nov 10, 2012, 3:17:55 PM11/10/12
to
Das Problem konnte in Excel gelöst werden.
Habe das Projekt nun hochgeladen.

http://www.imagenetz.de/fbaac2fa0/Lauflicht.zip.html

Vielen Dank an alle freundlichen Helfer


--
MfG,
Peter Weber

Fritz Rutz

unread,
Nov 11, 2012, 9:26:15 AM11/11/12
to
On Sat, 10 Nov 2012 18:50:35 +0100, Frank Buss wrote:

>Fritz Rutz wrote:
>> PS: Falls die Wertetabelle zwingend verwendet werden soll (z.B. fuer
>> den generellen Einsatz bei anderen Problemstellungen) gaebe es z.B.
>> die folgende Moeglichkeit (es gibt sicher elegantere
>> Moeglichkeiten):
>>
>> =OFFSET(E4,INT(FIND("N"&E24&D24&C24&B24,"N"&D4&C4&B4&A4&"N"&D5&C5&B5&A5&
>> "N"&D6&C6&B6&A6&"N"&D7&C7&B7&A7&"N"&D8&C8&B8&A8&"N"&D9&C9&B9&A9&"N"&
>> D10&C10&B10&A10&"N"&D11&C11&B11&A11&"N"&D12&C12&B12&A12&"N"&D13&C13&
>> B13&A13&"N"&D14&C14&B14&A14&"N"&D15&C15&B15&A15&"N"&D16&C16&B16&A16&
>> "N"&D17&C17&B17&A17&"N"&D18&C18&B18&A18&"N"&D19&C19&B19&A19)/5),0)
>
>
>Aber der Excel-Code sieht auch prima aus. Sehr leicht zu lesen und zu
>verstehen, und bei �nderungen kann man den Code problemlos warten :-)

War ja auch nur ein Versuch um ohne Zusatzspalte auszukommen ;-)
Die von Peter gepostete Loesung nimmt eine Zusatzspalte zu Hilfe mit
der dann mit den ueblichen Excelfunktionen wartungsfreundlich der
richtige Wert aus der Wertetabelle ausgewaehlt wird (wieso in diesem
Fall ueberhaupt die Wertetabelle noetig ist habe ich allerdings noch
nicht nachvollziehen koennen, da die Loesung mit der in Excel
eingebauten bin2hex Funktion auch ohne Wertetabelle ebenfalls
einwandfrei funzt).

Gruss

Fritz

Frank Müller

unread,
Nov 11, 2012, 11:44:43 AM11/11/12
to
Fritz Rutz schrieb:
> Die von Peter gepostete Loesung nimmt eine Zusatzspalte zu Hilfe mit
> der dann mit den ueblichen Excelfunktionen wartungsfreundlich der
> richtige Wert aus der Wertetabelle ausgewaehlt wird (wieso in diesem
> Fall ueberhaupt die Wertetabelle noetig ist habe ich allerdings noch
> nicht nachvollziehen koennen, da die Loesung mit der in Excel
> eingebauten bin2hex Funktion auch ohne Wertetabelle ebenfalls
> einwandfrei funzt).

Das Problem war wohl das bin2hex nicht funktioniert hat, das wird
bei der Standartinstallation von Excel nicht mit installiert.

Frank

Stefan Wiest

unread,
Nov 14, 2012, 3:35:54 AM11/14/12
to

Am 11.11.2012 17:44, schrieb Frank Müller:
> Das Problem war wohl das bin2hex nicht funktioniert hat, das wird
> bei der Standartinstallation von Excel nicht mit installiert.

Mein deutsches Excel kennt auch kein BIN2HEX, aber mit BININHEX
funktioniert es :-) oder besser :-(

Grüße,
Stefan

Frank Müller

unread,
Nov 14, 2012, 3:58:00 AM11/14/12
to
Stefan Wiest schrieb:
> Am 11.11.2012 17:44, schrieb Frank Mᅵller:
>> Das Problem war wohl das bin2hex nicht funktioniert hat, das wird
>> bei der Standartinstallation von Excel nicht mit installiert.
>
> Mein deutsches Excel kennt auch kein BIN2HEX, aber mit BININHEX
> funktioniert es :-) oder besser :-(

Dann ist das bei dir Installiert bei mir kommt da nur #NAME?
und in der Hilfe steht:
"installieren und laden Sie das Add-In fᅵr die Analyse-Funktionen"

Frank

Heiko Nocon

unread,
Nov 14, 2012, 7:53:00 AM11/14/12
to
Frank Müller wrote:

>und in der Hilfe steht:
>"installieren und laden Sie das Add-In für die Analyse-Funktionen"

Wenn schon die Hilfe sagt, wo's wahrscheinlich klemmt: Warum machst du
denn nicht einfach, was die Hilfe vorschlägt?

Es kostet doch nur ein paar Mausklicks, das Add-In mit den
Analysefunktionen nachzuinstallieren. Im schlimmsten Fall muß man
allerdings die Excel-CD suchen gehen.

Fritz Rutz

unread,
Nov 14, 2012, 8:30:57 AM11/14/12
to
On Sun, 11 Nov 2012 17:44:43 +0100, Frank Müller wrote:
>
>Das Problem war wohl das bin2hex nicht funktioniert hat, das wird
>bei der Standartinstallation von Excel nicht mit installiert.
>

Bei Excel 2010 ist die Funktion auch ohne einbinden des Analysis
Toolpak verfuegbar (MS Office 2010 Home & Student Englisch). Aber es
kann sein dass es bei aelteren Versionen zuerst explizit eingebunden
werden muss (gab auch ein paar nette Datumsfunktionen in diesem
Toolpak). Wobei nicht zu verstehen ist, wieso es immer noch das
Analysis Toolpak gibt und nicht in Excel integriert ist. Vielleicht
war es mal notwendig um Ressourcen zu sparen, aber spaetestens seit
2005 duerften alle PCs in der Lage sein mit dem zusaetzlichen
Ressourcenbedarf umzugehen.

Gruss

Fritz

PS: Ist im deutschen Excel wirklich BinInHex statt Bin2Hex?

Frank Müller

unread,
Nov 14, 2012, 11:02:19 AM11/14/12
to
Fritz Rutz schrieb:
> On Sun, 11 Nov 2012 17:44:43 +0100, Frank Müller wrote:
>>
>> Das Problem war wohl das bin2hex nicht funktioniert hat, das wird
>> bei der Standartinstallation von Excel nicht mit installiert.
>>
>
> Bei Excel 2010 ist die Funktion auch ohne einbinden des Analysis
> Toolpak verfuegbar (MS Office 2010 Home & Student Englisch).

Ich habe Excel 2002 da ist das in der Standartinstallation nicht
drin.

> PS: Ist im deutschen Excel wirklich BinInHex statt Bin2Hex?

Ja da ist alles eingedeutscht. Sogar die IF-Funktion heißt da
WENN...

Frank

Marc Santhoff

unread,
Nov 14, 2012, 11:17:22 AM11/14/12
to
Am Wed, 14 Nov 2012 17:02:19 +0100
schrieb Frank Müller <DW...@hotmail.com>:


> Ich habe Excel 2002 da ist das in der Standartinstallation nicht

http://de.wikipedia.org/wiki/Standart

> > PS: Ist im deutschen Excel wirklich BinInHex statt Bin2Hex?
>
> Ja da ist alles eingedeutscht. Sogar die IF-Funktion heißt da
> WENN...

Als ich sowas früher benutzt habe, konnte man es abschalten, sprich
VBA separat nach englisch umschalten, leider vergessen wie (entweder
eine Option oder Auswahl bei der Installation IIRC). Ich weiß
allerdings, daß einem das Makro komplett aufgemischt wurde, wenn man es
mal mit einer eingedeutschten MAkro-IDE bearbeitet hat.

Marc

Klaus Butzmann

unread,
Nov 14, 2012, 4:13:05 PM11/14/12
to
Am 14.11.2012 09:35, schrieb Stefan Wiest:

> Mein deutsches Excel kennt auch kein BIN2HEX, aber mit BININHEX
> funktioniert es :-) oder besser :-(
Da muss man erstmal drauf kommen...



Butzo

0 new messages