Создайте пакет байтов и отправьте на внешнее устройство для печати через Bluetooth в iOS

Я работаю, чтобы напечатать изображение с помощью внешнего аксессуара в iOS, но у меня есть проблема, чтобы отправить запрос на принтер.
Здесь я прикрепил изображение, в котором пакет должен отправить принтер. но я не знаю, как сделать этот пакет и отправить пакет на принтер.

Пакетные данные

1 ответ

Решение

Здесь я приложил пример кода для создания пакета и отправки на внешнее вспомогательное устройство (принтер) с использованием языка Objective C.

- (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;
}
Другие вопросы по тегам