Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB] Hex strings maken

Pagina: 1
Acties:

  • Omisys
  • Registratie: Oktober 2010
  • Laatst online: 22-11 04:06
Beste tweakers,

Voor een project moet ik met een PC applicatie geschreven in VB(Ja dit is een eis) een hex file inlezen en daarna de uitgelezen data doorsturen over de serieele poort naar een microcontroller. Nu heb ik zelf eerder nog nooit met VB gewerkt dus dit is even wennen. Onderhand kan ik wel netjes de regels van de hexfile uitlezen en deze opdelen in de verschillende stukken(een hexfile bevat verschillende delen zoals het address, count, data,checksum). Nu het volgende probleem. Stel de data ziet er als volgt uit:

1C80FB9A34206168AD141680FB120301

Dit sla ik op in een string. Om dit netjes te versturen naar mijn microcontroller moet dit omgezet worden naar het volgende formaat: 0x1C 0x80 0xFB enz.

Overal moet dus 0x voor worden gezet en dan dus 2 tekens van de string erachter. Kan iemand mij op weg helpen hoe ik dit kan aanpakken?

  • Sendy
  • Registratie: September 2001
  • Niet online
Niet 0x ervoor zetten.

Lees de file met hexadecimale waarden gewoon direct in een buffer (vertaal daar de 2-byte string "1C" naar 1-byte 0x1C). Daarna stuur je de data in de buffer weer weg.

  • Omisys
  • Registratie: Oktober 2010
  • Laatst online: 22-11 04:06
Ik gebruik nu streamreader op de file in te lezen. Daarna pak ik de stukken die ik nodig heb mbv de functie Mid. Deze returned dan een string. Kan ik vanuit die string dan 2 characters pakken en hier 1 byte van maken? Heb je een tip hoe je dit dan doet?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

[google=visual basic convert hexadecimal string to int] :?

Er bestaat bovendien niet zoiets als een "hex file". Hex is kort voor hexadecimaal en dat is niet meer dan een talstelsel, een manier om een numerieke waarde uit te beelden. In die file van je staan blijkbaar gewoon hexadecimale waarden in stringvorm. Wat je moet doen om die string naar integers te vertalen verschilt niet bijster veel met hoe je dat doet voor decimale waarden.

[ Voor 16% gewijzigd door NMe op 05-04-2013 14:58 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 18-11 20:57
Communicatie met een microcontroller klinkt ook niet als iets wat met strings zou gebeuren, ik verwacht eerder dat dat met bytes gebeurt.

We are shaping the future


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23-11 13:12
Strings zijn ook bytes

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 17:52
Omisys schreef op vrijdag 05 april 2013 @ 13:52:
[...] een PC applicatie geschreven in VB(Ja dit is een eis)
offtopic:
Geen idee welke VB, maar het bashen op VB is ook niet altijd te verantwoorden. Ja, VB6 is niet bepaald mooi (en is ook "bluh"), maar als je kijkt naar VB.NET, dat is echt wel goed hoor (de Microsoft.VisualBasic assembly daar gelaten)...

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 18-11 20:57
Ja, en de inhoud van een lijst van 10000 items is uiteindelijk ook niets meer dan bytes. Wat ik bedoelde is dat de communicatie met die microcontroller waarschijnlijk het daadwerkelijke type System.Byte verwacht. ;)

We are shaping the future


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23-11 13:12
Die aanname is niet echt te verdedigen trouwens, er zijn tig protollen die gedefinieerd zijn in termen van ASCII karakers en die hoogst waarschijnlijk vanuit microcontrollers gegenereerd worden; neem bijvoorbeeld de NMEA protocollen die door GPS ontvangers worden uitgepoept.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Omisys
  • Registratie: Oktober 2010
  • Laatst online: 22-11 04:06
Er bestaat wel zoiets als een hex file, *.hex. Dit zijn files waarmee microcontrollers geprogrammeerd worden. Wat ik nodig had is hetvolgende : Chr(Val("&H" & Mid(temp, i, 2))).

temp is hierbij de hex string. Wat dit doet in een loopje is van iedere 2 characters 1 byte maken welke overgestuurd kan worden.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 23-11 13:12
Omisys schreef op maandag 08 april 2013 @ 16:58:
Er bestaat wel zoiets als een hex file, *.hex. Dit zijn files waarmee microcontrollers geprogrammeerd worden. Wat ik nodig had is hetvolgende : Chr(Val("&H" & Mid(temp, i, 2))).

temp is hierbij de hex string. Wat dit doet in een loopje is van iedere 2 characters 1 byte maken welke overgestuurd kan worden.
Wat jij bedoelt is een bestand in het Intel Hex formaat die de informatie representeert als tekst met de getallen in hexadecimale notatie. De aanname van Alex) is dus ook niet correct in dat geval.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1