Hallo, da bin ich wieder. Mittlerweile funktioniert der IOW24 wunderbar. Habe testweise mal LEDs und Display angeschlossen und mit Applescript programmiert. So weit läuft es sehr schön. Aber ich habe einige Fragen zum SDK:
1. Ist es möglich mehrere IOWs mittels Applescript anzusprechen? Ich kann leider in der Doku und hier im Forum nichts dazu finden.
2. Ich habe auch mit Xcode getestet und habe da Probleme:
2.1 Zum einen zeigt mir IOWarriorCountInterfaces an, dass zwei IOWs angeschlossen sind. Ist das normal? Heißt das, dass Interface 0 und 1 gezählt werden oder werden tatsächlich 2 IOWs erkannt?
2.2 IOWarriorWriteInterface1(0x04, data); funktioniert bei mir nicht! Liefert -1. Erst über IOWarriorWriteToInterface(myInterface, 8, data); wird das Display angeschaltet! Liegt das daran, dass 2 IOWs erkannt werden?
So das wärs fürs erste. Schon mal Danke für Eure Hilfe.
Frage zur Programmierung unter Mac OS X
Moderator: Guido Körber
Frage zur Programmierung unter Mac OS X
Gruß Robert
-
- Posts: 7
- Joined: Tue Dec 02, 2003 10:55 am
Re: Frage zur Programmierung unter Mac OS X
robertmk wrote:Hallo, da bin ich wieder. Mittlerweile funktioniert der IOW24 wunderbar. Habe testweise mal LEDs und Display angeschlossen und mit Applescript programmiert. So weit läuft es sehr schön.
Freut mich zu hören.
Nein, dies ist nicht möglich. Per AppleScript kann man nur den ersten IOWarrior ansprechen.robertmk wrote:Aber ich habe einige Fragen zum SDK:
1. Ist es möglich mehrere IOWs mittels Applescript anzusprechen? Ich kann leider in der Doku und hier im Forum nichts dazu finden.
Ja, das ist normal. Interface 0 ist für den Access der einzelnen Pins, Interface 1 für die speziellen Funktionen (LCD, etc.).robertmk wrote:2. Ich habe auch mit Xcode getestet und habe da Probleme:
2.1 Zum einen zeigt mir IOWarriorCountInterfaces an, dass zwei IOWs angeschlossen sind. Ist das normal? Heißt das, dass Interface 0 und 1 gezählt werden oder werden tatsächlich 2 IOWs erkannt?
IOWarriorWriteInterface1 ist eine Funktion aus der ersten Version der IOWarrior Library, die nur den IOWarrior40 unterstützt. IOWarriorWriteToInterface ist richtig.robertmk wrote:2.2 IOWarriorWriteInterface1(0x04, data); funktioniert bei mir nicht! Liefert -1. Erst über IOWarriorWriteToInterface(myInterface, 8, data); wird das Display angeschaltet! Liegt das daran, dass 2 IOWs erkannt werden?
Gern geschehen,robertmk wrote:So das wärs fürs erste. Schon mal Danke für Eure Hilfe.
Ilja
Re: Frage zur Programmierung unter Mac OS X
Hi Ilja,
Ich habe bis jetzt immer in Java und C programmiert. Nun bin seit einiger Zeit auch endlich mal an Objectiv-C dran. ABER ich habe da meine Probleme! Muss doch noch einiges lernen was objective-C und xcode angeht :(
Vielleicht kannst du mir dabei auch helfen: Es geht um CFStringRef! Ich will gerne die IOW SerialNumber auslesen und schauen, ob ich den richtigen IOW nutze. Dachte mir so (wie gewohnt) ich nehme eine Konstante und vergleiche die mit der ausgelesenen Nummer. Ha ich verstehe diese CFStringRef nicht. Was genau ist das? Wie kann ich den Inhalt ausgeben? Wie lege ich eine Const CFStringRef mit der Serial an? Wie vergleiche ich CFStringRef? Habe im Netz geguckt, meine Bücher gewälzt, aber nicht so das richtige gefunden...
Fragen über fragen. Java ist im Moment irgendwie einfacher, aber ich hoffe wenn ich mal besser drinnen bin, wirds sich das geben. Naja wenigstens habe ich schon mal ein kleines Programm, dass mir was auf das LCD schreibt und die LED schaltet :D
mhh schade. Habe ich mir schon fast gedacht. Aber ich will eh auf Xcode umsteigen.Ilja A. Iwas wrote:Nein, dies ist nicht möglich. Per AppleScript kann man nur den ersten IOWarrior ansprechen.
Ah ok. Das wußte ich vorher nicht. Danke für deine Antwort.Ilja A. Iwas wrote:IOWarriorWriteInterface1 ist eine Funktion aus der ersten Version der IOWarrior Library, die nur den IOWarrior40 unterstützt. IOWarriorWriteToInterface ist richtig.
Ich habe bis jetzt immer in Java und C programmiert. Nun bin seit einiger Zeit auch endlich mal an Objectiv-C dran. ABER ich habe da meine Probleme! Muss doch noch einiges lernen was objective-C und xcode angeht :(
Vielleicht kannst du mir dabei auch helfen: Es geht um CFStringRef! Ich will gerne die IOW SerialNumber auslesen und schauen, ob ich den richtigen IOW nutze. Dachte mir so (wie gewohnt) ich nehme eine Konstante und vergleiche die mit der ausgelesenen Nummer. Ha ich verstehe diese CFStringRef nicht. Was genau ist das? Wie kann ich den Inhalt ausgeben? Wie lege ich eine Const CFStringRef mit der Serial an? Wie vergleiche ich CFStringRef? Habe im Netz geguckt, meine Bücher gewälzt, aber nicht so das richtige gefunden...
Fragen über fragen. Java ist im Moment irgendwie einfacher, aber ich hoffe wenn ich mal besser drinnen bin, wirds sich das geben. Naja wenigstens habe ich schon mal ein kleines Programm, dass mir was auf das LCD schreibt und die LED schaltet :D
Gruß Robert
Warum nimmst Du dann nicht einfach Java? Ich habe das API der iowkit.dll auf die MacOS lib gewrapt, so gut wie ich es konnte (leider nur mit Einschränkungen). Damit kannst Du IOWJ teilweise nutzen. Led's blinken lassen und Ausgaben auf das LCD funktionieren jedenfalls. Suche mal im Forum danach ;-)Java ist im Moment irgendwie einfacher,...
Die Seriennummer habe ich wie folgt behandelt:
Code: Select all
/*
* Class: com_codemercs_iow_IowKit
* Method: getSerialNumber
* Signature: (J)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_codemercs_iow_IowKit_getSerialNumber
(JNIEnv *env, jclass cl, jlong handle)
{
//TODO check handle
char zbuf[9];
int index = handle * 2;
// printf("Serial: %s\n",CFStringGetCStringPtr(interfaces[i]->serialNumber,kCFStringEncodingMacRoman));
strcpy(zbuf,CFStringGetCStringPtr(interfaces[index]->serialNumber,kCFStringEncodingMacRoman));
return (*env)->NewStringUTF(env,zbuf);
}
Vielleicht ist die init() funktion noch hilfreich:
Code: Select all
#include <string.h>
#include <stdlib.h>
#include "IOWarriorLib.h"
#include "iowkitjni.h"
//Globals
IOWarriorListNode* interfaces[32];
int interfaceCount = 0;
int init() {
int i;
interfaceCount = IOWarriorCountInterfaces();
//*deb*/printf("IOW count = %d\n",interfaceCount);
for(i=0; i < interfaceCount; i++) {
interfaces[i] = IOWarriorInterfaceListNodeAtIndex(i);
/*deb
printf("Serial: %s\n",CFStringGetCStringPtr(interfaces[i]->serialNumber,kCFStringEncodingMacRoman));
printf("open ?: %d\n",interfaces[i]->interfaceOpen);
printf("Type : %d\n",interfaces[i]->interfaceType);
printf("ID : %x\n",idForIOWarriorInterfaceType(interfaces[i]->interfaceType));
*/
}
if (interfaceCount == 0)
return -1;
else
return interfaceCount/2;
}
de.wagner_ibw.iow.ListDevices liefert (Rev ist gefaket):
Code: Select all
------ Version of iowkit library is 'IO-Warrior Kit V1.4 G4' --------
Number of plugged device(s): 3
Device1: IOW24,Handle[0],Id[5377],Rev[1011],Serial[00000153]
Device2: IOW56,Handle[1],Id[5379],Rev[1011],Serial[0000011D]
Device3: IOW40,Handle[2],Id[5376],Rev[1011],Serial[00002632]
Hallo Thomas,towaibw wrote:Warum nimmst Du dann nicht einfach Java? Ich habe das API der iowkit.dll auf die MacOS lib gewrapt, so gut wie ich es konnte (leider nur mit Einschränkungen). Damit kannst Du IOWJ teilweise nutzen. Led's blinken lassen und Ausgaben auf das LCD funktionieren jedenfalls. Suche mal im Forum danach ;-)
danke für deine Antwort. Habe irgendwo im Forum gelesen, dass Java nciht unter Mac OS X läuft. mhh, war wohl ein älterer Post. Danke für den Hinweis. Ich suche mal durchs Forum.
Eigentlich wollte ich ja was mit Objective-C machen. Wo genau liegen den die Einschränkungen? Was geht den nicht mit Java? Und was ich gerne wissen würde: Wie ist den die Geschwindigkeit im Vergleich zu C?
Besten Dank
Gruß Robert
Einschränkungen
Siehe hier,letzter Beitrag.
Ich würde behaupten, dass Java nicht langsamer als C ist (in Verbindung mit den IO-Warrior).
Thomas
Ich würde behaupten, dass Java nicht langsamer als C ist (in Verbindung mit den IO-Warrior).
Thomas
Re: Einschränkungen
Ok verstehe. Muss ich mir mal Gedanken machen, ob ich damit auch hin komme. Bin mir noch nicht im klaren wie weit ich mit meinem Programm gehen.towaibw wrote:Ich würde behaupten, dass Java nicht langsamer als C ist (in Verbindung mit den IO-Warrior)
Wo bekomme ich die Java API? Ist die im SDK dabei? Konnte da keine Infos zu finden.
Auf mein eigentliches Problem hat leider noch keiner antworten können? Denke die meisten arbeiten unter Windows oder Linux. Ist ja auch weniger ein IOW Problem. Bis bald
Gruß Robert