Hardware direkt ansprechen mit QT

Alles rund um die Programmierung mit Qt
Antworten
rmeeh
Beiträge: 32
Registriert: 10. September 2006 18:59
Wohnort: Geislingen
Kontaktdaten:

Hardware direkt ansprechen mit QT

Beitrag von rmeeh »

Weiß jemand ob (wie) ich unter QT Hardwarebausteine direkt ansprechen kann? Konkret z.B. die Hardware Ports der Centronix Schnittstelle oder auch externe wie z.B. 8255 auf nem Experimentierboard. Ich möchte eine Digi I/O Platine bauen, mit 48 I/O Ports. Nur dazu sollte ich mit der Hardware kommunizieren können.
Für Visual Basic habe ich eine DLL bei Burkhart Kainka entdeckt, abber dees will i jo neeeet......
Gruß Ralf
Kein Tag kommt wieder, vergessene Fehler schon....
methusalem
Beiträge: 186
Registriert: 11. August 2005 08:21

Beitrag von methusalem »

Das wirst du alles selber machen müssen!

Ich bin dabei eine IO Hardware (www.codemercs.com) mit C++/QT anzusprechen. Glücklicherweise gibt es von denen aber Bibliotheken für Linux/Mac und Win, so das ich die nutzen kann ohne das selber schreiben zu müssen ...
Martin
rmeeh
Beiträge: 32
Registriert: 10. September 2006 18:59
Wohnort: Geislingen
Kontaktdaten:

Beitrag von rmeeh »

methusalem hat geschrieben:Das wirst du alles selber machen müssen!

Ich bin dabei eine IO Hardware (www.codemercs.com) mit C++/QT anzusprechen. Glücklicherweise gibt es von denen aber Bibliotheken für Linux/Mac und Win, so das ich die nutzen kann ohne das selber schreiben zu müssen ...
Au weh, urgl, ich dachte die Zeiten sind vorbei wo ich meinen Assembler nochmal anfassen muß, Ich glaub ich guck mir vorher die Kainka DLL nochmal an, die Routinen müßte ich ja von C++ aus auch ansprechen können, aber bei Linux guck ich ganz blöd aus der Wäsche, ich glaub da komm ich mit dem Assembler dem Kernel ziemlich nahe :-| ohoh....
Aber Danke mal vorerst
Gruß Ralf
Kein Tag kommt wieder, vergessene Fehler schon....
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

rmeeh hat geschrieben:Au weh, urgl, ich dachte die Zeiten sind vorbei wo ich meinen Assembler nochmal anfassen muß
Wieso meinst Du das jetzt in Assembler machen zu müssen? Gibt es irgendwas in Assembler, was mit C++ nicht realisierbar ist? Für Assembler gibt es IMHO nur einen Grund, Geschwindigkeit. Aber meine Assemblerzeiten waren vor 20 Jahren, als die Rechner noch langsam waren und man mit halben Bytes gerechnet hat :-) Seit dem hat sich ja einiges getan.
methusalem
Beiträge: 186
Registriert: 11. August 2005 08:21

Beitrag von methusalem »

Ich denke auch, das du bei C++ bleiben kannst. Ich bin zwar nicht so der Experte. Aber es gibt ja nun sicher genug - auch OpenSource - Projekte, die irgendwelche Hardware-Schnittstellen nutzen. Da muss man einfach ein wenig suchen ...

Was DLLs angeht, bin ich mir noch unsicherer. Aber wenn es zu deiner Hardware eine DLL gibt, fehlt dir für das C++ Glück doch eigentlich "nur noch" eine Header Datei, die du in deinen C++ Sourcen includierst. Vielleicht schreibst du mal den Autor der DLL an und fragst Ihn danach ...
Martin
rmeeh
Beiträge: 32
Registriert: 10. September 2006 18:59
Wohnort: Geislingen
Kontaktdaten:

Beitrag von rmeeh »

Hallo und danke fürs erste für Eure Tips,
die DLL´s tun so leidlich, ich hab das mit den Headern hingekriegt. Aber ich konnts nicht lassen und habe mir einen 2.6er Linux Kernel besorgt und unter verwendung selbigens einen Device Treiber geschrieben. PS: Warum Assembler? Das liegt an meiner Unfähigkeit sowas sauber in C++ zu realisieren, vielleicht auch aus Gewohnheit oder falscher Scheu, bestimmt geht das mit C++ genau so, nur ich weiss nicht genau wie anfangen, hab ich noch nie gemacht. Jedenfalls läufts mit Device Driver schön sauber. Aber das ist nicht was ich wollte, da ich ja die Routinen als Quellen mit weitergeben wollte. Kennt ihr vielleicht Literatur damit ich das mit C++ und QT doch noch hinbringe?
-Grüße Ralf-
Kein Tag kommt wieder, vergessene Fehler schon....
isifloh
Beiträge: 37
Registriert: 31. August 2006 09:40

Beitrag von isifloh »

hi

unter windows mussst wohl den weg mittels dll gehen da nur ein device driver auf die harware zugreifen kann. source dafür kannst ja mit hergeben.

unter linux kannst du sehrwohl direkt aus c++ auf die harware zugreifen
du must zuerst mittels ioperm dir die erlaubnis zum zugriff auf den port holen
danach kannst du mittels outb und inb darauf zugreifen.

siehe folgende header files.
unistd.h,asm/io.h

dann kann man auch direkt aus c++ klassen heraus auf die hardware zugreifen (unter linux).

mfg
rmeeh
Beiträge: 32
Registriert: 10. September 2006 18:59
Wohnort: Geislingen
Kontaktdaten:

Beitrag von rmeeh »

:D isifloh, danke Du bist ein "Goldschatz",
da hätte ich noch ne weile gepopelt, aber so ist das echt genial.
Jetzt kann ich das in Klassen kapseln. Die Hard und Software ist eigentlich für eine Schule. Ich mach dort regelmäßig was fürs Fehrienprogramm und hab mir eine Hardware zurechtgestrickt mit der ich einige 8Bit Ports an der Druckerschnittstelle bereitstelle. Bidirektional, d.h. ich hab ein paar Latches und Bustransceiver verstrickt. Da aber der Standard Druckerport nur einige Bits lesen kann, muß ich das in mehreren Schritten tun und da mir das sonst keiner checkt, solls gekapselt sein. Aber die Quellen sollen halt auch den Lehrern verfügbar sein für spätere Projekte.
Viele Grüße und vielen Dank,
-Ralf-
Kein Tag kommt wieder, vergessene Fehler schon....
Antworten