Forum: PC-Programmierung Schnittstelle bereitstellen-API


von Stefan (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

Das ist ja gerad die Crux. Welche Sw der Benutzer der Api verwendet ist 
vorne weg nicht bekannt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Nik D. (y2kicn)


Lesenswert?

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.

von Stefan (Gast)


Lesenswert?

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).

von Peter II (Gast)


Lesenswert?

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.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Georg (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.