Hej... Detta programexempel kanske kan ge dig den hjälp du behöver: Hej Uj! Hej Intressant!! Gjorde nåt liknande för ett tag sedan. Skulle styra en projektor åt IKEA... Kanske detta kan vara till hjälp:Komma igång med Comm controlen och seriell hårdvara
Jag hoppas det är ngn som kan ge mig en knuff i rätt riktining här.
Jag behöver skicka och ta emot hexadecimala (eller binära) styrsignler till hårdvara via comporten. Har testat mig fram med de inläggen jag hittat tidigare som hjälp men inte kommit nån vidare vart.
Hur skriver jag till exempel det hexadecimala talet 02 02 70 4D 03 till commporten.
Och sen, kommer MSComm1_OnComm att automatiskt inträffa när jag får mitt svar....
Väldigt tacksam för hjälp....
MVH MattiasSv: Komma igång med Comm controlen och seriell hår
<code>
Sub ToHex(ProcStr As String)
ProcLoop = 1
OutStr = ""
While ProcLoop < Len(ProcStr) + 1
CharVal = Asc(Mid$(ProcStr, ProcLoop, 1))
NewChars = "0" + Hex$(CharVal)
OutStr = OutStr + Right$(NewChars, 2)
ProcLoop = ProcLoop + 1
Wend
ProcStr = OutStr
End Sub
</code>
Hela tråden läser du här:
http://www.experts-exchange.com/Programming/Wireless_Programming/Q_20393255.htmlSv: Komma igång med Comm controlen och seriell hår
Som jag ser det är det väl bara att skicka det decimala talet Long
enl exempel 40914179.
Private Sub Command1_Click()
Dim hexLong As Long
hexLong = Val("&H" & "0202704D03")
Label1.Caption = hexLong 'skicka hexLong
End Sub
/SvenSv: Komma igång med Comm controlen och seriell hårdvara
Talet 0202704D03 är jättestort!! Det blir "overflow" när man försöker omvandla det till en long. Är du säker på att det inte är de hexadecimala TALEN 02, 02, 70, 4D, 03 som du vill skicka?
/AndersSv: Komma igång med Comm controlen och seriell hårdvara
Mittåt du har rätt !
Märkligt mitt exempel med Val ovan gav svaret 40914179
men det stämmer ju inte ett 02 för mycket , litade på Val(&H.........)
Det är 02704D03 som ger det resultatet.Varför i helv... lämnar inte Val OverFlow.
Undrar
/SvenSv: Komma igång med Comm controlen och seriell hårdvara
Om man använder
<code>
Dim t As Long
t = CLng(Val("&H" + "202704D03"))
</code>
Får man inget fel, men det felaktiga resultatet 40914179. Använder man däremot
<code>
Dim t as Long
t = CLng("&H" + "202704D03")
</code>
blir det "overflow".
Jag har sett att val funktionen returnerar en double (åtminstone enligt editorn i VB5, som syns när man skriver "val(" då får man en hjälptext som säger "Val(String as String) As Double").
Måste vara fel i "val" funktionen?Sv: Komma igång med Comm controlen och seriell hår
Det är dj* svårt att få till en fungerande kommunikation mellan Com kontrollen och hårdvaran. Jag lyckades aldrig lösa det där med On_Com, fick lägga en evig loop som kollade efter svar istället. Däremot kan du väl skicka talen som en sträng istället, det fungerade för mig iaf. Lycka till!
// AlexSv: Komma igång med Comm controlen och seriell hårdvara
<code>
Dim Data() As Byte
ReDim Data(4)
Data(0) = &H2
Data(1) = &H2
Data(2) = &H70
Data(3) = &H4D
Data(4) = &H3
MSComm1.Output Data
</code>
Eventuellt kanske du ska vända ordningen på siffrorna.