Jump to content

kutte

Members
  • Gesamte Inhalte

    5
  • Benutzer seit

  • Letzter Besuch

kutte's Achievements

Newbie

Newbie (1/14)

0

Reputation in der Community

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