Salve,
come faccio a visualizzare i caratteri letti dalla seriale su un controllo di testo in esadecimale invece di ascii?
Grazie
Salve,
come faccio a visualizzare i caratteri letti dalla seriale su un controllo di testo in esadecimale invece di ascii?
Grazie
VB viene trattato nell'apposito sub-forum.
Ti sposto.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Usa questa funzione che ho scritto: le passi la stringa come parametro e ti restituisce una stringa contenente la tua stringa in esadecimale; ad esempio, passandole "Ciao HTML.it!" ti restituisce "4369616F2048544D4C2E697421".
codice:Public Function String2Hex(ByVal inString As String) As String String2Hex = Space(Len(inString) * 2) Dim c As Long For c = 0 To Len(inString) - 1 Mid(String2Hex, c * 2 + 1, 2) = Hex(Asc(Mid(inString, c + 1, 1))) Next c End Function
Amaro C++, il gusto pieno dell'undefined behavior.
Ma e' questo quello che vuoi? O intendevi altro ...?
Salve,
non son molto ferrato in VB, maquello che vorrei ottenere e' ricevere dalla seriale un carattere e visualizzarlo in formato esadecimale per capirne l'esatto valore e non un simbolo ascii irriconoscibile.
esempio
Private Sub MSComm1_OnComm()
Dim Rx$
Rx$ = MSComm1.Input ' Leggo il contenuto del buffer di ricezione (e svuoto .Input)
If Len(Rx$) Then ' Se ho ricevuto qualcosa lo scrivo nella TextBox
Text1.Text = Text1.Text & Rx$
End If
End Sub
come lo modifico?
Qualcosa del genere ... ?
codice:Private Sub MSComm1_OnComm() Dim Rx As String Dim ix As Long Rx = MSComm1.Input If Len(Rx) Then For ix = 1 To Len(Rx) Text1.Text = Text1.Text & Right$("0" & Hex$(Asc(Mid$(Rx, ix, 1))), 2) Next i End If End Sub
Ottimo Oregon,Originariamente inviato da oregon
Qualcosa del genere ... ?
codice:Private Sub MSComm1_OnComm() Dim Rx As String Dim ix As Long Rx = MSComm1.Input If Len(Rx) Then For ix = 1 To Len(Rx) Text1.Text = Text1.Text & Right$("0" & Hex$(Asc(Mid$(Rx, ix, 1))), 2) Next i End If End Sub
cosi mi va bene
If Len(Data) Then
For ix = 1 To Len(Data)
Term.SelText = Right$("0" & Hex$(Asc(Mid$(Data, ix, 1))), 2)
Next ix
End If
Cosi pero' non mi visualizza se arriva un carattere zero in esadecimale, perche'?
Data e il valore letto sulla seriale, il tuo rx dell'esempio.Originariamente inviato da oregon
Cosa e' Data?
Se la variabile Data e' una stringa (di VB6) e contiene degli zeri binari allora saranno visualizzati dalla funzione che ti ho mostrato ...
Devi essere certo che i caratteri null vengano ricevuti effettivamente ed inseriti nella variabile e non scartati ...
E per "certo" intendo dire che devi controllare in debug ...