做一个字节的数据包,并通过蓝牙发送到外部辅助设备印刷iOS中 [英] Make a bytes packet and send to External accessory Device for print using Bluetooth in iOS

查看:301
本文介绍了做一个字节的数据包,并通过蓝牙发送到外部辅助设备印刷iOS中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的工作中使用的iOS外部附件进行打印的图像,但我有问题,发送请求给打印机。结果
在这里,我连着图像,其中包需要发送打印机。
但我不知道如何使这个数据包发送数据包发送到打印机。

I am working to print image using External Accessory in iOS but I have problem to send request to Printer.
Here, I attached image in which Packet need to send Printer. but i don't know how to make this packet and send packet to printer.

推荐答案

在这里,我附上样品code,使数据包,并使用Objective C语言发送给外部附属设备(打印机)。

Here, I attached the sample code to make the packet and send to External Accessory Device (printer) using Objective C language.

- (void)PrintImage:(UIImage *)image
    {
        NSMutableData* imagedata = [UIImageJPEGRepresentation(image, 0.0) mutableCopy];

    NSMutableData *RequestData=[[NSMutableData alloc]init];

    NSString *bitSeries = @"";
    NSData *data = [[NSData alloc]init];
    //    1
    bitSeries = @"00011011";
    data=[self stringToData:bitSeries];
    NSLog(@"1 : %@", data);
    [RequestData appendData:data];
    //    2
    bitSeries = @"00101010";
    data=[self stringToData:bitSeries];
    NSLog(@"2 : %@", data);
    [RequestData appendData:data];
    //    3
    bitSeries = @"01000011";
    data=[self stringToData:bitSeries];
    NSLog(@"3 : %@", data);
    [RequestData appendData:data];
    //    4
    bitSeries = @"01000001";
    data=[self stringToData:bitSeries];
    NSLog(@"4 : %@", data);
    [RequestData appendData:data];
    //    5
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"5 : %@", data);
    [RequestData appendData:data];
    //    6
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"6 : %@", data);
    [RequestData appendData:data];
    //    7
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"7 : %@", data);
    [RequestData appendData:data];
    //    8
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"8 : %@", data);
    [RequestData appendData:data];
    //    9

    NSMutableArray *arrstr = [self intToBinary:(int)[imagedata length]];

    bitSeries = [arrstr objectAtIndex:0];
    data=[self stringToData:bitSeries];
    NSLog(@"9 : %@", data);
    [RequestData appendData:data];

    bitSeries = [arrstr objectAtIndex:1];
    data=[self stringToData:bitSeries];
    NSLog(@"9 : %@", data);
    [RequestData appendData:data];

    bitSeries =[arrstr objectAtIndex:2];
    data=[self stringToData:bitSeries];
    NSLog(@"9 : %@", data);
    [RequestData appendData:data];

    //    10
    bitSeries = @"00000001";
    data=[self stringToData:bitSeries];
    NSLog(@"10 : %@", data);
    [RequestData appendData:data];
    //    11
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"11 : %@", data);
    [RequestData appendData:data];
    //    12
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"12 : %@", data);
    [RequestData appendData:data];

    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"12 : %@", data);
    [RequestData appendData:data];

    //    13
    bitSeries = @"00000000";
    data=[self stringToData:bitSeries];
    NSLog(@"13 : %@", data);
    [RequestData appendData:data];

    NSLog(@"Final Data is : %@", RequestData);


    if (imagedata !=nil)
    {
        SessionData *obj=[SessionData sharedInstance];
        obj.imageData=imagedata;
        obj.RequestData = RequestData;
        [obj setupSessionManager];
    }
    else
    {
        [[[UIAlertView alloc]initWithTitle:@"Error" message:@"Please Select Image." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil] show];
    }
}

-(NSData *)stringToData : (NSString *)bitSeries
{
    uint8_t value = strtoul([bitSeries UTF8String], NULL, 2);
    NSLog(@"bitSeries : %@ -------> Value : %u",bitSeries, value);
    NSData *data = [NSData dataWithBytes:&value length:sizeof(value)];
    return data;
}

- (NSMutableArray *)intToBinary:(int)number
{
    int bits =  sizeof(number) * 8;
    int bitcnt=bits;

    NSMutableArray *arrStr=[[NSMutableArray alloc]init];
    NSMutableString *binaryStr = [NSMutableString string];

    for (; bits > 0; bits--, number >>= 1)
    {
        [binaryStr insertString:((number & 1) ? @"1" : @"0") atIndex:0];
    }

    if (bitcnt == 32)
    {
        binaryStr=[[binaryStr substringFromIndex:8] mutableCopy];
    }
    else if(bitcnt ==16)
    {
        binaryStr = [[@"00000000" stringByAppendingString:binaryStr] mutableCopy];
    }
    else if (bitcnt == 8)
    {
        binaryStr = [[@"0000000000000000" stringByAppendingString:binaryStr] mutableCopy];
    }
    [arrStr addObject:[binaryStr substringToIndex:8]];
    [arrStr addObject:[binaryStr substringWithRange:NSMakeRange(8, 8)]];
    [arrStr addObject:[binaryStr substringFromIndex:16]];

    NSLog(@"%@",arrStr);

    return arrStr;
}

这篇关于做一个字节的数据包,并通过蓝牙发送到外部辅助设备印刷iOS中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