Bonjour
Comment d'un programme objective C appeler une procédure en C
Exemple
Je souhaite manager le port serie sur mon iphone ( j'ai SDK 3.1 et Xcode 3.1)
et je suis sur Leopard 10.5
J'ai trouvé sur internet SerialManager, une classe de Cocoa
En voici un exemple :
Extrait de SerialManager.m
j'ai créé une appli Gestion des port série
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 - (int)findRS232Ports { return [ self findPorts:CFSTR( kIOSerialBSDRS232Type ) ] ; } - (NSString*)streamAtIndex:(int)n { if ( n < 0 || n >= numberOfPorts ) return nil ; return stream[n] ; } - (NSString*)pathAtIndex:(int)n { if ( n < 0 || n >= numberOfPorts ) return nil ; return path[n] ; } // common function to open port and set up serial port parameters static int openPort( NSString *path, int speed, int bits, int parity, int stops, int openFlags, Boolean input ) { int fd, cflag ; struct termios termattr ; fd = open( [ path cStringUsingEncoding:NSASCIIStringEncoding], openFlags ) ; if ( fd < 0 ) return -1 ; // build other flags cflag = 0 ; cflag |= ( bits == 7 ) ? CS7 : CS8 ; // bits if ( parity != 0 ) { cflag |= PARENB ; // parity if ( parity == 1 ) cflag |= PARODD ; } if ( stops > 1 ) cflag |= CSTOPB ; // merge flags into termios attributes tcgetattr( fd, &termattr ) ; termattr.c_cflag &= ~( CSIZE | PARENB | PARODD | CSTOPB ) ; // clear all bits and merge in our selection termattr.c_cflag |= cflag ; // set speed, split speed not support on Mac OS X? cfsetispeed( &termattr, speed ) ; cfsetospeed( &termattr, speed ) ; // set termios tcsetattr( fd, TCSANOW, &termattr ) ; return fd ; }
Dans le fichier Gestion_des_ports_s_rieAppDelegate.m
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #import "Gestion_des_ports_s_rieAppDelegate.h" #import "SerialManager.h" @implementation Gestion_des_ports_s_rieAppDelegate @synthesize window; - (void)applicationDidFinishLaunching:(UIApplication *)application { // Override point for customization after application launch [ static: openPort("Com1",9600, 8, 0, 1, 0, 0)]; [window makeKeyAndVisible]; } - (void)dealloc { [window release]; [super dealloc]; }
Forcément j'essaye d'ouvrir le port mais comme je débute en objective C
je sais pas vraiment comment appeler cette fonction depuis mon fichier
Gestion_des_ports_s_rieAppDelegate.m
La ligne
[ static: openPort("Com1",9600, 8, 0, 1, 0, 0)];
me génére des erreurs
Et puis cela doit pas non plus s'appeler Com1
Donc je suis un peu perdu
Partager