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
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
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
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!”
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.
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