2

コマンドラインの Foundation Objective-C プログラムを作成しようとしていますが、RS232 シリアル デバイスと通信する必要があります。

これを行う方法についてのアイデアはありますか?

編集 - これはiPhone 用ではありません。これはデスクトップアプリケーションです。

4

2 に答える 2

0

私はmoxaのいわゆる「シリアルデバイスサーバー」を使用しましたが、それは魅力的に機能しました。

USB-シリアル コンバーターに勝る利点:

  • このデバイスは、ネットワーク内のどこにでも統合できます
  • アプリケーション側では、十分に文書化されたネットワークプログラミングです

通常、Device Server を使用すると、LANWiFiなどのネットワークを使用してシリアル デバイスに接続できます。

ソフトウェア側では、次のような非常に簡単なネットワーク/ソケット プログラミングになります。

( 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];
}
于 2013-07-09T17:17:20.527 に答える