Jump to content

kutte

Members
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von kutte

  1. Hi Manni, die refToSelf Variante funktioniert bei mir, Dir fehlt bestimmt nur eine Zuweisung...bei mir siehts so aus. 1. Definition der Zeiger und der Callback-Methode (den Typecast (id) nicht vergessen) in der .m Datei (AppDelegate.m) Dann bist Du die "Implicit conversion" Meldung los... #import "AppDelegate.h" void * refToLinearPotiSlider; void * refToLinearPotiText; void cb_lp_position(uint16_t position) { //NSLog(@" %@", @"callback from linearpoti..."); [(id)refToLinearPotiSlider setIntegerValue: position]; [(id)refToLinearPotiText setIntegerValue: position]; } @implementation AppDelegate 2. Die Zeiger auf die GUI Elemente in dieser Methode zuweisen (AppDelegate.m). Ich setze einen Slider und ein Textfeld (IBOutlets). - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { // Insert code here to initialize your application refToLinearPotiSlider = linearpoti_slider; refToLinearPotiText = linearpoti_text; } 3. Registrierung der CallBack Methode in Deinem Code linear_poti_register_callback(&lp, LINEAR_POTI_CALLBACK_POSITION, cb_lp_position); das ruft die CallBack Methode wenn ich mien Poti bewege und setzt dann den Wert im GUI (Slider & Textfeld). Gruss kutte
  2. Erklärung: C Funktionen sind ausserhalb der @implementation einer Objective-C (.m) Datei deklariert. int MyCFunction(int num, void *data) { //code here... } @implementation - (void)MyObjectiveCMethod:(int)number withData:(NSData *)data { //code here } @end Da die C Funktion ausserhalb der @implementation ist, kann Sie keine Methoden aufrufen wie z.B. [self doSomething] und hat keinen Zugriff auf Instanz Variablen. Lösung: In der @implementation einen Zeiger definieren (refToSelf) und den Zeiger z.B. inder init() zuweisen. Nun ist im CallBack das Objekt sichtbar... void * refToSelf; int cCallback() { [refToSelf someMethod:someArg]; } @implementation SomeClass - (id) init { self = [super init]; refToSelf = self; } - (void) someMethod:(int) someArg { }
  3. das Problem zeigt sich bereits zur Compile-Zeit und nicht erst zur Laufzeit. Ich habe den Verdacht, dass das generell nicht funktionieren kann, weil ich ja versuche Obj-C Referenzen in der C Umgebung (die Callback-Methode des LinearPoti) zu nutzen. Kommentiere ich die Zeile aus, kann ich kompilieren und der CallBack wird gerufen linearpoti.tiff
  4. @Manni, Danke, hast Du auch schon versucht einen Callback zu Deinem Temperatur-Bricklet zu implementieren? und in der CallBack-Methode versucht z.B. ein NSTextField mit dem Wert zu füttern? Genau da (und nur da) hab ich das Problem...(wie in meinem Code-snippet angedeutet) Gruss kutte
  5. Hallo, ich hab ein Problem mit den C Bindings in Xcode innerhalb einer registrierten Callback Funktion für das LinearPoti Bricklet. void cb_lp_position(uint16_t position) { [linearpoti setIntegerValue: position]; } die Variable "linearpoti" (referenziert einen NSSlider) ist nur innerhalb dieser callback Methode nicht sichtbar (undeclared indentifier). Die Variable ist jedoch ordnungsgemäß definiert und in jeder anderen Obj-C Methode sichtbar. Hat jemand vielleicht ein Beispiel, in dem in Xcode mit Callbacks gearbeitet wird und in der Callback Methode ein GUI Objekt referenziert wird? Danke vorab - kutte
×
×
  • Neu erstellen...