Visual Basic Daten im us Bereich lesen

OP #1829319
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
#1829399
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.
#1829474
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.
#1829523
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).
#1829786
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."
#1831125
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
Gast #1831338
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.
Gast #1831518
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.
Gast #1832150
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren