コマンドラインの Foundation Objective-C プログラムを作成しようとしていますが、RS232 シリアル デバイスと通信する必要があります。
これを行う方法についてのアイデアはありますか?
編集 - これはiPhone 用ではありません。これはデスクトップアプリケーションです。
コマンドラインの Foundation Objective-C プログラムを作成しようとしていますが、RS232 シリアル デバイスと通信する必要があります。
これを行う方法についてのアイデアはありますか?
編集 - これはiPhone 用ではありません。これはデスクトップアプリケーションです。
私はmoxaのいわゆる「シリアルデバイスサーバー」を使用しましたが、それは魅力的に機能しました。
USB-シリアル コンバーターに勝る利点:
通常、Device Server を使用すると、LANやWiFiなどのネットワークを使用してシリアル デバイスに接続できます。
ソフトウェア側では、次のような非常に簡単なネットワーク/ソケット プログラミングになります。
( GCDAsyncSocketを使用)
データの準備
static u_int8_t cmd1[] = { 0x1a, 0x73, 0x10 }; //defined by the serial device's protocol
static u_int8_t cmd2[] = { 0x1b, 0x51, 0x01 };
self.data = [NSMutableData dataWithBytes:&cmd1 length:sizeof(cmd1)];
[self.data appendData:[string dataUsingEncoding:NSUTF8StringEncoding]];
[self.data appendBytes:&cmd2 length:sizeof(cmd2)];
データの送信
-(IBAction)buttonAction:(id)sender
{
NSError *error = nil;
[self.socket connectToHost:@"192.168.1.9" onPort:1234 withTimeout:-1 error:&error];
if (error) {
NSLog(@"error: %@", error);
}
}
-(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port
{
[self.socket writeData:self.data withTimeout:-1 tag:23];
}