Moin zusammen, ich bin seit 10 Minuten in eurem Forum angemeldet. Sehr ergiebig und informativ! Und dann komme ich auch schon mit meinem Problem: Ich wollte endlich mal verstehen, wie diese ganze Geschichte USB <--> Seriell wirklich funktioniert. Habe mir also mutig das Franzis Lernpaket "Experimente mit USB" bestellt. Klappt ja soweit auch alles ganz gut, die Beispielprogramme tun, was sie sollen (na ja, jedenfalls alle die, die LEDs blinken lassen). Nun würde ich natürlich gern mit diesen Programmen auch "spielen", um dabei was zu lernen (mal 'n Parameter ändern, 'ne weitete LED hinzunehmen usw.) Aber: Die Programme sind in VB geschrieben. Problem: VB hab ich nicht! Dass man das braucht, wird von Franzis schlicht verschwiegen, ja, es findet sich nicht einmal ein winziger Hinweis darauf, welche Version man braucht (bzw. ab welcher Version ...). - Ok, vielleicht bin ich des Lesens nicht mächtig und hab einen solchen Hinweis nur nicht gefunden? Immerhin findet sich im Haudbuch (auf CD) in einem bedeutungsschwangeren Nebensatz der Hinweis, dass all die Programme auch "leicht nach z.B. Pascal übertragbar" seien. Puh, na immerhin was ... (Pascal ist für mich so was wie 'ne Muttersprache.) Aber ok. Nur leicht übertragbar? Ich mach's kurz: Hat irgendjemand von euch ein - und sei es auch nur winzig kleines - Musterprogramm in Pascal? Eine blinkende LED oder irgendsowas, woraus die Grundstruktur eines passenden Programms ersichtlich wird? Mein ewiger Dank steht schon in den Startlöchern und wartet nur noch auf einem Empfänger ... Moin moin, Manfred
:
Verschoben durch User
Manfred M. schrieb: > Aber: Die Programme sind in VB > geschrieben. Problem: VB hab ich nicht! Dass man das braucht, wird von > Franzis schlicht verschwiegen, ja, es findet sich nicht einmal ein > winziger Hinweis darauf, welche Version man braucht (bzw. ab welcher > Version ...) [...] > Immerhin findet sich im Haudbuch (auf CD) in einem bedeutungsschwangeren > Nebensatz der Hinweis, dass all die Programme auch "leicht nach z.B. > Pascal übertragbar" seien. Wenn das so ist, dürfte die genaue VB-Version keine grosse Rolle spielen. Sprich: es wird sicher deutlich einfacher sein, ggf. auf eine andere Version von VB zu portieren als nach Pascal. Im übrigen: in den Projektdateien (heissen *.vbproj, sind im Kern menschenlesbare XML-Dateien) steht die VB-Version quasi im Klartext drin, genauso wie die Version des benutzten .Net-Framework, letztere ist direkt ablesbar, erstere muss allerdings mit Hilfe von Google noch in die offizielle Produktbezeichnung "umgerechnet" werden.
c-hater schrieb: > Im übrigen: in den Projektdateien (heissen *.vbproj, sind im Kern > menschenlesbare XML-Dateien) steht die VB-Version quasi im Klartext > drin, genauso wie die Version des benutzten .Net-Framework, letztere ist Das wird wohl am ehesten VB6 sein bei so einer alten Gurke. Ist aber ganz leicht festzustellen - da gab es .vbp als Projektdatei. Wenn der TO eine Blink-LED.bas anhängt, besteht die Möglichkeit, dass eine gute Seele diese zu Blink-LED.pas übersetzt...
Naja, das Ganze soll auf einem Controller laufen und nicht nicht auf dem PC, der LED Teil zumindest. Auf dem PC ist Delphi als Pascal Nachfolger eine gute Wahl. Mit einer Serial Port Library ist man dabei. Die Schwierigkeit ist eher diese zu installieren, wie die Commands rueber zu senden. Dafuer gibt's dann ein paar Beispiele im Help der Library.
Erste Schwierigkeit dürfte wohl sein: Du musst auf dem PC das Mikrocontroller-Programm kompilieren und über die USB-Schnittstelle auf dem Mikrocontroller übertragen. Dafür gibt es keinen Standard. Das macht jeder Hersteller unterschiedlich. Aus dem VB-Programm rekonstruieren, wie Franzis das macht? Als Einsteigerübung viel zu umfangreich. Mein Tipp - verbuche das Ding als Fehlkauf. Kaufe einen Arduino mit USB-CDC. Dann brauchst du dich nicht um die PC-Seite kümmern. Einfach IDE installieren und Mikrocontroller-Programme aus den unzähligen Tutorials umbauen. Ausserdem findest du hier unzählige Leute, die dir bei Detailfragen weiterhelfen können.
Soweit ich mich erinnere kann man eine einfache Version von VB herunterladen. Also nimm mal diese. VB ist einfach zum Erlernen.
Das wäre dann VB.net, und das ist Bestandteil des kostenlosen Visual Studio "Community Edition": https://www.visualstudio.com/de/vs/community/
Marc V. schrieb: > Das wird wohl am ehesten VB6 sein bei so einer alten Gurke. Scheint so. Bei Amazon kann man den überteuerten Dreck tatsächlich noch kaufen und eine der Kundenbewertungen, die ansonsten durchaus kompetent klang, sagte explizit aus, dass es sich um VB6-Gammel handelt. Wird also wohl wirklich so sein... > Ist aber > ganz leicht festzustellen - da gab es .vbp als Projektdatei. Genau. Und es gibt (zumindest theoretisch) sogar einen "Upgrade-Pfad" zu VB.net in einer neuzeitlichen Version. Notfalls muss man halt etliche Male VisualStudio Express VB in den unterschiedlichen Versionen der Reihe nach runterladen. Und jedesmal alle Projekte dieses Francis-Werkes importieren und konvertieren lassen. Dabei können schonmal ein paar Tage in's Land gehen, der VS-Installer war nie dafür berühmt, sorgsam mit der Zeit der Entwickler umzugehen... Und inwiefern das überhaupt problemlos ablaufen würde, entzieht sich meiner Kenntnis, da ich nie die Quelltexte dieses Francis-Werkes gesehen habe. Vermutlich wird das Teil im Wesentlichen auf der Verwendung von mscomm.ocx basieren. Keine Ahnung, inwiefern der Konverter von VS2005 das selbstständig auf System.IO.Ports.SerialPort abbilden kann. Der erste Schritt von VB6 auf VS2005 dürfte also der eigentliche Knackpunkt sein, danach würde es vermutlich einigermassen entspannt weitergehen.
Mach einen grossen Bogen um das unsägliche VB Gefrickel. Besorge Dir für Pascal/Delphi eine serielle Komponente und gut ist. Die gibt es als Freeware oder auch gegen Kohle. Achte darauf, dass die Komponente einen zusätzlichen DataProcessor/Command-Interpreter besitzt. Das erleichtert den Empfang von Daten. Installieren und nach 10 Minuten läuft alles.
Albert M. schrieb: > Mach einen grossen Bogen um das unsägliche VB Gefrickel. Du hast keine Ahnung. In der .net-Inkarnation ist VB eine vollwertige objektorientierte Programmiersprache und im Gegensatz zu Delphi eine mit Zukunft. Da ich selber mehr als ein Jahrzehnt lang Delphi programmiert habe, und mit Programmieren meine Brötchen verdiene, kann ich das einschätzen. > Besorge Dir für Pascal/Delphi eine serielle Komponente und gut ist. Bei VB ist die schon immer im Lieferumfang. Bei VB6 halt als ActiveX-Komponente mscomm.ocx, bei VB.net in Form von System.IO.Ports.SerialPort.
c-hater schrieb: > Du hast keine Ahnung. Da solltest Du mal besser die Füsse still halten. c-hater schrieb: > ActiveX-Komponente mscomm.ocx, bei VB.net in Form von > System.IO.Ports.SerialPort. Genau die net Abhängigkeiten sind das Unsägliche. Wenn Du das toll findest, bitte.
Albert M. schrieb: > Genau die net Abhängigkeiten sind das Unsägliche. Inwiefern? Die machen im Falle des SerialPort genau das, was auch alle einschlägigen Delphi-Komponenten machen. Nämlich das prozedurale Win32-Comm-API zu einer OO-Kompenente aufzubereiten. Also ich sehe hier hier irgendwie keinerlei substanziellen Unterschied. Ausser, dass man bei VB.net halt nicht gezwungen ist, erst noch nach einer passenden Komponente zu suchen. Die ist einfach da. Naja, immerhin eine Zeile "imports ..." kostet es natürlich...
Haaaaallloo, Leude, erst mal vielen Dank für die vielen Antworten! Aber bitte, lasst jetzt den Glaubenskrieg nicht eskalieren, das war wirklich nicht mein Anliegen. Mir ging's wirklich n u r um die Frage: Hat schon mal jemand ein VB-Programm (zur Einbindung einer Ansteuerung des FTDI232R) in Pascal übersetzt, und zwar erfolgreich? Und wenn sich solch jemand fände, wäre ich für ein kleines "Musterle" dankbar. Der Tip "Betrachte es einfach als Fehlkauf" ist leider nicht so konstruktiv (die Versuchung war mir auch schon gekommen, aber da bin ich auch trotzig.) Der Tip "Kauf dir'n Arduino, da kannste viel einfacher viel mehr mit machen" kommt zu spät - ich hab mittlerweile fünf davon. Nein, mein Anliegen war wirklich einfach - siehe oben. Nur: im Zusammenhang mit Arduino hat mich dieses FTDI-Ding schon mächtig geärgert, und da hab ich mir gesagt, jetzt lern ich dich genauer kennen und dann rück ich dir auf den Pelz. Mittlerweile bin ich da aber - glaube ich - auf einem ganz guten Weg: Ich weiss jetzt, wie ich die FTD2XX.dll in FreePascal/Lazarus einbinde, und ich kann seit heute auch das Device öffnen/schließen und z.B. die DTR-Leitung auf HI oder LO legen. Klingt noch nicht gewaltig, aber der Weg scheint richtig, und ich bin wohl von VB damit abgenabelt! Also, danke noch mal an alle! Manfred
Manfred M. schrieb: > Ich weiss jetzt, wie ich die FTD2XX.dll in FreePascal/Lazarus einbinde, FPC kommt seit 3.x auch für Windows in der Standardbibliothek schon mit ner eigenen Serial Unit daher, das ist ein relativ dünner Wrapper um die Betriebssystem-API mit Funktionen wie SerOpen() SerSetParams() SerRead() SerWrite() die funktionieren mit allen seriellen Schnittstellen, nicht nur mit FTDI: https://github.com/graemeg/freepascal/blob/master/packages/rtl-extra/src/win/serial.pp
Manfred M. schrieb: > Ich weiss jetzt, wie ich die FTD2XX.dll in FreePascal/Lazarus einbinde, > und ich kann seit heute auch das Device öffnen/schließen und z.B. die > DTR-Leitung auf HI oder LO legen. Um die Handshake-Leitungen auf irgendwelche Pegel zu legen, braucht man keine FTD2xx.dll, da das die stinknormale API für serielle Schnittstellen abbildet. Der Vorteil davon, diese API zu nutzen, ist der, daß das mit jeder USB-UART und aber auch jeder "echten" seriellen Schnittstelle funktioniert. Dennoch: Beispiele, wie man diese DLL aus Delphi heraus nutzt, finden sich hier: http://www.ftdichip.com/Support/SoftwareExamples/CodeExamples/Delphi.htm Das sollte sich nach FreePascal/Lazarus portieren lassen.
Rufus Τ. F. schrieb: > Um die Handshake-Leitungen auf irgendwelche Pegel zu legen, braucht man > keine FTD2xx.dll, da das die stinknormale API für serielle > Schnittstellen abbildet. Der Vorteil davon, diese API zu nutzen, ist > der, daß das mit jeder USB-UART und aber auch jeder "echten" > seriellen Schnittstelle funktioniert. So ist es. Die FTDI-DLLs benötigt man nur dann, wenn man die Funktionalität der FTDI-Chips nutzen möchte, die über die einer "normalen" UART hinausgeht, also z.B. die zusätzlichen IOs einiger FTDI-Chips. Wichtig: man darf Zugriffe über's normale COMM-API und über die FTDI-DLL nicht mischen. Wenn man sich also für die Verwendung der FTDI-DLLs entscheidet, muss man auch die normale UART-Funktionalität über die entsprechenden Funktionen der FTDI-DLL nutzen. Das ist aber ziemlich leicht umzusetzen, da sie alle Namen haben, die sehr stark denen der entsprechenden Funktionen des COMM-API ähneln.
Manfred M. schrieb: > Hat schon mal jemand > ein VB-Programm (zur Einbindung einer Ansteuerung des FTDI232R) in > Pascal übersetzt, und zwar erfolgreich? Und wenn sich solch jemand > fände, wäre ich für ein kleines "Musterle" dankbar. naja, ein VB-Programm nach Pascal.. Nun VB nach Delphi hatte ich vor gefühlten 20 Jahren getan. Aber das ist sicherlich gar nicht dein Anliegen. Die "Geschichte USB in Serial" ist eine ganz andere Kiste. Die besteht eigentlich NUR aus dem, was man in einen Mikrocontroller hineinpackt. Der Rest, also wie das Ganze vom PC aus zu benutzen ist, ist sehr einfach und sehr generell zu beantworten: Man benutzt zumeist die üblichen Standard-Schnittstellen des Betriebssystems. Also CreateFile auf einen COM-Port angewendet - mal grob gesagt. Sowas ist völlig unabhängig von der Programmiersprache, in der die Anwendung geschrieben ist. (Linuxer können hier ja mal die Linux-Version dazu posten). Hier mal das nackte Prinzip:
1 | if nPort>=10 |
2 | then sCom := '\\.\COM' + IntToStr(nPort) |
3 | else sCom := 'COM' + IntToStr(nPort); |
4 | hPort := CreateFile(PChar(sCom), |
5 | GENERIC_READ or GENERIC_WRITE, |
6 | 0, |
7 | nil, |
8 | OPEN_EXISTING, |
9 | FILE_ATTRIBUTE_NORMAL, |
10 | LongInt(0)); |
Das ist völlig hardwareunabhängig, es ist anwendbar auf echte und virtuelle COM-Ports. Eine Ausnahme machen die FTDI-Chips: Die kann man sowohl als COM-Port ansprechen, als auch über die "FTD2XX"-Version ansprechen. Die nötigen Quellen für eigentlich alles (Delphi, VB, C++ usw) finden sich bei Ftdichip. W.S.
Falls es noch interessiert. Delphi 10.1 Starter [1] derzeit kostenlos (früher 385€). Dazu die Komponente ComPort Library version: 4.11f [2] installiert, und man hat in 5 min ein Terminal mit Quellcode zum Testen der seriellen Schnittstelle. [1] https://www.embarcadero.com/de/products/delphi/starter/promotional-download [2] https://sourceforge.net/p/comport/discussion/261327/thread/f4cfe7af/
@Joe G. (feinmechaniker) Vielen Dank für die Info! Download läuft bereits ;)
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.