Hallo. Ich habe in C/C++ geschriebene Routinen zur Ansteurung von speziellen USB-Geraeten. Diese API's zum oeffnen,lesen,schreiben... des Gerates, moechte ich nun anderen in Form einer Schnittstelle zur Verfuegung stellen. Jetzt stell ich mir nun die Frage, welche Moeglichkeiten es gibt und welche davon sozusagen Stand der Dinge sind. Aber das wichtigste ist wie benutzerfreundlich diese Schnittstelle ist. Daher meine Frage wer mir hier vielleicht einen Rat oder Hinweise geben kann oder entsprechende Erfahrungsberichte. Im Vorfeld hab ich mir Gedanken ueber eine Schnittstelle via Dlls gemacht.Ist aber eher nicht wirklich Stand der Dinge bzw. der Benutzer der Api muss sich mit Aufrufkonventionen der Dll-Funktionen vertraut machen-also viel zu umstaendlich. Oder die ActiveX COM Schnittsstelle, ist aber auch schon Asbach, oder? Also meine Frage an euch was es so alles gibt, insbesondere im professionellen Umfeld. Achso: Umgebung ist Windows 32/64bit. Danke Stefan
Das hängt davon ab, welche Programmiersprache die Anwender der Schnittstellen am ehesten benutzen sollen. Eine DLL- bzw. statische Library-Lösung kommt C- bzw. C++-Programmierern am besten entgegen, COM/ActiveX/Ole ist für Nutzer von VB oder auch dem .Net-Geraffel brauchbar zu handhaben.
Das ist ja gerad die Crux. Welche Sw der Benutzer der Api verwendet ist vorne weg nicht bekannt.
Und in welcher Form liegen Deine Funktionen vor? Bedürfen die ein ständig laufendes Programm, oder sind das Dinge, die auch in einer einfachen statischen Library verpackt werden könnten? Müssen Komponenten zwangsweise mit regsrv32 o.ä. im System angemeldet werden, oder kann der Code "einfach so" genutzt werden? Auch wenn COM/ActiveX & Co. für Nutzer von VB & Co einfach zu nutzen sind, sind diese Schnittstellen aus Sicht von C/C++-Programmierern ein mittlerer Krampf im Arsch, vor allem beim Debuggen.
Je nach Datenrate würde sich evt ein TCP Socket anbieten, bei welchem nur Verbindungen von localhost angenommen würden. Allerdings brauchst du dann vermutlich noch zusaetzliche Logik um zu verhindern, dass jegliche Prozesse auf die API Zugriff kriegen.
Muss nicht als Service oder so angemeldet werden. Das Problem bisher, war das Benutzer sich mit der Dll auseinander setzen mussten und entsprechende Aufrufkonventionen beachten mussten. Insbesonder C# Anwender, die die API's ziemlich umstaendlich implementiert haben(aus dem C Code).
Stefan schrieb: > Benutzer sich mit der Dll auseinander setzen mussten und entsprechende > Aufrufkonventionen beachten mussten. Insbesonder C# Anwender, die die > API's ziemlich umstaendlich implementiert haben(aus dem C Code). dann liefert man einfach für C# eine Implementierung mit aus. Dann kann der Anwender es einfach nutzen. Also Dll + C# Assembly, für leute die C/C++ nutzen reicht dann die Dll.
Nik D. schrieb: > Je nach Datenrate würde sich evt ein TCP Socket anbieten Das aber setzt einen eigenständigen aktiven Prozess voraus, der diesen Socket anbietet und die empfangenen Daten auswertet.
Stefan schrieb: > Also meine Frage an euch was es so alles gibt, insbesondere im > professionellen Umfeld. Zweckmässig: 1. eine DLL, dazu die "Interface"-Dateien für verschiedene Sprachen, .h für C, defines für basic, type für Pascal usw. was du halt alles unterstützen willst. 2. Parallel dazu die gleichen Funktionen als Object-Dateien zum direkten Dazulinken, wenn du es magst auch als Source. 3. eine brauchbare Beschreibung! Ich finde nicht, dass was gegen DLLs spricht, ganz Windows besteht aus nichts anderem. Das fällt einem bloss nicht mehr auf, weil windows.h (oder .bas oder .pas usw.) automatisch mit eingebunden wird. Georg
Georg schrieb: > Parallel dazu die gleichen Funktionen als Object-Dateien zum direkten > Dazulinken, bzw. eine statische Library, aber das ist ja im Prinzip das gleiche.
Oder als C-Modul schreiben und dann mit SWIG die Interfaces für diverse Sprachen automatisch generieren lassen. http://www.swig.org/
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.