cioè adesso mi va bene perchè 01 02 e 03 coincidono... ma se avessi "3D"?
farei convertire prima il 3 e poi la D per concatenarle?
Dunque provando a ricapitolare.
Dalla lettura della porta seriale tu ottieni stampati nella console/Terminale in rappresentazione grafica e testuale, ad esempio, i seguenti caratteri:
\x3D In via generale e teorica questa rappresentazione in formato stringa rappresenta, come già hai tu precisato, un valore esadecimale della dimensione di un byte.
A te, però, quella lettura restituisce in vero
non un solo valore-byte (espresso in quella modalità), bensì un testo formato da 4
singoli valori-byte, i quali - sempre restando nel mio esempio - risultano così essere:
&5C &78 &33 &64 (qui trascritti in esadecimale)
Pertanto, al fine di ottenere il valore numerico reale (costituito da
un solo byte), da un lato devi
non prendere in considerazione i primi due valori, corrispondenti ai caratteri "\x", dall'altro devi "unire" gli ultimi due caratteri in modo da riprodurre coerentemente il reale valore numerico che il dispositivo esterno ha inteso trasmettere attraverso il collegamento con la tua porta seriale.
Così, raccogliendo quei quattro valori-byte, costituenti il testo "\xnn", propongo in modo schematico-didattico questa soluzione teorica:
Dim s As String
Dim i As Integer
......
......
Read #portaseriale, s, 4 ' Impone una lettura fissa di soli 4 byte per volta
' Ricrea il reale valore-byte che il dispositivo esterno ha inteso trasmettere:
i = Val("&" & s[2, 2])
' Mostra il valore numerico in formato decimale e il carattere ASCII corrispondenti al valore-byte reale ricreato:
Print i, Chr(i)