/*! * \~chinese * @header PTDispatcher.h * @abstract 通讯协议 * * \~english * @header PTDispatcher.h * @abstract Protocol */ #import #import #import "SDKDefine.h" #import "PTPrinter.h" /// 连接模式 typedef NS_ENUM(NSInteger, PTDispatchMode) { /// 未知类型 PTDispatchModeUnconnect = 0, /// 蓝牙 PTDispatchModeBLE = 1, /// 无线 PTDispatchModeWiFi = 2 }; /// 手机蓝牙状态 typedef NS_ENUM(NSInteger, PTBluetoothState) { /// 未授权,请前往系统设置授权 PTBluetoothStateUnauthorized = 0, /// 蓝牙未开 PTBluetoothStatePoweredOff = 1, /// 正常 PTBluetoothStatePoweredOn = 2, }; /// 打印完成后打印机返回的状态 typedef NS_ENUM(NSInteger, PTPrintState) { /// 打印成功 PTPrintStateSuccess = 0xcc00, /// 打印失败(缺纸) PTPrintStateFailurePaperEmpty = 0xcc01, /// 打印失败(开盖) PTPrintStateFailureLidOpen = 0xcc02 }; /// 返回连接的错误类型 typedef NS_ENUM(NSInteger, PTConnectError) { /// 连接超时 PTConnectErrorBleTimeout = 0, /// 获取服务超时 PTConnectErrorBleDisvocerServiceTimeout = 1, /// 验证超时 PTConnectErrorBleValidateTimeout = 2, /// 未知设备 PTConnectErrorBleUnknownDevice = 3, /// 系统错误,由coreBluetooth框架返回 PTConnectErrorBleSystem = 4, /// 验证失败 PTConnectErrorBleValidateFail = 5, /// 无线连接超时 PTConnectErrorWifiTimeout = 6, /// socket错误 PTConnectErrorWifiSocketError = 7 }; /// 返回固件升级错误 typedef NS_ENUM(NSInteger, PTUpgradeFirmwareState) { /// 升级成功 PTUpgradeFirmwareStateSuccess = 0, /// 升级失败,数据长度错误 PTUpgradeFirmwareStateFailureDataLengthError, /// 升级失败,验证或者校验失败 PTUpgradeFirmwareStateFailureValidateFail, /// 升级失败,写入超时 PTUpgradeFirmwareStateFailureWriteTimout, /// 升级失败,包序号错误 PTUpgradeFirmwareStateFailurePackageNumberError, /// 升级失败,包长度错误 PTUpgradeFirmwareStateFailurePackageLengthError, /// 升级失败,写入失败 PTUpgradeFirmwareStateFailureWriteFail, /// 升级失败 PTUpgradeFirmwareStateFail }; @class PTPrinter; typedef void(^PTPrinterMutableArrayBlock)(NSMutableArray *printerArray); typedef void(^PTEmptyParameterBlock)(void); typedef void(^PTBluetoothConnectFailBlock)(PTConnectError error); typedef void(^PTNumberParameterBlock)(NSNumber *number); typedef void(^PTDataParameterBlock)(NSData *data); typedef void(^PTPrintStateBlock)(PTPrintState state); typedef BOOL(^PTPeripheralFilterBlock)(CBPeripheral *peripheral, NSDictionary *advertisementData, NSNumber *RSSI); typedef void(^PTUnconnectBlock)(NSNumber *number, BOOL isActive); typedef void(^PTSendSuccessParameterBlock)(int64_t dataCount, double time); typedef void(^PTUpgradeFirmwareStateBlock)(PTUpgradeFirmwareState state); @interface PTDispatcher : NSObject @property (assign, nonatomic) PTDispatchMode mode; @property (strong, nonatomic, readwrite) PTPrinter *printerConnected; //该属性表示连接后的打印机对象 @property (copy, nonatomic, readwrite) PTSendSuccessParameterBlock sendSuccessBlock; @property (copy, nonatomic, readwrite) PTEmptyParameterBlock sendFailureBlock; @property (copy, nonatomic, readwrite) PTNumberParameterBlock sendProgressBlock; @property (copy, nonatomic, readwrite) PTDataParameterBlock receiveDataBlock; @property (copy, nonatomic, readwrite) PTPrintStateBlock printStateBlock; @property (copy, nonatomic, readwrite) PTPrinterMutableArrayBlock findAllPeripheralBlock; @property (copy, nonatomic, readwrite) PTEmptyParameterBlock connectSuccessBlock; @property (copy, nonatomic, readwrite) PTBluetoothConnectFailBlock connectFailBlock; @property (copy, nonatomic, readwrite) PTUnconnectBlock unconnectBlock; @property (copy, nonatomic, readwrite) PTNumberParameterBlock readRSSIBlock; @property (copy, nonatomic, readwrite) PTPeripheralFilterBlock peripheralFilterBlock; @property (copy, nonatomic, readwrite) PTUpgradeFirmwareStateBlock upgradeFirmwareStateBlock; /// 创建单例对象 + (instancetype)share; /// 发送数据 - (void)sendData:(NSData *)data; /// 暂停发送 - (void)pauseWriteData; /// 继续发送 - (void)resumeWriteData; /// 开始扫描蓝牙 - (void)scanBluetooth; /// 停止扫描蓝牙,连接成功后SDK会自动停止扫描 - (void)stopScanBluetooth; /// 扫描Wi-Fi wifi的端口是9100, 如果需要获得路由的名称以及mac地址信息, ios12+需要Access WiFi Information的权限,iOS13+以后要开启定位权限 - (void)scanWiFi:(PTPrinterMutableArrayBlock)wifiAllBlock; /// 获取已发现的所有打印机 - (void)whenFindAllBluetooth:(PTPrinterMutableArrayBlock)bluetoothBlock; /// 获取蓝牙的rssi信号强度 - (void)whenReadRSSI:(PTNumberParameterBlock)readRSSIBlock; /// 连接打印机,传入的是打印机对象 - (void)connectPrinter:(PTPrinter *)printer; /// 断开打印机连接 - (void)unconnectPrinter:(PTPrinter *)printer; /// 连接成功回调,连接成功后,会停止扫码设备 - (void)whenConnectSuccess:(PTEmptyParameterBlock)connectSuccessBlock; /// 连接失败的回调 - (void)whenConnectFailureWithErrorBlock:(PTBluetoothConnectFailBlock)connectFailBlock; /// 断开连接的回调,调用unconnectPrinter断开打印机后,会调用该方法 - (void)whenUnconnect:(PTUnconnectBlock)unconnectBlock; /// 数据发送成功的回调,数据发送完成后,会调用该方法 - (void)whenSendSuccess:(PTSendSuccessParameterBlock)sendSuccessBlock; /// 数据发送失败的回调 - (void)whenSendFailure:(PTEmptyParameterBlock)sendFailureBlock; /// 数据发送进度的回调 - (void)whenSendProgressUpdate:(PTNumberParameterBlock)sendProgressBlock; /// 接收到打印机返回的数据,比如获取打印机名称就是通过该方法返回 - (void)whenReceiveData:(PTDataParameterBlock)receiveDataBlock; /// 接收到打印机打印状态回调,使用该方法前,需要保证打印机打开了状态回调的开关,比如CPCL指令集中的cpclTurnOnPrintStatusCallBack方法,ESC中的turnOnPrintStatusCallBack方法 - (void)whenUpdatePrintState:(PTPrintStateBlock)printStateBlock; /// 设置蓝牙连接超时时间 - (void)setupBleConnectTimeout:(double)timeout; /// 设置外设过滤,在发现打印机设备的回调中进行一些过滤,返回自己想要的机型 - (void)setupPeripheralFilter:(PTPeripheralFilterBlock)block; /// 注册蓝牙中心,该接口用于兼容你自己实现的CoreBluetooth框架 - (void)registerCentralManager:(CBCentralManager *)manager delegate:(id)delegate; /// 注销代理 - (void)unregisterDelegate; /// 升级固件状态回调 - (void)whenUpgradeFirmwareStateBlock:(PTUpgradeFirmwareStateBlock)upgradeFirmwareStateBlock; /// 手机的蓝牙状态,为了准确获取手机蓝牙状态,需要在app启动的时候初始化PTDispatcher - (PTBluetoothState)getBluetoothStatus; /// SDK打包时间 - (NSString *)SDKBuildTime; @end