PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MSComm



hacker
21.05.2005, 16:34
hi,

ich will mit VB die serielle schnittstelle abfragen ...ich hatte des vor mit MSComm Control zu machen, weil sichs so schön einfach angehört hat..

ich geh also her und starte n neue *.exe mach da des symbol für MSComm drauf und noch n textbox..

nun kommts zum code:

Private Sub Form_Load()

MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True

End Sub


Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent

Case comOverrun
MsgBox "Datenverlust!"

Case comRxOver
MsgBox "Datenverlust!"

Case comEvReceive
Text1.Text = MSComm1.Input

End Select

End Sub


sodele..soweit so gut..ich compile des..passt auch alles..aber dann...NIX PASSIERT :( die daten werden irgenwie net angezeigt oder nich empfangen..wo könnt das des problem liegen? is am code was falsch?

gruss hacker

art-hightech
21.05.2005, 17:47
So funktioniert das bei mir, versuchs mal damit bzw. vergleiche die Einstellungen!

Private Sub Form_Load()
' Fire Rx Event Every x Bytes
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
' When Inputting Data, Input y Bytes at a time
MSComm1.InputLen = 0
MSComm1.Settings = "9600,N,8,1"
' Open COM1
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim sData As Variant
If MSComm1.CommEvent = comEvReceive Then
sData = MSComm1.Input
empfang = StrConv(sData, vbUnicode)
Text1.Text = Text1.Text + empfang
End If

hacker
22.05.2005, 17:56
danke..jetzt tuts einwandfrei !! an was ich jetzt noch hänge ist, wenn ich meine ganzen daten in der do-loop schleife sende, wie krieg ich nachher am pc die daten wieder auseinander? die kommen ja dann alle hintereinander und wie könnte ich des programmiertechnisch lösen, dass die dann "sortiert" werdeN?

mfg hacker

art-hightech
23.05.2005, 15:19
Was willst du denn mit den Daten machen? Was sendest du? Also ich würde gleich auf jedes ankommende Zeichen reagieren, z.B.:

SELECT CASE empfang

CASE 1: ...
CASE 127: Machirgendwas
.
.
.
END SELECT

Getaco
23.05.2005, 16:16
du kanst auch einfach sonderzeichen [chr(1) bis chr(31) ohne chr(10) und chr(13)] vor und nach deinen daten senden. dann suchsdu in vb mit
INSTRING(start,ser_daten,such_chr) nach dem zeichen was du brauchst.

mfg

hacker
23.05.2005, 17:20
@art-hightechnik

ich sende halt nur zahlen..da könnt ich net auf jedes einzelne zeichen reagieren..

@getaco

die idee ist doch mal perfekt :D dankE!!!

mfg hacker

Getaco
23.05.2005, 17:23
Ich widerhol mich zwar : noch perfekter ist das Snap Protokol. Siehe mein beitrag in :
https://www.roboternetz.de/phpBB2/viewtopic.php?t=9469

mfg

blizzard
25.05.2006, 09:41
Hi,

Habe eine Frage zu deinem Programm art-hightech.
Wie schaffe ich es, dass ich mehrere Buchstaben (z.B. Hallo) darstellen kann? In meinem Programm wird immer nur der erste Buchstabe (H) angezeigt.
Bitte um Antwort.

mfg blizzard

blizzard
25.05.2006, 09:41
Hab gerade diese Zeile rauskommentiert:
empfang = StrConv(sData, vbUnicode)

Jetzt funktionierts einwandfrei! Was macht den dieser Befehl StrConv genau?