1

Dock to RS232 ワイヤ (RedPark から購入) を使用して、iPhone と別のハードウェアを通信するアプリを作成しようとしています。また、redpark が提供するライブラリも使用しています。最初に簡単なコードを作成しましたが、うまくいきました。UInt8 infoCmd[5] = {0x3E,0x3E,0x05,0x80,0xff}; [rscMgr 書き込み:infoCmd 長さ:5];
次に、さらにコマンドを追加したいので、必要なコマンドのさまざまな組み合わせを返すメソッドを作成します。

- (UInt8 *)requestCommand:(int)commandName{
    UInt8 * command;
    if (commandName == DATADUMP) {
        command=[Communication buildDataDump];
    }
    if (commandName == GETSERIALINFO) {
        command=[Communication buildGetSerailInfo];   
    }
    return command;
}
+ (UInt8 *)buildGetSerailInfo{
    UInt8 *command = malloc(sizeof(UInt8)*5);
    command[0]=SYN;
    command[1]=SYN;
    command[2]=ENQ;
    command[3]=GETSERIALINFO;
    //command[4] = {SYN, SYN, ENQ, GETSERIALINFO};
    return command;    
}

問題は、私のコマンドのいくつかには、200 バイトの長さのデータが含まれているということです。バイトを追加しやすい UInt8 配列を作成するにはどうすればよいですか? プログラミング初心者なので詳しく教えてください。よろしくお願いします。

4

1 に答える 1

1

実際には、データ、行バイトをネットワーク経由で送信するだけです。私は1つのプロジェクトで同様のことを行います(有線ではなく、TCP / IPを介したRS232コマンド)。NSMutableDataインスタンスを使用すると、非常に簡単になります。

私のコードからのスニペット:

static u_int8_t codeTable[] =   { 0x1b, 0x74, 0x10 };
static u_int8_t charSet[]   =   { 0x1b, 0x52, 0x10 };
static u_int8_t formatOff[] =   { 0x1b, 0x21, 0x00 };
static u_int8_t reverseOn[] =   { 0x1d, 0x42, 0x01 };
static u_int8_t reverseOff[]=   { 0x1d, 0x42, 0x00 };
static u_int8_t paperCut[]  =   { 0x1d, 0x56, 0x0 };  


NSMutableData *mdata = [NSMutableData dataWithBytes:&formatOff length:sizeof(formatOff)];
[mdata appendBytes:&formatOff length:sizeof(formatOff)];
[mdata appendBytes:&reverseOff length:sizeof(reverseOff)];    
[mdata appendData: [NSData dataWithBytes: &codeTable length:sizeof(codeTable)]];
[mdata appendData: [NSData dataWithBytes: &charSet length:sizeof(charSet)]];

ご覧のとおり、データをバイトごとに追加しています。

于 2012-06-29T20:55:14.557 に答える