MSComm

PhilDu

Grünschnabel
Hi zusammen!!
Ich hab ein Problem. Ich hab ein kleines Programm geschrieben das mir die Daten von einem digitalen Messschieber über die serielle Schnittstell liefert.
Das Programm sieht so aus:

Private Sub Form_Load()
MSComm2.CommPort = 2
MSComm2.Settings = "4800,E,7,2"
MSComm2.PortOpen = True
End Sub

Private Sub Timer2_Timer()
HauptForm.MSComm2.DTREnable = True
HauptForm.MSComm2.RTSEnable = True
MSComm2.DTREnable = False
Timer2.Interval = 150
Timer2.Enabled = True
X_Wert = Val(MSComm2.Input)

End Sub

Es funktioniert auch, allesdings verschwindet die Zahl ja durch den Interval immer wieder, also blinckt.
Und da es ja die Funktion "Private Sub MSComm1_OnComm()" gibt, wollte ich das dann mit dieser Funktion machen. Allerdings springt das Programm nicht von der "Private Sub Form_Load()" in die "Private Sub MSComm1_OnComm()"
Das Programm sieht so aus:

Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "4800,E,7,2"
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Text4.Text = Me.MSComm1.Input
Form1.MSComm1.DTREnable = True
Form1.MSComm1.RTSEnable = True
MSComm1.DTREnable = False

Dim Eingang As String
Select Case MSComm1.CommEvent
Case comOverrun: MsgBox "Datenverlust!"
Case comRxOver: MsgBox "Datenverlust!"
Case comEvReceive: Eingang = Eingang + MSComm1.Input
End Select
End Sub

Im vorraus schon mal danke Es ist mir sehr wichtig! Ist für die Schule! und ich beschäftige mich erst seit 3 Monaten mit Visual Basic, hab also nicht all so viel Ahnung :confused:
 
Oben hast du ein MSComm1 und unten ein MSComm2. Kann es vielleicht sein, dass deswegen etwas nicht funktioniert? Was meinst du denn mit "springt das Programm nicht"? Meinst du, das Ereignis OnComm von MSComm1 tritt nicht ein? Setze mal einen Haltepunkt in die Prozedur und schau, ob die Sub wirklich inaktiv bleibt. (Haltepunkte setzt man indem man mit dem Cursor im Code an die entsprechende Stelle geht und F9 druckt (die Zeile sollte dann rot hinterlegt werden). Ein Haltepunkt bewirkt, dass das Programm an bestimmten Stellen anhält und man dann beispielsweise mit F8 Zeile für Zeile durchgehen kann).
 
erst mal danke für die hilfe :)
das mit MSComm1 und MSComm2 stimmt. ist nur so, weil ich da davor noch ein zweites MSComm hatte und die erste gelöscht habe.
Ich hab des mit dem Haltepunkt ausprobiert! also es leuchten alle zeilen nacheinander gelb, bis auf den teil in "Private Sub MSComm1_OnComm()".
also ich denk mal das der teil nicht eintritt!?
ich hab auch einfach mal ein textfenster in Private Sub MSComm1_OnComm()
gesetzt:
Text1.Text = "abc"

und das "abc" wird auch nicht im textfenster1 angezeigt!

schon en bissle komisch?!
 
also mir würde auch weiterhelfen, wenn ich das erste programm mit dem Timer so zum laufen bekomm, dass das textfed "X_Wert" die daten ruhig anzeigt! bisher springt er die ganze zeit zwischen null und dem aktuellen wert der Schnittstelle hin und her! also die daten sollen schon noch aktuallisiert werden! aber halt ohne des dumme hin und her espringe!
ich hab noch eine simulation dran gehängt und die funktioniert nicht so richtig, wenn der wert immer zwischendurch null annimt!
 
Das ist schon seltsam. Hast du die Prozedur OnComm auch an der richtigen Stelle deklariert? (Also nicht beispielsweise in einem Modul sondern im Code der Form, die das MSComm-Control enthält!)
Wenn du das mit dem OnComm-Ereignis nicht hinbekommst kannst du es ja so machen:
Code:
Dim intTest as Integer
intTest=Val(MSComm2.Input)
If intTest<>0 then X_Wert = intTest
Was mich aber nebenbei noch irritiert: In "Input" müsste doch ein Text stehen und keine Zahlen, oder? :confused:
 
ja die Prozedur von OnComm ist au f der richtigen Ebene!
Aber der Code von dir fuktioniert zwar kommen hin und wieder mal nur Bruchteile von den Messchiebern an, aber nur selten!
Aber echt en mega danke! muss das Projekt morgen abgeben und es funktioniert jetzt endlich zum größten Teil :-)
Also viel mals DANKE
gruß Phil
 

Neue Beiträge

Zurück