Forum: PC-Programmierung C# - Accessing the Bitbang Mode of an FTDI FT232/245


von Thomas L. (tom)


Lesenswert?

Soooooo

Nachdem ich von der Community ja schon oft Hilfe erhalten habe, habe
ich mir gedacht, ich gebe mal was zurück.

Ich muss gleich vorweg schicken - es ist nicht perfekt. Beispielsweise
wird nicht erkannt, wann ein Device abgesteckt oder angesteckt wurde.
Ehrlich gesagt - ich wusste nicht wie das geht :(

Aber zurück zum Thema:

Konkret geht es mir um den Bitbang Mode des FT245/FT232 von FTDI. In
Zeiten in denen serielle Schnittstellen rar werden, man aber doch ab
und an gern ein paar Portlines hätte, um daran per Relais ein Lämpchen
oder was auch immer anzuschliessen, wollte ich mal etwas einfaches
basteln, das hier evtl. aus der Patsche helfen kann :)

Geworden ist es:
* Eine Serverkomponente in C#, die auf einen angeschlossenen
FT245/FT232 die einzelnen Port Pins setzen kann. Das Ganze geschieht
über den BitBang Modus (nachzulesen auf www.ftdichip.com). Diese
Komponente wickelt die eigentliche Kommunikation mit dem Chip ab, bzw.
stellt das Objekt "FTDIDevice" am lokalen PC zur Verfügung und reicht
es per IPC an die Clients weiter
* Eine Clientkomponente, die es erlaubt aus dem Tray (da rechts unten)
die einzelnen Port Pins zu setzen
* Ein Command - Line - Client. Sprich: Mittels USBSwitch 7 1 kann der
8te Pin auf High gesetzt werden. Zum Beispiel zur Verwendung in einer
Batch Datei
* Eine Mailchecker Komponente, die einen wählbaren Pin beim Erhalt von
Mail auf einem POP Server setzt / löscht. Vorsicht: Funktioniert nur
mit POP und auch nur wenn keine Mails am Server verbleiben. Der
Mailcheck Teil der Komponente ist in höchstem Masse dumm :)


- Benötigt wird:
* Visual Studio 2005 (alles ab der beta2)
* Das .NET Framework 2.0 (heute wurde übrigens die final released)
* Ein bischen C# Kenntnisse :)


Was ich auch noch sagen möchte:
Ich bin beileibe kein Profi in solchen Dingen. Dies ist mein erstes
Projekt das Hard und Software verbindet. Ich bitte darum, mich nicht
mit Kritik zu überschütten - ja - es ist nicht perfekt - ich weiss.
Gegenüber konstruktiver Kritik bin ich jedoch immer offen und wünsche
mir solchige sogar :)
Weiters ist mir klar, dass gewisse Dinge einfacher/besser gelöst werden
könnten. Das Ganze entstand jedoch in meiner (spärlichen) Freizeit und
daher muss es reichen.

Das Projekt beinhaltet natürlich den gesamten Sourcecode. An Hardware
wird nur ein lauffähiger FT232/FT245 benötigt (sprich: mit Taktgeber,
und sonstigen Dingen die in der entsprechenden Application Note auf
www.ftdichips.com zu finden ist).

Weiters möchte ich noch www.elk-tronic.de loben. Ich habe von dort mein
fertig bestücktes USB Modul erhalten
(http://www.elk-tronic.de/Products/Adapter/SpecialAdapter/SpecialAdapter.htm).
Der Inhaber ist per Mail sehr freundlich (und nein, ich bins nicht :)
).

So .. Ende der Litanei ... alles weiter - hier  ->

http://www.somnatic.at/USBControl

von Thomas L. (tom)


Lesenswert?

Achja ... Feedback ist gern gesehen :)

von Luky S. (luky)


Lesenswert?

Klingt ja interessant...
Aber wo kann man sich das Projekt ansehen?

von Thom (Gast)


Lesenswert?

Derzeit? Gar nirgends - aber das Ganze ist auch schon ein Jahr her ..

Wenn du willst, kann ich dir jedoch zukommen lassen, was ich noch habe.
Mail an somnaticuser@hotmail.com

von Thomas (Gast)


Lesenswert?

mmh - klingt Interessant.

Gibts irgendwo noch den Code? Habe Interesse an der
Client-komponente...

von metaljack (Gast)


Lesenswert?

