Guten Morgen,
ich habe einige Probleme mit dem Datenempfang über USB-RS232- Adaptern.
Vor einigen Jahren habe ich mir ein Projekt erstellt mit dem ich über die RS232-Schnittstelle
Daten (nur Zahlen, wahlweise Word und Byte) senden und empfangen kann. Dies war zunächst nur
zum Testen der Datenverbindung gedacht und wurde dann genutzt zum Auslesen von EProms (U555).
Nun wollte ich dafür USB zu RS232 Adapter nutzen, da die echte UART an den meisten PCs nicht
mehr vorhanden ist. Das Senden funktioniert weiterhin ohne Probleme. Nur beim Empfangen von 2 Bytes
gibt es Schwierigkeiten. Bei einem älteren Adapter (wird mit USB- ... CH340 erkannt) wird nur ein Byte
empfangen. Deshalb habe ich mir probehalber einen FTDI-Adapter zugelegt. Dort funktioniert es fast
wieder nur dass sporadisch auch manchmal nur ein Byte ankommt. Nehme ich HTerm geht es immer
problemlos. Deshalb denke ich, dass in meinem Programm wohl noch etwas unzureichend ist. Ich werde
aber demnächst mal eine Verbindung mit einem Arduino aufbauen. Zur Zeit werkelt auf der anderen Seite
ein ATMega48 mit einem LCD-Display.
Hänge mal das Projekt als zip-Datei an. Vielleicht könnt ihr mal drüber schauen. Ich habe das Projekt
mit Visual Studio 15 erstellt und benutze einen PC mit Win7 Prof.!
Es eilt aber nicht.
Danke und Gruß aus MD
Jürgen
ich habe einige Probleme mit dem Datenempfang über USB-RS232- Adaptern.
Vor einigen Jahren habe ich mir ein Projekt erstellt mit dem ich über die RS232-Schnittstelle
Daten (nur Zahlen, wahlweise Word und Byte) senden und empfangen kann. Dies war zunächst nur
zum Testen der Datenverbindung gedacht und wurde dann genutzt zum Auslesen von EProms (U555).
Nun wollte ich dafür USB zu RS232 Adapter nutzen, da die echte UART an den meisten PCs nicht
mehr vorhanden ist. Das Senden funktioniert weiterhin ohne Probleme. Nur beim Empfangen von 2 Bytes
gibt es Schwierigkeiten. Bei einem älteren Adapter (wird mit USB- ... CH340 erkannt) wird nur ein Byte
empfangen. Deshalb habe ich mir probehalber einen FTDI-Adapter zugelegt. Dort funktioniert es fast
wieder nur dass sporadisch auch manchmal nur ein Byte ankommt. Nehme ich HTerm geht es immer
problemlos. Deshalb denke ich, dass in meinem Programm wohl noch etwas unzureichend ist. Ich werde
aber demnächst mal eine Verbindung mit einem Arduino aufbauen. Zur Zeit werkelt auf der anderen Seite
ein ATMega48 mit einem LCD-Display.
Hänge mal das Projekt als zip-Datei an. Vielleicht könnt ihr mal drüber schauen. Ich habe das Projekt
mit Visual Studio 15 erstellt und benutze einen PC mit Win7 Prof.!
Es eilt aber nicht.
Danke und Gruß aus MD
Jürgen
VB.NET-Quellcode
- Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
- Dim ZBytes As Integer = SerialPort1.BytesToRead 'Anzahl der Bytes im Empfangspuffer
- Dim MyMSB As Byte
- Dim MyLSB As Byte
- Invoke(Sub()
- TextBox10.Text = ZBytes.ToString() 'TexBox10 - Anzahl der Bytes im Buffer
- End Sub)
- If ZBytes = 1 Then
- MyLSB = CByte(SerialPort1.ReadByte())
- ZEmpf8 = MyLSB
- Invoke(Sub()
- TextBox5.Text = ZEmpf8.ToString()
- TextBox6.Text = ""
- TextBox7.Text = ""
- TextBox8.Text = MyLSB.ToString()
- End Sub)
- End If
- If ZBytes = 2 Then
- MyLSB = CByte(SerialPort1.ReadByte())
- MyMSB = CByte(SerialPort1.ReadByte())
- ZEmpf16 = 256 * MyMSB + MyLSB
- Invoke(Sub()
- TextBox5.Text = ""
- TextBox6.Text = ZEmpf16.ToString()
- TextBox7.Text = MyMSB.ToString()
- TextBox8.Text = MyLSB.ToString()
- End Sub)
- End If
- 'Invoke(Sub()
- ' TextBox4.Text = ZEmpf8.ToString() 'SerialPort1.Read(MyArray, 0, 2)
- ' End Sub) 'BitConverter.ToUInt16(ZEmpf, 0)
- SerialPort1.DiscardInBuffer() ' Zum löschen des Eingangspuffers
- 'SerialPort1.DiscardOutBuffer() ' Zum löschen des Ausgangspuffers
- End Sub