Hallo, ich möchte ein LabView-Programm schreiben, mit dem ich große Datenmengen wegspeichern kann. Ich empfange über einen FTDI-Chip (FT232H) große Datenmengen (2 MBaud und mehr) Nun möchte ich die Daten die ich empfange möglichst schnell wegspeichern (am einfachsten wäre erst einmal in eine Textdatei). Ich habe dies bereits versucht mit dem Realterm. Wenn dieser aber die Daten wegspeichern soll, halbiert sich aber die Datenrate, weil der Realterm scheinbar nicht hinterher kommt. Nun frage ich mich, ob das mit VISA möglich ist. Es gibt ja auch von FTDI direkt die FTD2xx.dll . Ich habe aber im Internet gelesen, dass diese Library keine Geschwindigkeitsvorteile gegenüber einem normalen VCP liefert. Stimmt das? Hat vielleicht jemand ein Beispiel zur FTD2xx-Library, mit dem man große Datenmengen empfangen kann. (Ich habe die Beispiele von der FTDI-Seite schon heruntergeladen, aber hier geht es ja eher um geringere Datenraten). Ich hätte auch kein Problem mit Beispielen in C# oder C++
> Ich habe dies > bereits versucht mit dem Realterm. Wenn dieser aber die Daten > wegspeichern soll, halbiert sich aber die Datenrate, weil der Realterm > scheinbar nicht hinterher kommt. arbeitest du denn mit einer Flusskontrolle? Denn wie sollte denn sonst Realterm der gegenstelle mitteilen das es hinter hinterher kommt? 2Mbaut sollte eigentlich überhaupt kein Problem sein. Das sind noch nur 200kb/s - also nichts für einen aktuellen PC. Schreibe doch einfach selber mal ein Programm, sind in c# vermutlich weniger also 10zeilen. schnittstelle öffnen, datei öffen, beim datenevent daten wegschreiben fertig. Oder teste mal mit type comX > out.txt
Also ich habe einwenig rumprobiert und da ist mir noch was aufgefallen. Ich habe mit LabView eine Anwendung geschrieben die VISA nutzt und ein Byte sendet. Jetzt ist zwischen den einzelnen Bytes aber immer ein großes Delay so dass ich rechnerisch garnicht auf 2MBaud komme. Dann habe ich dasselbe Programm mit C# geschrieben wobei ich hier die D2xx Lib nutze. Ähnliches Bild auf dem Oszi. Dann habe ich zum Vergleich noch ein Programm für einen Mikrocontroller geschrieben, der dann auch 1 Byte mit 2MBaud schickt und hier ist die Latenz zwischen den einzelnen Bytes deutlich geringer. Woran kann das liegen? Ich habe gesehen, dass es bei der D2xx Lib eine Funktion zum setzen der Latenz gibt. Diese ist normalerweise auf 16ms eingestellt. Ich habde diese dann sowohl auf den Minimalwert von 2ms gesetzt und auf den Maximalwert von 255ms. Aber ich konnte keine Änderung feststellen. Hat das eventuell irgendwas mit Windows zu tun?
Hartmuth schrieb: > Woran kann das liegen? das liegt mehr oder weniger am USB. Du wirst niemals mit einzelen byte die Leitung sinnvoll ausnutzen können. Selbste ohne USB wird es maximal die hälfte werden. Denn in der Zeit wo du 1 byte sendest, sendet ja die gegenstelle nicht. (kann man zwar ändern, ist aber oft so) Warum kannst du nicht viele bytes auf einmal übertragen?
Richtig, am PC erreichst du bei eigentlich allen Schnittstellen nur die volle Datenrate, wenn du viele Daten am Stück schickst, das hat nicht mal was mit USB zu tun.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.