02. april 2005 - 09:08Der er
14 kommentarer og 1 løsning
Data fra text1 til Array
Hej Allesammen.
Jeg har en multi line textbox med en masse data fra 2047 bytes og op efter, hvordan får jeg denne data ind i et predefineret array ?, det skal ind i arayet i byets, altså hvis tekstboxen indeholder 0025f896fa, så skal 00 ind i en array plads, 25 i den næste osv.
mit array ser således ud:
Global fileData() As fData 'declares an array of the type fdata
Type fData 'File Data Type Addr As Integer 'address of the byte. newLine As Boolean 'if the byte is the first one in the hexfile Dbyte As Byte 'the byte End Type
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Du skal nok kun kigge på "Global fileData() As fData" som er mit array. Det jeg har gjort, er at jeg har læst en 24C16 eeprom ind i textboxen fra comporten, og det vil jeg gerne have ind i mit array i bytes. Jeg kan derefter gemme arrayet i en fil via en funktion som omdanner daten til Intel hex8 format.
Prøver lige på en anden måde, hvis nu man har en for next løkke, hvordan får man så en variable ind på en ny pkads i sit array, hver gang der køres igennem for next løkken ?
Jeg har en lykke som nedenstående, og det er "EEPromByte" jeg gerne vil have ind i mit array, så hver gang der loopes i for next løkken, skal EEPromByte "proppes" ind på en ny plads i arrayet
For EEPromAddressHighByte = 0 To 7 ' Skift page i eeprom For EEPromAddressLowByte = 0 To 255 '5 DoEvents DelayUS 10 EEPromByte = i2crbyte DelayUS 10 sendack DelayUS 10 frmSerial.Text1.Text = frmSerial.Text1.Text & Hex2(EEPromByte)
HER SKAL "EEPromByte" PUTTES IND PÅ EN NY PLADS I AARAYET
For EEPromAddressHighByte = 0 To 7 ' Skift page i eeprom For EEPromAddressLowByte = 0 To 255 '5 strHex = strHex & Hex2(fileData(j).Dbyte) j = (j + 1) Next Next
Hæ hæ hæ, det gør jeg ikke, indlæsningen af eeprommen, er på plads, det er bare denne array ting, der driller, kigger lige lidt mere på det og vender så tilbage :-) men det ser lovende ud
Det ser udtil at der kommer data ind i arrayet, men kan du gennemskue, om det kommer ind på samme måde som hvis en hex fil åbnes med nedenstående sub, for hvis jeg prøver at gemme arrayet med en saveHex sub jeg har bliver det gemt forkert, og det gør det ikke hvis det er en hex fil jeg har åbnet ind i aarayet med den nedenstående sub.
Sub loadHex8File(fdat() As fData, fileName As String) ReDim fdat(numberOfBytes(fileName) + 1) 'change size of array to the number of bytes in the hexfile Dim curLine As Integer, curAddr As Long, curIdx As Long, f As Integer, a$, i As Integer f = FreeFile
Open fileName For Input As f
Do Until EOF(f) curLine = curLine + 1 Line Input #f, a$
curAddr = "&H" & Mid$(a$, 4, 4) 'get lineaddress For i = 0 To Int("&H" & Mid$(a$, 2, 2)) - 1 'get # bytes in line fdat(curIdx).Addr = curAddr + i If i = 0 Then fdat(curIdx).newLine = True Else fdat(curIdx).newLine = False End If fdat(curIdx).Dbyte = "&H" & Mid$(a$, i * 2 + 10, 2) curIdx = curIdx + 1 Next i Loop Close f End Sub
1000 tak for din hjælp, jeg fandt ud af at jeg også skulle komme en adresse, samt definere hvornår der skulle være linie skift, så det hele er kommet til at se således ud.
Smid lige et svar, så får du dine point, dem har du fortjent.
Mvh.
Christian_h
If ByteCount = 16 Then With fileData(j1) .Addr = ByteAdr .newLine = True .Dbyte = EEPromByte End With ByteCount = 0 Else With fileData(j1) .Addr = ByteAdr .newLine = False .Dbyte = EEPromByte End With End If ByteAdr = (ByteAdr + 1) ByteCount = (ByteCount + 1) j1 = (j1 + 1)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.