da hätt ich dann mal noch ne frage.
hat es jemand schon hinbekommen den kompletten befehlssatz des FTDI - 
also für die "dll" in C# umzusetzen. auf der ftdi-seite gibts zwar 2 
beispiele aber wirklich gut funktionieren die nich, z.b. ListDevices(by 
description).

oder vielleicht kennt jemand ne methode wie ich die c++ library in c# 
einbinden kann.

von Cornflake (Gast)


Lesenswert?

Hallo
Die Lösung hätte mich auch interessiert, speziell der Code um den 
BitBang Modus aus/anzuschalten.
Warum wurde eigentlich das Projekt nicht an den Startbeitrag angehängt? 
Dann hätte jeder der danach gesucht hat es gleich runterladen können?

Grüße Cornflake

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du hast schon mitbekommen, daß dieser Thread seit immerhin VIEREINHALB 
JAHREN inaktiv war?

von Cornflake (Gast)


Lesenswert?

Ist mir schon klar das der Beitrag ne Zeit alt ist.

Nachdem aber der komplette Thread durch das Fehlen der gesuchten 
Quelltextdatei (die unsinniger weise nicht in dem Thread direkt 
angehängt wurde) keinen Informationsgehalt mehr hat, wäre es nicht 
falsch sich den Speicher zu sparen und den Thread zu löschen.

von Thomas L. (tom)


Lesenswert?

So, jetzt reichts mir aber.

Die Möglichkeit, Dateien anzuhängen gab es damals schlicht und einfach 
nicht. Den Sourcecode habe ich ebenfalls nicht mehr, verglichen mit dem 
was ich heute mache war das Kinderkacke und ich würde mich schämen sowas 
abzugeben.
Nachdem es aber nur ein paar Zeilen Code waren, sollte es ein leichtes 
sein, das nachzubauen.

von Cornflake (Gast)


Lesenswert?

Ok, das man keine Dateien anhängen konnte wusste ich nicht.

Schade, denn für nen Anfänger mit diesem FTDI Chip wie mich, ist das 
keine Kinderkacke. Leider gibts sonst da auch kaum einen Einstiegscode 
oder gescheite Erklärung, Handbuch wie das ganze eigentlich 
funktioniert.

von Thomas L. (tom)


Lesenswert?

Gut, wenn du immer noch dran interessiert bist, schau ich dir ob ich 
daheim noch wo einen FT232 habe damit ich nochmal schnell was 
zusammenpfuschen kann.

Die Software Examples von FTDI selbst kennst du aber eh, oder?

http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples/CSharp.htm

Da gibts nämlich mittlerweile sogar einen .NET Wrapper. Kurzanleitung:
* Neues Projekt in Visual Studio
* Add Reference (DLL aus dem ZIP auswählen)

Und schon hast du Zugriff auf alle Funktionen, da gibts sogar eine die 
sich SetBitMode nennt.

von Cornflake (Gast)


Lesenswert?

Hi
Danke für das Angebot :)

Ja die Wrapperklasse habe ich mir schon mal angeschaut. Auch die 
SetBitmode Methode habe ich gefunden. Auch das man da irgendwie mit 1 
Pins als Ausgänge und 0 Pin-Eingänge setzt.

Aber mir fehlt das Verständnis wie ich dann da diese Pin setze bzw. 
auslese, vor allem ohne jetzt durch einen falschen Befehl mir den Chip 
zu schrotten.

Zudem ist mir nicht klar wie das mit synchron und asynchon und diesem 
CBUS zu verstehen ist. Ich habe mir ein Sparkfun FTDI Basic 5V 
Breakoutboard gekauft und leider erst jetzt mitbekommen, dass es die 
billigere Version ist mit nur (DTR,RX1,TX0,5V,CTS,GND). Da fehlen nochn 
paar Pins, die auf der teueren Version vorhanden gewesen wären. Der Chip 
ist ein FT232RL.

Mir würde es schon helfen son einfachen Dreizeiler in C# zu haben, der 
den Bitbang Modus aktiviert und dann zwei Pins als Ausgänge(LED) 
schaltet und zwei als Eingänge(Taster) und ich dann per Code über die 
Taster die 2 Led ein und ausschalten kann.

Von da aus könnte ich dann weiter experimentieren und Erfahrungen 
sammeln. Mit fehlt halt dieser grundlegende Einstieg.

Danke
Grüße Cornflake

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.