vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 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
Datenverlust RS232 Schnittstelle 
Autor: ralf33
Datum: 14.04.06 15:24

Hallo,

habe ein Problem und komme überhaupt nicht weiter.
Von einem transportablen Messgerät lese ich Daten über die RS232 Schnittstelle ein und es kommt ständig zu Datenverlusten. Habe mir die gesendeten und die empfangenen Daten mal genau angesehen und festgestellt, das im Fehlerfall immer 2 aufeinanderfolgende Byte fehlen. Das kann am Anfang oder an allen möglichen Stellen des Datenblock passieren, sind aber bisher immer 2 Byte gewesen.
Vorher habe ich die Daten unter Windows 98 mit Hilfe einer Port.dll eingelesen und das hat jahrelang geklappt. Jetzt habe ich w2000 drauf, da funktioniert die port.dll nicht und ich versuche es mit Mscomm hinzubekommen.
Am Messgerät selbst wurde nichts verändert, es schiebt die Daten auf jeden Fall fehlerfrei raus. Die Schnittstelle ist auch in Ordnung.
Mir kommt es vor, als wenn Mscomm hin und wieder 2 Byte "übersieht". Habe ich etwas fallsch initialisiert, oder ist die Routine, die auf Daten wartet fallsch ?
Die Grundeinstellungen der Schnittstelle müssen ja stimmem. denn ca. 50% der Übertragungsversuche sind erfolgreich.

So initialisiere ich die Schnistelle:
Private Sub UserForm_Initialize()
With MSComm1
.CommPort = 1
.Settings = "19200,n,8,1"
.PortOpen = True
.InputMode = comInputModeBinary
End With
End Sub
hiermit werden die zeichen eingelesen:
While MSComm1.InBufferCount < 1
Wend
laenge = MSComm1.Input
While MSComm1.InBufferCount < 1
Wend
int_zeich = MSComm1.Input
For i = 0 To laenge(0) - 1
    While MSComm1.InBufferCount < 1         'warten bis ein Zeichen da ist
    Wend
    int_zeich = MSComm1.Input               'Zeichen einlesen
    BlockFeld(i) = int_zeich(0)               'Zeichen im Blockfeld speichern
Next
For i = 0 To laenge(0)
    Put #DateiNr, , BlockFeld(i)            'alle Zeichen in Datei schreiben
Next
Hat jemand irgendeine Idee ?

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

 ThemaViews  AutorDatum
Datenverlust RS232 Schnittstelle784ralf3314.04.06 15:24

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