vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Der Datenempfang mit MSComm1_OnComm() klappt nicht 
Autor: Ralf364
Datum: 15.06.12 22:42

Hallo,

ich bin schon völlig verzweifelt, ich versuche Daten von einen Gerät über die serielle schnittstelle einzulesen. Das funkttioniert, wenn ich die Schnittstelle ständig abfrage:

While DatenForm.MSComm1.InBufferCount < 1           'auf das nächste Byte warten
Wend
Dabei liegt die Prozessorlast aber bei 100%. Baue ich jeweils eine kleine Pause ein (Sleep) geht sie sofort runter es kommt aber zu Datenverlusten.
Jetzt wollte ich die Sache mit dem OnComm Event lösen, das funktioniert aber überhaupt nicht. Pro Sekunde bekomme ich 10 Byte über die Schnittstelle rein, sie sendet aber 256 Datensätze pro Sekunde zu je 17 Byte.
Die paar Byte die reinkommen sin eigenartigerweise in der richtigen Reihenfolge, also kein Datenmüll. Es ist auch nicht so, das der Empfang nach einer Weile abgebrochen wird, bei 10 Sekunden sind es ca. 100 Byte, bei 30 Sekunden 300 Byte.
Ich kann mir überhaupt nicht erklären, wie das zustande kommt. Im Gerät ist ein USB Wandler (FT232), das Ganze läuft also über einen virtuellen Comm Port. Habe jetzt mal einen Pegelwandler eingesetzt und den Microcontroller direkt mit dem RS232 Port des Rechners verbunden, aber genau das gleiche Ergebnis.

Das ist die Initialisierung;
With MSComm1
.CommPort = 2
.Settings = "57600,n,8,1"
.PortOpen = True
.InputMode = comInputModeBinary
MSComm1.RThreshold = 1
MSComm1.SThreshold = 1
MSComm1.InputLen = 1
End With
Das wäre die Routine, habe fast alles rausgelöscht:
Private Sub MSComm1_OnComm()
Comz = Comz + 1
Select Case MSComm1.CommEvent
    Case comOverrun:    MsgBox "Datenverlust!"
    Case comRxOver:    MsgBox "Datenverlust!"
    Case comEvReceive
    Zeich = MSComm1.Input        'Zeich = Variant
    BlockFeld(Comz) = Zeich(0)   'Blockfeld= Byte Datenfeld
End Select
End Sub
Woran könnte das liegen, ich bin für jeden Tip dankbar!

Gruß Ralf
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Der Datenempfang mit MSComm1_OnComm() klappt nicht1.756Ralf36415.06.12 22:42
Re: Der Datenempfang mit MSComm1_OnComm() klappt nicht946Blackbox17.06.12 10:18
Re: Der Datenempfang mit MSComm1_OnComm() klappt nicht942Ralf36417.06.12 10:38

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel