Forum: PC-Programmierung Visual Basic Daten im us Bereich lesen


von Sabine M. (zizo)


Lesenswert?

Hi,
ich versuche mit Visual Basic 2008 Daten von FT232 auszulesen, das 
klappt mit der Timer mit 1 ms ganz gut.
Die Frage, gibt es die Möglichkeit die Daten schneller auszulesen, ich 
meine in  us Bereich. Mit der Timer geht nicht , da der minimale 
Intervall 1 ms ist.

Vielen Dank

von Axel J. (axeljaeger)


Lesenswert?

Ich würde mal erwarten, dass sowas mit normalen 
Desktop-Betriebssystemen, egal welche Programmiersprache, eher schwierig 
wird.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein, das ist prinzipbedingt unmöglich; der USB wird schließlich auch 
nur im 1-msec-Takt gepollt, also kann mit einer USB-RS232-Bridge nicht 
häufiger als im 1-msec-Takt ausgelesen werden.

Hinzu kommen die von Axel erwähnten Einschränkungen von 
Desktop-Betriebssystemen.

von Martin K. (fahljse)


Lesenswert?

Sabine Mühller schrieb:
> Hi,
> ich versuche mit Visual Basic 2008 Daten von FT232 auszulesen, das
> klappt mit der Timer mit 1 ms ganz gut.
> Die Frage, gibt es die Möglichkeit die Daten schneller auszulesen, ich
> meine in  us Bereich. Mit der Timer geht nicht , da der minimale
> Intervall 1 ms ist.

Wozu zum teufel brauchst du da einen timer?

im einfachsten fall ruft man das blockierende read() in einer
schleife auf.
Wenn du daneben noch was zu tun hast mach das in einem
eigenen thread oder benutz die async read funktionen.

von Axel J. (axeljaeger)


Lesenswert?

Was hast du denn eigentlich mit dem 1us-Timer vor? Vielleicht finden wir 
einen anderen Lösungsweg?

von Sabine M. (zizo)


Lesenswert?

ich möchte mit FT232 Daten von FPGA auslesen.

von Axel J. (axeljaeger)


Lesenswert?

Und der FPGA hat dann eine serielle Schnittstelle oder soll der 
Bit-Bang-Modus benutzt werden?

von Johnny B. (johnnyb)


Lesenswert?

Auf dem PC arbeitet man normalerweise mit Ereignissen (Events) und nicht 
per Polling. Du richtest also alles so ein, dass Du vom Betriebssystem 
benachritigt wirst, sobald sich Daten im Eingangspuffer befinden und Du 
sie abholen kannst. Wenn Du die normalen .NET Komponenten für die 
serielle Schnittstelle verwendest, ist dies alles schon fertig drin.

von Sabine M. (zizo)


Lesenswert?

ich möchte der Bit-Bang-Modus verwenden.

von Axel J. (axeljaeger)


Lesenswert?

Das wird nicht funktionieren. Sowohl USB, als auch ein Standard-PC sind 
nicht hinreichend echtzeitfähig, als dass dir da nicht Daten verloren 
gehen. Wenn du aber ohnehin einen FPGA hast, dürfte es ja kein Problem 
sein, mit dem eine ordentliche Schnittstelle bereit zu stellen (USB, 
richtige serielle Schnittstelle, Ethernet).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Eine Möglichkeit, Bitbang per USB hinzubekommen, bietet die MPSSE des 
FT2232. FTDI bietet dafür ein paar DLLs, um spezielle Protokolle zu 
implementieren:

http://www.ftdichip.com/Support/SoftwareExamples/MPSSE.htm

von Sabine M. (zizo)


Lesenswert?

Danke,
Bit Bang hat eigentlich mit 1ms funktioniert.Kann ich die Daten in 1us 
aus der USB auslesen.

von Arc N. (arc)


Lesenswert?

Sabine Mühller schrieb:
> Danke,
> Bit Bang hat eigentlich mit 1ms funktioniert.Kann ich die Daten in 1us
> aus der USB auslesen.

