Laden...

.hex File übertragen in C#???

Erstellt von WhiteTiger vor 19 Jahren Letzter Beitrag vor 19 Jahren 4.161 Views
W
WhiteTiger Themenstarter:in
29 Beiträge seit 2004
vor 19 Jahren
.hex File übertragen in C#???

Guten Abend

Das dürfte jetzt ne schwierige Frage werden, aber für jeden Tip bin ich dankbar.

So ich habe einen USB-Controller (Cypress AN2131) am PC hängen. Ich kann per C# einzelne Bit`s/Bytes an diesen Controller übertragen, die der USB-Controller dann per i2c (Datenbus) an einen Mikrocontroller weiter gibt.

Ich möchte jetzt den Mikrocontroller über meine Windows-Software "brennen" d.h ich muß ein Intel-Hex-File übertragen.

Habe schon einen "OpenFileDialog" verfasst wo ich das .hex File wählen kann. Nur wie gehts weiter??? Wie übertrage ich das .hex-File????
Kann ja nur einzelne Bit`s/Bytes übertragen --> kann ich ein .hex-File in einzele Bytes umwandeln????

Sorry sollte das ne sau dumme Frage sein, aber ich komme da nicht weiter!

Des weiteren habe ich eine "ProgressBar" in meiner Software wo mir anzeigen soll wie weit das "brennen" des .hex-Files ist. Tja bei einer ProgressBar muß ich Min und Max angeben --> Min = 0 ist klar, aber Max von einem .hex-File????

Thanks @ all

P
939 Beiträge seit 2003
vor 19 Jahren

Was steht denn drin im Hex-File? Unter Umständen hilft dir das Ende dieses Threads weiter:
Normal -> Ascii / Ascii -> Normal

Der Max-Wert für die ProgressBar kann aus Dateigröße abgeleitet werden. Kommt drauf an wie diese formatiert ist. Es muss ja nicht ganz exakt sein.

Gruss
Pulpapex

140 Beiträge seit 2004
vor 19 Jahren

Ich glaub so ganz klar ist mir noch nicht was du willst. Zum einlesen der hex-Datei würde ich mich aber mal mit StreamReader & co beschäftigen.
Also sowas in der Richtung:


//using sorgt dafür, dass Datei freigegeben wird wenn sie nicht mehr benötigt wird
using (StreamReader read = new StreamReader(FilePath)) 
{								
	int CurByte = read.BaseStream.ReadByte(); 						
	while (CurByte != -1) //solange Dateiende noch nicht erreicht
	{			
		CurByte = read.BaseStream.ReadByte(); //Byte der Datei einlesen			
	} 
}

Gruß,
Snowwolf

4.506 Beiträge seit 2004
vor 19 Jahren

Hallo WhiteTiger!

Wenn es Dir wirklich nur um das Byteweise einlesen eines Files geht, dann funktioniert das Ganze auch mit System.IO.FileStream.

Soweit ich weiß, kann man mit diesem Stream-Handle auch nur byte-weise einlesen.

Alles oben genannte funktioniert ebenfalls, und ist reine geschmackssache, wasa man hier anwendet.

Ciao
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

W
WhiteTiger Themenstarter:in
29 Beiträge seit 2004
vor 19 Jahren

Guten Morgen

Sorry für späte Antwort--> letzten Tage waren stressig.

@Pulpapex

Ah wie "was steht drin im .hex-File". Kapier ich nett! Lad mal ein hex-File hoch --> dann kannst nachsehen.

@Snowwolf3000

ich will ein .hex-File von Festplatte wählen per Dialog, und dann wenn User auf einen Button klickt dieses .hex-File an ein USB-Interface übertragen. An diese USB-Interface kann ich aber nur ein/mehrere Bytes übertragen d.h. das hex-File muß in einzelen Bytes zerlegt werden.

P
939 Beiträge seit 2003
vor 19 Jahren

Das wollte ich wissen. Es stehen keine binären Daten in der Datei, sondern Byte-Repräsentationen in Hex-Darstellung (soll bedeuten, es ist eine Textdatei). Zwei Hexziffern zusammengenommen entsprechen einem Byte. Der Bytewert kann mit Byte.Parse ermittelt werden. Im Thread, den ich oben angegeben hatte, ist Beispielcode gepostet. Der müsste noch um die Behandlung der Doppelpunkte erweitert werden.

So sieht die Hexdatei aus:

:020000020000FC
:101F00000FE50DBF04E00EBF4AEA00ED00B903E0A3
:101F100001B904EC06BF01EF02B906B707FFFDCF18
:101F200001B1087F003629F00037E9F0083A91F056
:101F3000E7CF1FD028F3102F20E4D1E0CC273327A0
:101F400018D0F0F2099330272A95D1F712D0432FF9
:101F500022D0E3CF43B906B706BF06B707FFFDCFD0
:101F600006B706BFDACF05D0F0F7002706BF0C94FE
:101F70000000979A06B706BF06B707FFFDCF9798F0
:101F800001B1087F003A19F003B18894089506B7AB
:101F900006BF08940895D1E0CC27EE27F12FF695DF
:101FA000E795F695E795EF93FF9353E009D020E28C
:101FB0000990199051E004D032962A95C9F70895F6
:0C1FC00007B700FDFDCF57BFE89508955E
:00000001FF

Gruss
Pulpapex