Hallo
Ich hab es nun endlich geschafft wieder eine Baustelle anzufangen, von
der ich im Grunde genommen nicht viel Ahnung habe, die mir schlaflose
Nächte bereitet und vor allem tausende neue Folgeprojekte mit sich
bringt mit ähnlichen Eigenschaften.
Dabei ist mein Ziel, mir so viele Custom Panels für meinen geliebten
Flugsimulator X-Plane zu bauen wie es mit meine Möglichkeiten zulassen
(wie ich vor allem bei professionellen Herstellern sehen kann sind die
Möglichkeiten nahezu unbegrenzt.)
Nachdem ich einige Knöpfe an einer modifizierten Tastatur festgelötet
hatte, habe ich meine Ersten „Hardwarebau“-Erfahrungen mit dem
LPT-Switch gemacht. (mehr Infos über dieses Projekt gibt’s hier
http://www.x-plane.de/forums/index.php?showtopic=1245&hl=lpt-switch)
Danach bin ich auf ein etwas komplexeres Projekt eines X-Plan-Kollegen
gestossen, welches ich dank seiner Grosszügigkeit nun mein eigen nennen
kann. Es arbeitet mit einem ATMEL Chip, einer USB Schnittstelle und hat
ein LCD Display (mehr Infos zu diesem Projekt gibt’s hier
http://www.x-plane.de/forums/index.php?showtopic=106&hl=radio+hardware)
Diese Architektur war dann auch der Grund warum ich in diesem Forum
gelandet bin. Ich habe mich ein bisschen in das Tutorial eingelesen und
mir in einem Kaufrausch auch gleich das STK500 von ATMEL zugelegt
(Welches bis jetzt noch unberührt in der Verpackung liegt). Des Weiteren
bin ich auf das K8085 USB Experimentier Interface gestossen (Bausatz)
welches ich für eine gute Übung um Löterfahrung zu sammeln hielt. Dies
habe ich dann auch nach 6 Stunden Arbeit und ohne grosse Zwischenfälle
zum Laufen gekriegt (wie mir die Demo Software deutlich beweist).
Meine Grundlagen:
Programmieren ist für mich kein Neuland (Ich arbeite mit PHP und JAVA)
privat habe ich wenige Erfahrungen mit c++ gesammelt (dies vor allem im
Bezug auf den Plugin-SDK von X-Plane) welche ich auch gerne noch weiter
ausbauen würde. Des Weiteren bin ich auf Assembler gestossen (was mich
vor allem im weiteren Verlauf beim Tutorial erwartet).
Dieser Beitrag wurde auf MAC OS-X geschrieben was ich auch als meine
Hauptplattform bezeichnen kann, obwohl ich nebenbei noch eine Windows
Mühle als Ausweich-Variante stehen habe. Ich verfüge über X-Code, wo ich
auch schon meine ersten C++ Programme mit erfolg kompiliert habe.
Um auch gleich mit meinem ersten Beitrag auf meine erste Frage zu
kommen. Gerne würde ich noch etwas mit dem K8055 herumspielen, bin aber
dabei bereits auf die ersten Hürden gestossen. Ich habe mit folgendem
kleinen Tutorial begonnen um zu sehen, ob ich die Karte überhaupt
ansprechen kann. http://www.roboternetz.de/phpBB2/viewtopic.php?t=8429
leider habe ich die in diesem Tutorial beschriebenen .lib Datei nicht
gefunden. Ich habe dann mit dem Header und der Lib Datei von der
Velleman Seite probiert den Code in X-Code zu kompilieren. Leider ohne
erfolg. Beim suchen bin ich dann auf folgendes Projekt gestossen,
welches die Lösung für mein Problem sein könnte.
http://sourceforge.net/projects/k8055mac/ Ich habe dann wieder versucht
den vorher geschilderten C++ Codes mit dem Mac-Header zu kompilieren.
Leider wieder ohne erfolg. Die Dateien im Macprojekt so zu analysieren
dass ich auf die Lösung komme kann ich nicht, da mir das Projekt noch zu
komplex ist. Wenn aber Jemand eine Lösung wüsste wie ich den kleinen
Code von www.roboternetz.de (oder einen Ähnlichen) unter dem Mac
kompilieren kann währe ich sehr dankbar.
Und seit bitte nicht überrascht oder genervt, wenn dies nicht meine
erste Anfängerfrage bleibt.
Mit besten Grüssen
Sascha
Ich habe in zwischen noch folgenden Link gefunden:
http://soft.pmad.net/k8055/
Ich habe alles nötige instaliert un kann die karte nun auch über
Commandline (Terminal) ansprechen. In einem C++ Commandline Tool
Allerdings immer noch nicht :-(
mfg
sascha
ich habe den code nun mal sowei, dasser sich kompillieren lässt. Er
sieht nun folgendermassen aus:
#include <k8055.h> //muss sich im Projektverzeichniss befinden
#pragma comment (lib, "K8055D_C.lib") //muss sich im Projektverzeichniss
befinden
#include <iostream> //wichtige include für standard ein- und ausgabe in
der Konsole
using namespace std; //muss sein macht die sache einfacher von cout
u.s.w.
int main ()
{
k8055 *dev = new k8055;
dev->OpenDevice(0); // Karte mit der Adresse 0 öffnen
long a;
// die Schleife wird solange bearbeitet wie der Anlogwert größer 1
do{
a=dev->ReadAnalogChannel(1); // Lese analogwert von Eingang 1
cout << a << endl; // gebe Wert in der Konsole aus
dev->WriteAllDigital(a); // gebe Wert am Digitalausgang aus
}while (a > 1); // solange wiederholen wie anawert größer 1
dev->ClearAllDigital(); //alle Ausgänge auf 0
dev->CloseDevice(); // Karte schließen
cout<<"das ist mein text"<<endl;
return 0;
}
Alllerdings gib mir das programm folgenden fehler aus wenn ich es laufen
lasse:
ZeroLink: unknown symbol '___CFConstantStringClassReference'
CPTEST has exited due to signal 6 (SIGABRT).
Ich habe in der Readme von der besagten Mac Version folgendes gefunden:
- k8055.cpp
- C++ static library that should replicate most functions listed in
the Windows .DLL companion guide for the Velleman K8055 USB
Experimenter.
Kann das etwas damit zutun haben? wie muss ich die .cc datei in mein
projekt integrieren?
mfg
sascha
Zu ___CFConstantStringClassReference spuckt Google 656 Treffer aus, die
auf den ersten Blick alle Mac OS relevant sind.
Weil Mac OS X Anwendungsprogrammierer hier selten sind, würde ich an
deiner Stelle zusätzlich ein weiteres Forum aufsuchen. Dieses z.B.
http://www.osxentwicklerforum.de/board.php?boardid=17&sid=42
Wenn du das auch machst, halte den Sourcecode bereit bzw. schreibe
genauer, was du machst. Ich kann im Moment nicht nachvollziehen, woher
du k8055.cpp, k8055.h und K8055D_C.lib hast. Die Downloads von
http://soft.pmad.net/k8055/ und
http://sourceforge.net/projects/k8055mac/ habe ich mir angesehen - habe
ich dort was übersehen?
Vielen Dank Stephan
Die Idee mit dem osxentwicklerforum ist mir auch schon gekommen. Ich
wollte aber noch ein wenig warten und sehen was sich hier ergibt (damit
ich meinen Tread dort vielleicht etwas aktueller gestalten kann).
Folgendes zur Vervollständigung:
Ich habe auf sourceforge 2 ähnliche osx projekte gefunden
1 http://sourceforge.net/projects/k8055mac/
2 http://sourceforge.net/projects/k8055usbosx
beide Varianten funktionieren gut bei mir. bei der letzteren brauche ich
noch k8055.kext , welches ich auf der folgenden Seite gefunden habe:
http://soft.pmad.net/k8055/
Dort gibt es ebenfalls noch ein Comandline Tool das ebenfalls
funktioniert und ein x-code Projekt enthält.
Allerdings funktioniert Projetk nr.1 nicht mehr sobald ich die
k8055.kext installiert habe.
Die Dateien k8055.cpp und k8055.h habe ich momentan aus dem Projekt nr 2
genommen, da ich immer noch die k8055.kext installiert habe. die
K8055D_C.lib habe ich von der Velleman Seite allerdings weiss ich nicht
ob ich diese überhaupt brauche bzw. ob sich diese irgendwie durch meine
k8055.cpp ersetzen lässt.
mfg
sascha
Die K8055D_C.lib wird dann eine Library für Visual C++ unter Windows
sein, damit der Linker dort weiss, welche Funktionen in der ähnlich
genannten DLL drin sind. Unter Nicht-Windows wirst du damit nichts
anfangen können.
Projekt Nr.2 habe ich bisher noch nicht gesehen. Das schaue ich mir
vielleicht heute abend an. Es regnet ja.
Jedenfalls laut "k8055.cpp - C++ static library that should ..." spricht
ja stark dafür, dass alles bei Nr. 2 dabei ist, um eine ähnliche
Funktion wie unter Windows mit dem Duo LIB/DLL zu erreichen.
O.K. Vielen dank für euere Hilfe und das geduldige lesen Nach etwas
Hilfe im osxentwicklerforum habe ich es geschaft. nach einbinden des
Foundation.framewor funktioniert die Software! (die leds Leuchten nur so
vor sich hin). Allerdings muss ich noch etwas mehr über meine Hardware
lesen und lernen. Ich verstehe im Grunde was die Software macht. sie
liest den Wert des Analog Kanals 1 ein und übergibt ihn an alle
Digitalkanäle. Allerdings verstehe ich nicht wie diese funktionieren.
Ich weiss, dass ich einzelne Kanäle ein oder ausschalten kann. Ich weiss
auch dass bei den Analogen Kanälen ein Wert (mittels Spannung?!)
angegeben wird. Aber was passiert genau wenn ich allen digitalen Kanälen
einen Wert zuweise? Wenn ich beim Potentiometer vom analog Kanal 1 die
Spannung verändere, dann verändert sich auch der Wert a (in meinem
Programm) und verschiedene Digitale Outputs gehen an bzw. aus. aber nach
welchem Schema?
Ich muss wohl noch einiges über die Digitalen In/Outputs lehrnen, bevor
ich wirklich loslegen kann.
mfg
Sascha
http://www.velleman.be/be/en/product/view/?id=351346
The K8055 interface board has 5 digital input channels and 8 digital
output channels. In addition, there are two analogue inputs and two
analogue outputs with 8 bit resolution. The number of inputs/outputs can
be further expanded by connecting more (up to a maximum of four) cards
to the PC's USB connectors...
Specifications:
* 5 digital inputs (0= ground, 1= open) (on board test buttons provided)
* 2 analogue inputs with attenuation and amplification option (internal
test +5V provided)
* 8 digital open collector output switches (max. 50V/100mA) (on board
LED indication)
* 2 analogue outputs:
** 0 to 5V, output resistance 1K5
** PWM 0 to 100% open collector outputs max 100mA / 40V (on board LED
indication)
* general conversion time: 20ms per command
* power supply through USB: approx. 70mA
Du hättest also
2 Eingaben per Analog als "Achse" z.B. mit Schiebe- oder
Drehpotentiometer
5 Eingaben per Digital als "Schalter" z.B. Kippschalter oder Taster
8 Ausgaben per Digital z.B. für
8 LEDs oder
2 Siebensegement-LEDs direkt oder
16 BCD encodierte Siebensegment-LEDs. Erfordert aber Hardwarebasteln
(BCD-Decoder, Demultiplexer, Flipflops). Ich würde den Weg so nicht
gehen. Die IMHO preiswertere Alternative wäre hier ein µC-Gerät z.B. auf
AVR-Basis.
1 Ausgabe per Analog z.B. Galvanometer oder LCD-Voltmeter
1 Ausgabe per PWM z.B. kleiner Motor
Hallo Stefan
Vielen dank für deine Antwort und die Kopie vom Datenblatt (das ich
natürlich schon gelesen habe). Die eingänge verstehe ich auch soweit und
hab schon den einen oder anderen Schalter und Taster mit X-Plane
erfolgreich gekoppelt. Der Counter ist adbei wohl eher für die Taster
wichtig (gerade Zahl = aus / ungerade zahl =ein) oder so ähnlich.
Das ich pro Ausgang ein Led ansteuern kann ist mir ebenfalls klar (die
sind ja eigentlich schon aufgelötet). Aber ich habe mir gedacht, da muss
doch noch mehr zu holen sein, denn so eine grosse Karte für 2
7-Segment-Anzeigen währe wahrscheinlich nicht sinvoll. Deshalb gefällt
mir deine "16 BCD encodierte Siebensegment-LEDs" Variante schon ziemlich
gut. Vom Hardwarebau schrecke ich nicht zurück, obwohl ich nicht viel
Ahnung davon habe. Wenn mir noch jemand einige Details zu dieser
Variante erzählen könnte, währe ich sehr dankbar.
mfg
sascha
> "16 BCD encodierte Siebensegment-LEDs" Variante
Uh, da habe ich nicht viel Hirnschmalz reingesteckt. Es war nur so eine
Idee:
0-9 kann man als BCD-Zahlen mit 4 Bit darstellen. Das frisst 4 digitale
Ausgaben von den 8 möglichen.
Mit den restlichen 4 digitalen Ausgaben hat man 2^4 = 16 Möglichkeiten,
die man zur Adressierung von 16 Siebensegment-Elementen benutzen könnte.
Die Ansteuerung würde also auf 4 O-Ports die BCD Zahl geben, die der
BCD-Decoder in die Ansteuerung eines Siebensegment-Elements umsetzt.
Welches Siebensegment-Element würde auf den anderen 4 O-Ports definiert.
Dort würde ein 4-nach-16 Multiplexer die Umsetzung machen.
Der Haken dabei ist, dass beim Umschalten auf ein anderes
Siebensegment-Element dessen Anzeige erlischt, weil seine BCD Daten
nicht mehr anliegen. Also müsste man zusätzlich den BCD Wert für jedes
Element zwischenspeichern.
Jetzt ist man schon bei BCD-Decoder + Multiplexer + Speicher... da
dachte ich, dass die Idee bereits zu aufwändig ist. Mit einem µC kann
man einiges davon nämlich in Software nachbauen.
Und wenn man schon den µC benutzt, kann der auch noch die Kommunikation
mit dem PC machen und die K8055 Karte wäre dafür nicht mehr nötig bzw.
frei für andere Sachen.
Du kennst vielleicht FSBUS http://www.fsbus.de/index.html dort wird ein
modulares µC (AVR) basiertes System benutzt. Bei
http://www.opencockpits.com/index.php?newlang=english baut man auf µC
vom PIC Typ.
Sehr schöne, interessante Ideen auch für selbstgebaute Instrumente gibt
es auch auf http://www.mikesflightdeck.com/ (leider habe ich noch keinen
Shop mit Mikes Buch in DE gefunden; bezahlen in USA ist mir zu
aufwändig).
Cool!
Vielen Dank Stefan. So in etwa habe ich mir das theoretisch vorgestellt.
(einige Ausgänge um das 7-Segment-Display anzusteuern(bzw. die ziffern
zu generieren) und einige um zu sagen welches der Displays angesteuert
wird). Das hilft mir schon mal für das Verstäntniss der Nutzung der
Ports (da ich ja im Grunde von Elektronik keine Ahnung habe, aber sehr
gerne etwas lernen würde).
Ich kenne sowohl FSBUS als auch Opencockpits. Letzeres etwas besser, das
es da auch bereits x-plane kompatible Software dafür gibt (leider nur
für Windows). Ich habe allerdings gedacht dass mir opencockpits für den
Anfang etwas zu gross ist und das ich für das Verstäntniss lieber mit
einer etwas weniger komplexeren Schaltung beginne. Des Weiteren gefällt
mir an der k8055 dass ich sie mittels c++ und dem MAC ansprechen kann.
(was auch einiges an zeit und Tipparbeit in diversen Foren gekostet
hat:D).
Wenn Ihr aber meint dass diese Karte nicht das Richtige ist um meine
7-Segment-Displays anzusteuern, dann werde ich mir erst mal ein anderes
Projekt ausdenken (mir schwirren da zahlreiche Ideen im Kopf herum).
Da ich mit Inputs auch früher schon erste einfache Ergebnisse erzielen
konnte (modifizierte Tastatur und der LPT-Switch) interessieren mich vor
allem die Ausgänge. Ich finde es halt nur etwas fade, dort dann nur
einige LED anzuschliessen.
Mit freundlichen Grüßen
sascha
Eine eigene Frage?
Dieser Thread ist über 19 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.