Objective-C ist kompatible zu C. Dies erlaubt es uns die C/C++ Bindings in einer iOS App zu verwenden. Allgemeine Informationen sind in der Beschreibung der C/C++ Bindings zu finden, diese Seite befasst sich nur mit iOS spezifischen Dingen.
Im Folgenden wird angenommen, dass die iOS Entwicklungsumgebung schon installiert ist.
Als Beispiel soll ein kleines Projekt zum Schalten eines Dual Relay Bricklets erstellt werden. Es sollte leicht sein dieses Beispiel für deine Zwecke weiterzuentwickeln.
Starte ein neues Xcode Projekt:
File
New
Project...
Wähle "iOS Application"
Wähle "Single View Application"
Klicke Next
Wähle einen "Product Name" (e.g. Relay)
Klicke Next
Wähle einen "Folder" für das Projekt
Klicke Create
Füge den Quelltext der C/C++ Bindings dem Projekt hinzu:
Rechtsklick auf den Relay Ordner im Project Navigator
New Group, wähle als Name "Tinkerforge"
Rechtsklick auf die neue Tinkerforge Group
Add Files to "Relay"...
Wähle alle Dateien aus dem source/ Ordner der C/C++ Bindings
Es folgt ein kleines Beispielprogramm zum Schalten eines Relays per Knopfdruck.
Bearbeite AppDelegate.h so wie unten gezeigt: füge zwei neue Variablen
für die IPConnection und das DualRelay Objekt und die toggleRelays Interface
Builder Action hinzu.
#import <UIKit/UIKit.h>
#include "ip_connection.h"
#include "bricklet_dual_relay.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
IPConnection ipcon;
DualRelay dr;
}
@property (strong, nonatomic) UIWindow *window;
- (IBAction)toggleRelays;
@end
Bearbeite AppDelegate.m so wie unten gezeigt: erzeuge das IPConnection und
DualRelay Objekt nachdem die App gestartet ist. Der Einfachheit halber haben wir
im Beispiel auf Fehlerbehandlung verzichtet. In der toggleRelays Action wird
der Zustand beider Relais umgeschaltet.
#import "AppDelegate.h"
@implementation AppDelegate
@synthesize window = _window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Change to the IP address of your host
ipcon_create(&ipcon);
dual_relay_create(&dr, "XYZ", &ipcon); // Change XYZ to the UID of your Dual Relay Brick
ipcon_connect(&ipcon, "192.168.178.46", 4223);
dual_relay_set_state(&dr, true, true);
return YES;
}
- (IBAction) toggleRelays
{
// Get state of both relays and toogle it
bool state1, state2;
dual_relay_get_state(&dr, &state1, &state2);
dual_relay_set_state(&dr, !state1, !state2);
}
@end
Jetzt öffne das MainStoryboard.storyboard im Interface Builder und füge ein
Label und ein an/aus Switch Objekt hinzu wie es im Screenshot zu sehen ist. Der
letzte Schritt is das Verbinden des Value Changed Events des Switches mit der
toggleRelays Action:
Rechtsklick auf den Switch
Klicke auf den Kreis rechts vom Value Changed Event
Ziehe eine Linie zum First Responder
Wähle "toogleRelays" vom Action Menu
Die App kann mittels des Run Knopfes im Simulator getestet werden. Dabei ist darauf zu achten UID und IP Adresse entsprechend des verwendeten Dual Relay Bricklets und PCs abzuändern.