Forum: Mikrocontroller und Digitale Elektronik FT245BM


von Steffen (Gast)


Lesenswert?

Hallo!

Ich habe ein Gerät hier vor mir liegen, dass ich mit einer eigenen
Software ansteuern möchte. Das Gerät hat intern einen FT245BM Chip und
vom Hersteller sind alle Demoprogramme mit dem VCP Driver geschrieben.

Ich würde das Gerät aber gerne über die DLL für den FTDIO Chip
ansteuern. Das funktioniert insoweit auch schon gut, als ich das Gerät
öffnen kann und auch Daten schreiben kann.

Gelesen werden allerdings keine - hier stürzt das Programm (ohne
Timeout) ab.

Ich vermute nun, dass die Daten zwar am FTDI Chip ankommen, aber der
Controller im Gerät diese nicht lesen kann (weil das ganze ja auf den
VCP Driver ausgerichtet war). Ich kenn mich mit den Chips leider nicht
aus - kann mir jemand evtl. Tipps geben, mit welchen Befehlen ich über
die DLL dem Gerät die serielle Schnittstelle vorspielen kann?

Ich verwende bisher nur FT_Open, FT_Close, FT_Write und FT_Read.

Vielen Dank!

Liebe Grüße
Steffen

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

AFAIK ist es für den µC nicht erkennbar ob die Daten dem FT245BM über
den VCP oder den DLL-Treiber gesendet wurden. Ich vermute eher eine
fehlerhafte Ansteuerung der DLL von deinem Programm. Wie stürzt es den
ab? Segmentation Fault?

Matthias

von Steffen (Gast)


Lesenswert?

Hey - danke für deine Antwort:

int handle=0;
int bytesWritten=0;
char* buffer = stackalloc char[5];
char* in_buffer = stackalloc char[9];

buffer[0] = (char)0x7E;
buffer[1] = (char)10;
buffer[2] = (char)0;
buffer[3] = (char)0;
buffer[4] = (char)0xE7;

int c = FDTI.FT_Open(0,&handle);
c = FDTI.FT_SetBaudRate(handle, 9600);
c = FDTI.FT_Write(handle,buffer,5,&bytesWritten);
c = FDTI.FT_Read(handle,in_buffer,9,&bytesRead);
FDTI.FT_Close(handle);

Das Programm liefert für c = 0 - also FT_OK. Erst beim Read kommt das
Problem. Er hängt einfach nur. Es passiert gar nichts. Programmiert ist
es in C#.

Eigentlich sollte das Device 9 Bytes zurückliefern. Ich habe es auch
schon mit 1 probiert - das Device antwortet nicht.

Über den VCP Treiber hat es mit diesen gesendeten Daten geantwortet
...

Viele Grüße
Steffen

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

In C# hab ich noch nicht mit native-DLLs gearbeitet. Ich bin da bisher
immer in der .net Welt geblieben. IIRC muss man alles was irgendwie an
der VM vorbei operieren soll in einen unsafe-Block packen.

Matthias

von Steffen (Gast)


Lesenswert?

Hey,

ja - da hast du Recht. Aber die Funktioen gehen ja eigentlich. Ich
wunder mich nur, warum ich von dem Device keine Antwort erhalte. Sende
ich die selben Daten über den VCP, so erhalte ich die Antwort...

Die Funktionen geben alle ein FT_OK zurück, also gehe ich davon aus,
dass sie auch erfolgreich ausgeführt wurden. Leider antwortet das
Device aber nicht. Also gehe ich davon aus, dass der Controller im
Device nicht merkt, dass die Daten da sind und daher auch keine
zurückschickt.

Viele Grüße
Steffen

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.