我正在尝试制作一个应用程序,该应用程序使用Dock到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数组,它对我来说更容易添加字节?
我是编程新手,请向我详细解释。提前非常感谢。

最佳答案

实际上,您只是通过有线发送数据,行字节。我在一个项目中做了类似的事情(不是有线的,而是通过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)]];


如您所见,我只是逐字节附加数据。

关于objective-c - iOS:发送自定义的uint8数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11268304/

10-09 02:21
查看更多