私はコマンドラインのFoundation Objective-Cプログラムを書こうとしており、RS232シリアルデバイスと通信する必要があります。Objective-CでRS232デバイスとどのように通信できますか?
これを行う方法に関するアイデアはありますか?
EDIT - これはで、はiPhone用です!これはデスクトップアプリケーションです。
私はコマンドラインのFoundation Objective-Cプログラムを書こうとしており、RS232シリアルデバイスと通信する必要があります。Objective-CでRS232デバイスとどのように通信できますか?
これを行う方法に関するアイデアはありますか?
EDIT - これはで、はiPhone用です!これはデスクトップアプリケーションです。
私はあなたがRS-232/USBアダプタを使用していると仮定しています。私がそれをやっていたら、どのデバイスが表示されているか把握し、open( "/ dev/ttyS0"など)機能を使って開くだけです。次に、ファイル記述子とアクセス関数をオブジェクトにまとめます。ここで
は、ページには、POSIX環境でシリアルポートと一緒に遊んでいる: http://www.easysw.com/~mike/serial/serial.html
私は灸から、いわゆる「シリアルデバイスサーバ」を使用し、それが魅力のように働きました。 USBシリアル変換器上
利点:
デバイスサーバーだけ十分に立証ネットワークプログラミングであります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];
}
をどこでだろうこの機能のマニュアルを見つける?申し訳ありません、私はちょうどこの言語で始めることです。 – eastydude5
また、ボー、tx/rxブロッキングなどを設定するにはどうすればよいですか? – eastydude5
私がリンクしているページには、その情報といくつかのコード例があります。 open()システムコールで端末を起動し、 "man 2 open"と入力します。 –