Forum: PC-Programmierung FT232 Empfang Problem


von Sabine M. (zizo)


Lesenswert?

Hi,
ich habe ein FT232 mit ein Pic16F88 verbunden, ich sende Daten mit 
Serielle Schnittstelle von der FTDI, der PIC kopiert die Daten auf der 
TXD und sendet er zurück. Das Senden von PC und Zurücksende von PIC 
klappt gut, mit Oscilloskope habe ich die Daten auf TXD und RXD 
kontrolliert. Das Problem ist ich kann von strReadBuffer nix auslesen. 
Ich habe der FT_RxBytes kontrolliert, der wird auf 1 erhöht.
Kann mir jemand bitte helfen?
Do While x < 100
            x = x + 1
            i = 0

            zu = 1
            strWriteBuffer = Chr(zu)
            lngBytesWritten = 0
            If FT_Write(lngHandle, strWriteBuffer, 1, lngBytesWritten) 
<> FT_OK Then
                ListBox2.Items.Add("Startsignal war fehlerhaft")
            End If

            ' Anzahl der Bytes in der Warteschlange lesen
            flTimedout = False
            flFatalError = False
            ' Get number of bytes waiting to be read
            If FT_GetQueueStatus(lngHandle, FT_RxBytes) <> FT_OK Then
                ListBox1.Items.Add("Status war fehlerhaft")

            End If

            ' Warte bis Anzahl der Bytes vollständig ist
            ' (6 Bytes werden erwartet)

WarteAufMehr:
            ' immer eine Sicherheitsschleife zum Abbruch einfügen
            ' falls nie mehr etwas zurück kommen sollte!
            ftStatus = FT_GetStatus(lngHandle, FT_RxBytes, FT_TxBytes, 
lngevent_get_stat)
            If ftStatus = FT_OK Then
            Else
                If ftStatus = FT_IO_ERROR Then
                    ListBox1.Items.Add("Status IO Fehler")
                    GoTo Abbrechen
                End If
            End If
            i = i + 1
            If i > 4000 Then
                ListBox1.Items.Add("Lesen abgebrochen")
                GoTo Abbrechen
            End If
            ListBox1.Items.Add("Anzahl" & FT_RxBytes)
            If FT_RxBytes < 1 Then GoTo WarteAufMehr

            ' 6 Bytes (Anz. in FT_RxBytes) nach strReadbuffer einlesen
            ' mögliche Fehler berücksichtigen

            flTimedout = False
            flFatalError = False
            lngTotalBytesRead = 0
            strReadBuffer = ""
            Do
                lngBytesRead = 0
                ftStatus = FT_Read(lngHandle, strReadBuffer, FT_RxBytes, 
lngBytesRead)
                If (ftStatus = FT_OK) Or (ftStatus = FT_IO_ERROR) Then
                    If lngBytesRead > 0 Then
                        lngTotalBytesRead = lngTotalBytesRead + 
lngBytesRead
                    Else

                        flTimedout = True
                    End If
                Else
                    flFatalError = True
                End If
            Loop Until (lngTotalBytesRead = FT_RxBytes) Or _
            (flTimedout = True) Or _
            (flFatalError = True)

            ' Daten in strReadBuffer in Loggerlist anzeigen
            ' oder Fehlermeldungen anzeigen

            If (flTimedout = False) And (flFatalError = False) Then
                empfang = Val(strReadBuffer)
                ListBox1.Items.Add("Empf" & strReadBuffer)
                flFailed = False
            ElseIf flTimedout = True Then
                ListBox1.Items.Add("FT_Read timeout Fehler: = " & 
ftStatus)
            Else
                ListBox1.Items.Add("FT_Read Fehler = " & ftStatus)
            End If

        Loop

von Sabine M. (zizo)


Lesenswert?

Hi,
hat jemand Erfharung damit? ich habe die ganze Zeit nach Fehler gesucht, 
nix gefunden!

Sabine

von Gerry L. (Gast)


Lesenswert?

Hi,

Delphi? Com? D2XXUnit?

Gerry

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.