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;
}
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;
}
解决方案 »
- 怎么能够让开发的hello world在非越狱的ios系统上运行?
- 大家好,在intel或者amd电脑上安装mac操作系统,有朋友安装过吗?
- 把String时间转换成 NSDate问题
- UIActionSheet中加入UITextField,键盘无法输入的问题
- iOS tableviewcell 双击事件
- iOS tableview刷新显示数据 reloadData
- nib文件中control-drag 控件 创建outlet遇到问题!
- 如何实现拖动UIButton但不触发点击事件
- 关于CGAffineTransformIdentity的问题
- awakeFromNib 中初始化协议类为什么不会响应协议方法
- 百度地图上 很多个大头针 点击的时候 怎么识别是点击了哪个大头针?
- 请问,在navigationcontroller中的两个视图怎么让他们有不一样的navigationbar?
求大神点拨, 是不是每种打印机有自己的通信协议,不同的打印命令。 使用socket既要传输打印内容,也要传输打印命令?
这个 不仅需要传输打印内容还需要传输打印命令,不同打印机的打印命令可能不相同。
因为我的真实需求是 连接局域网下的POS小票打印机,使用的打印命令是 ESC/POS 语言(网上能找到), 进行打印机初始化后就能打印了。
这个 不仅需要传输打印内容还需要传输打印命令,不同打印机的打印命令可能不相同。
因为我的真实需求是 连接局域网下的POS小票打印机,使用的打印命令是 ESC/POS 语言(网上能找到), 进行打印机初始化后就能打印了。
楼主 能提供下 你的代码 参考下吗? 感谢