Hej För mig ser det ut som ren rappakalja kod. Är det Vb.net ? Det är VB och det funkar för allt utom konvertering till 6Ah Koden är till stora delar hämtad från nätet och är inte "egentillverkad". Txt är ju de jag skickar på porten nu och jag läser in det igen. Format() blir schizofren om den får ett argument som ser ut som ett tal i början, men sen visar sig innehålla icke-numeriska tecken - t.e.x 6A. A6 däremot funkar bättre eftersom den redan vid första tecknet ger upp att försöka behandla det som ett tal. Ok tyckte det såg himla mystiskt ut. Gör nu så här så man begriper vad du vill. Det jag gör är ett OBD2 program och då vill jag se hur responsen från ECU:erna ser ut i hex form.String to hex
Jag fattar inte varför denna inte fungerar.
Jag läser från comm porten och vill ha det i Hex.
men 0x6A, blir 0x00 i text rutan, jag fattar nada.
Något konstigt är det, kan någon?
Magnus
Dim txt As String
Dim bytes() As Byte
Dim i As Integer
' Display the bytes.
txt = MSComm1.Input
bytes = StrConv(txt, vbFromUnicode)
txt = ""
For i = LBound(bytes) To UBound(bytes)
txt = txt & Format$(Hex$(bytes(i)), "00") & " "
Next i
Text2.Text = Text2.Text + txt + vbNewLineSv: String to hex
Vad är detta ? bytes = StrConv(txt, vbFromUnicode) . bytes är ju en Array !!!
Ge ett exempel på vad txt innehåller raden under txt = MSComm1.Input
0x6a är Hex enl . C konvention så presenteras det inte i VBSv:String to hex
Jag skickar 68 6A F1 04 C7 , koden läser in 68 00 F1 04 C7 .
Har även testat i det programmet jag hittade och den konverterar j till 00 hex och inte till 6a, så den verkar lite kryptisk
Jag vill ha mscomm1.input presenterat i hex värde i mitt text fönster.
Anledningen till att jag skrev 0x6A är att det är ett allmänt kännt begrepp för hex.
MagnusSv: String to hex
Fulhack:
If bytes(i) < 16 Then
txt = txt & "0" & Hex(bytes(i)) & " "
Else
txt = txt & Hex(bytes(i)) & " "
End If
Sv:String to hex
Vad tusan gör denna rad med Array:en bytes ?
Jag skulle lösa det med Split och jag skulle köra bytes As String och i As Long
koden läser in 68 00 F1 04 C7 . var kom 00 plötsligt ifrån
Mystiskt är det. Input är väl det som kommer uteifrån till MsComm1
<code>
bytes = StrConv(txt, vbFromUnicode)
</code>Sv: String to hex
<b>Txt är ju de jag skickar på porten nu och jag läser in det igen.</b>
Vad är detta för nått , någon som begriper !?
Lägg in en MsgBox txt efter MsComm1
<code>
txt = MSComm1.Input
MsgBox txt
bytes = StrConv(txt, vbFromUnicode)
</code>
Vad står det i MsgBoxen och hur skall slutreseltatet se ut ?Sv:String to hex
Då började jag med att "lopa" serie porten så att allt ser rätt ut när jag skickar det.
Jag gjorde som Thomas skrev, då blev det så här.
Det funkar nu.
Dim txt As String
Dim bytes() As Byte
Dim i As Integer
txt = MSComm1.Input
bytes = StrConv(txt, vbFromUnicode)
txt = ""
For i = LBound(bytes) To UBound(bytes)
'txt = txt & Format$(Hex$(bytes(i)), "00") & " ", denna byttes mot de som Thomas skrev.
If bytes(i) < 16 Then
txt = txt & "0" & Hex(bytes(i)) & " "
Else
txt = txt & Hex(bytes(i)) & " "
End If
Next i
Text2.Text = Text2.Text + txt + vbNewLine