Wie oben schon gesagt: Nein!
Der Rest ergibt sich aus 
http://www.ftdichip.com/Support/Documents/AppNotes/AN232R-01_FT232RBitBangModes.pdf
bzw. aus dem USB-Standard.

"The maximum Baud rate is 3MBaud, but to allow time for the
data to be setup and held around the WR# strobe the Baud rate should be
less than 1MBaud"

"Data can be written to the device in Asynchronous Bit Bang mode using 
the
FT_Write command. If multiple bytes are written to the device the values
on the pins will change at the rate set by FT_SetBaudRate."

von Potter S. (potter68)


Lesenswert?

Hallo Sabine Müller,

sag uns doch mal etwas mehr zu Deinen Daten.

- Wieviele Bytes sind es denn in der Sekunde?
- Müssen die Daten in bestimmten Zeit-Intervallen übertragen werden?
- Wie groß sind die Intervalle?
- Muss das zwingend Bitbang sein?

Eigentlich kann USB so ziemlich alles übertragen. Wie man das dann 
macht, hängt eben von Deinem Vorhaben ab.

Gruß Ralf

von Sabine Mühller (Gast)


Lesenswert?

Hi,
Mit ein FPGA lese ich die ADC Daten  und verarbeite ich sie dann 
speichere ich die im FIFO, die Daten müssen jede 2 us aus den FPGA 
geholt werden. Für mich ist leichte die 8 Bit über Parallel Port von 
FPGA auszugeben, d.h. die Parrallel Schnittstelle von der USB Chip (Bit 
Bang) zu verwenden.
ich habe mir überlegt, dass ich als erste eine 8 Bit Befehl zum FPGA 
sende. Dann sendet der FPGA die Messung zurück, in diesem Fall kann ich 
alles ohne Timer machen. Aber ich muss wissen wie lange dauert das 
Befehlbearbeitung in Visual Basic.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sabine Mühller schrieb:
> Für mich ist leichte die 8 Bit über Parallel Port von
> FPGA auszugeben,

Dann nimm einfach einen FT245 - der ist dafür gedacht und kann ganz ohne 
Bitbanging angesteuert werden.

von Lukas K. (carrotindustries)


Lesenswert?

Rufus t. Firefly schrieb:
> Dann nimm einfach einen FT245 - der ist dafür gedacht und kann ganz ohne
> Bitbanging angesteuert werden.

Oder den FT2232 wenns schnell gehen soll.

von mkeller (Gast)


Lesenswert?

warum muss du denn alle 1µs abfragen? Das geht wie oben schon gesagt 
nicht. Wenn es rein um die Datenmenge geht musst du halt puffern und 
dann mit höherer Baudrate übertragen oder einen Full-Speed USB 
µController nehmen.

von Sabine Mühller (Gast)


Lesenswert?

The rate of data transfer can be controlled by using the FT_SetBaudRate
command. The maximum Baud rate is 3MBaud, but to allow time for the
data to be setup and held around the WR# strobe the Baud rate should be
less than 1MBaud.
The clock for the Asynchronous Bit Bang mode is actually 16 times the
Baud rate. A value of 9600 Baud would transfer the data at (9600x16) =
153600 bytes per second, or 1 every 6.5 mS.

Hi,
von Datenblatt habe ich Folgende verstanden,
ich kann maximal 1MBaud einstellen. wenn ich das im Byte umrechnen will 
, dann muss ich die Baudrate mit 16 multiplizieren. das ergibt 16000000 
Byte pro Sekunde, d.h. 16 Byte pro us.

habe ich das richtig verstanden?
 Danke

von Sabine Mühller (Gast)


Lesenswert?

hi,
ich möchte die serielle Schnittstelle von der FT232 testen. Hat jemand 
Erfahrung damit?
Kann mir jemand sagen, wie das gesteuert wir?

Sabine

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.