wifi连接打印机小demo

//
//  ViewController.m
//  socketConnect2
//
//  Created by dascomzz on 16/1/20.
//  Copyright © 2016年 DS. All rights reserved.
//

#import "ViewController.h"
#import <AsyncSocket.h>



@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextView *logTextView; //日志文本
@property (weak, nonatomic) IBOutlet UITextView *textView;


@property (nonatomic,strong) NSData * tmpData;
@property (nonatomic,strong) NSData * currentData;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    clientSocket = [[AsyncSocket alloc] initWithDelegate:self];

    
}
#pragma mark - 私有方法
//日志
- (void)writeToLog:(NSString *)str{
    //NSString * tmp = self.logTextView.text;
    self.logTextView.text = [NSString stringWithFormat:@"%@",str];
}


//发送字符
- (void)sentMsg:(NSString *)str{

    NSData *msgData = [str dataUsingEncoding:NSUTF8StringEncoding];
     
    [clientSocket writeData:msgData withTimeout:60 tag:100];
    
    //把当前发送的数据保存起来
    _tmpData = msgData;
}

#pragma mark - 按钮方法
//连接打印机
- (IBAction)connectBtn:(id)sender {
    // 1. 连接打印机
    // NSString *ip = @"192.168.0.1";
    if (![clientSocket isConnected]) {
        NSString *ip = @"192.168.0.1";
        UInt16 port = 9100;
        [clientSocket connectToHost:ip onPort:port withTimeout:30 error:nil];
        
        // 启动一个等待读操作
        [clientSocket readDataWithTimeout:-1 tag:600];
    }else{
        [self writeToLog:@"已经连接了打印机"];
    }
}

//发送消息
- (IBAction)sentStr:(id)sender {
    if ([clientSocket isConnected] == NO) {
        NSLog(@" 没有连接不能发消息");
        [self writeToLog:@" 没有连接不能发消息"];
        return;
    }
    // 必须要连接上才可以发送
    // 开始发送消息
    if ([self.textView.text isEqualToString:@""]) {
        [self writeToLog:@"文本为空 不能发送"];
        return;
    }
    [self sentMsg:[NSString stringWithFormat:@"%@",self.textView.text]];
}


//与打印机断开连接
- (IBAction)socketDisconnect:(id)sender {
    if([clientSocket isConnected]){
        [clientSocket disconnect];
        [self writeToLog:@"已与打印机断开连接"];
    }
}

//开始打印
- (IBAction)print:(id)sender {
    if ([clientSocket isConnected] == NO) {
        NSLog(@" 没有连接不能发消息");
        [self writeToLog:@"没有连接不能发消息"];
        return;
    }
    // 必须要连接上才可以发送
    // 开始发送消息
    [self sentMsg:@"\n"];
}

//打开WIFI选择界面
- (IBAction)selectWIFI:(id)sender {
    NSURL *url = [NSURL URLWithString:@"prefs:root=WIFI"];
    if ([[UIApplication sharedApplication] canOpenURL:url])
    {
        [[UIApplication sharedApplication] openURL:url];
    }
}

//设置粗体
- (IBAction)btnSetFont:(id)sender {
    Byte byte1[2]={27,69};
    Byte byte2[2]={27,70};
    NSData *data1=[[NSData alloc]initWithBytes:byte1 length:2];
    NSData *data2=[[NSData alloc]initWithBytes:byte2 length:2];
    [clientSocket writeData:data1 withTimeout:2 tag:0];
}

//换页
- (IBAction)nextPage:(id)sender {
    Byte byte1[1]={12};
   NSData *data1=[[NSData alloc]initWithBytes:byte1 length:1];
    [clientSocket writeData:data1 withTimeout:2 tag:0];
}


#pragma mark - sockt代理方法
//已经发送成功
- (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag {
    if(tag == 100){
        _currentData = _tmpData;
        _tmpData = nil;
        NSString *tmp = [[NSString alloc]initWithData:_currentData encoding:NSUTF8StringEncoding];
        [self writeToLog:[NSString stringWithFormat:@"表示发送完成了 打印机接收到了 :%@",tmp]];
        NSLog(@"客户端 表示发送完成了 肯定对方接收到了");
    }
    
}

//已经读取成功
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
    NSString *s = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    if (tag == 600) {
        [self writeToLog:[NSString stringWithFormat:@"读到了一个打印机的响应 %@", s]];
        NSLog(@"读到了一个打印机的响应 %@", s);
    }
    // 循环的读数据
    [clientSocket readDataWithTimeout:-1 tag:600];
}

// 这个函数表示已经上了 代理函数
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {
    NSString * msg = [NSString stringWithFormat:@"客户端 连接上了 %@:%d",host, port];
    [self writeToLog:msg];
    NSLog(@"客户端 连接上了 %@:%d", host, port);
}

//连接失败
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err {
    NSString * msg = [NSString stringWithFormat:@"连接出错 %@", err];
    [self writeToLog:msg];
    NSLog(@"连接出错 %@", err);
    // 断线重新连接
    //    [clientSocket connectToHost:ip onPort:port withTimeout:30 error:nil];
}




- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


小demo

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值