RT
iPad 和 三星 scx-4650打印机 在同一局域网内。打印机不支持 AirPrint, 使用 AsyncSocket 库。 想通过 Socket 直接连接打印机 按特定布局打印。现在使用下面的代码已经能连接到打印机,打印机显示 正在打印,但是无法打印出来,过一会就超时了
    [sock readDataWithTimeout:1 tag:0]; 会提示超时

请教各位,如何让打印机 能成功打印,并且指定打印样式?需要使用ESC/POS命令吗?感觉这方面资料比较少,都是使用下面这种方法。- (IBAction)socketBtnPressed:(id)sender {
    asyncSocket=nil;
    NSError *err = nil;
    if(![asyncSocket connectToHost:DF_Host onPort:DF_Port error:&err])
    {
        asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];
         
        [asyncSocket setRunLoopModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
         
        if (![self SocketOpen:DF_Host port:DF_Port])
        {
            NSMutableString *sendString=[NSMutableString stringWithCapacity:100000];
            [sendString appendString:@"Socket测试成功!!!"];
           
            NSData *cmdData = [sendString dataUsingEncoding:NSUTF8StringEncoding];
             
            [asyncSocket writeData:cmdData withTimeout:-1 tag:0];
        }
        NSLog(@"Error: %@", err);
    }
     
     
     
    }
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    //  能成功执行回调
    NSLog(@"connect sucess!!! onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port);
   // 这句执行后提示错误 提示 Read operation timed out
    [sock readDataWithTimeout:1 tag:0];
}
 
 
//打开
- (NSInteger)SocketOpen:(NSString*)addr port:(NSInteger)port
{
    if (![asyncSocket isConnected])
    {
        [asyncSocket connectToHost:addr onPort:port withTimeout:-1 error:nil];
         
        NSLog(@"connect to Host:%@ Port:%d",addr,port);
    }
    return 0;
}

解决方案 »

  1.   

    发帖到现在都没有回答...... 
    求大神点拨, 是不是每种打印机有自己的通信协议,不同的打印命令。 使用socket既要传输打印内容,也要传输打印命令?
      

  2.   


    这个 不仅需要传输打印内容还需要传输打印命令,不同打印机的打印命令可能不相同。
    因为我的真实需求是 连接局域网下的POS小票打印机,使用的打印命令是 ESC/POS 语言(网上能找到), 进行打印机初始化后就能打印了。  
      

  3.   


    这个 不仅需要传输打印内容还需要传输打印命令,不同打印机的打印命令可能不相同。
    因为我的真实需求是 连接局域网下的POS小票打印机,使用的打印命令是 ESC/POS 语言(网上能找到), 进行打印机初始化后就能打印了。   
    楼主 能提供下 你的代码 参考下吗? 感谢
      

  4.   

    楼主,最近也有这样的需求,能共享下您的demo么