由于工作需求需要用到微型蓝牙打印机,花了两天时间调试了蓝牙打印机,由于打印内容比较多,打印不完整被卡了一整天。蓝牙设备每次发送字节最好不要超过20个字节,否则会造成内容打印不完整。如果打印内容比较多需要进行拆包发送。

在这里提供IOS使用代码。

1.添加 CoreBluetooth.framework 框架,

2.导入HHBluetoothPrinterManager.h头文件

3.添加事件代理

@interface UnityAppController ()<HHBluetoothPrinterManagerDelegate,UITableViewDelegate,UITableViewDataSource>
{}
@end

这部分完整代码

#import "HHBluetoothPrinterManager.h"@interface UnityAppController ()<HHBluetoothPrinterManagerDelegate,UITableViewDelegate,UITableViewDataSource>
{}
@end@implementation UnityAppController

UnityAppController.h头文件中添加如下代码

typedef  enum {Align_Left = 0X00,Align_Center,Align_Right,
}Align_Type_e;typedef  enum {Char_Normal = 0X00,Char_Zoom_2,Char_Zoom_3,Char_Zoom_4
}Char_Zoom_Num_e;typedef  enum {TICKET_SALE = 1,TICKET_CARD,
}TYPE_TICKET;

UnityAppController.m中如下添加逻辑代码

HHBluetoothPrinterManager *manager;
//选中的设备
CBPeripheral *selectedPeripheral;
NSMutableArray *dataArray1;
NSMutableArray *sendDataArray;- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral {//扫描到的设备NSLog(@"扫描到的设备%@",peripheral);[dataArray1 addObject:peripheral];selectedPeripheral=peripheral;[manager connectPeripheral:peripheral];
}extern "C"{void __connectBluetooth (){NSLog(@"开始扫描");[manager scanPeripherals];}void __printText (const char * tag){NSString *tagstr=[NSString stringWithUTF8String:tag];NSLog(@"___printText=%@",tagstr);//printText(tagstr);NSString * str=@"都是空房间都是浪费到了房间开都是浪费是非得失理发店萨芬的分开打死了发多少立方第三方的首付款老地方懒得开罚单是反倒是发多少立方订房订单放大来看房打开了房间浪费就饿哦覅为分配的是否我发的反垄断法地方了看电视放大来看房价未分配代理费第三方多少了发票违法违法的酸辣粉当时的历史防静电服都是浪费代理费地方记录的开发及违法排污费 第三方的快速访问;平凡的死了地方记录我丰富多少了房间都是来看反倒是附件是大家访客里无法分解了独守空房都是浪费独守空房的律师费的律师费的发的反垄断法的看法的房间的李开复剪短发了对方的浪费订房代理费贷款纠纷第六课丰富赖伟峰收废品的身份登记法律都是付款了贷款是否的律师费代理商客服代理商放大了师傅都是分为平凡的披萨佛的商品房的拍摄佛挡杀佛都是浪费第三方第三方额的房间都是放大看手机放假了电视剧反倒是发的是否、、、、、";printText(str);}void __sendRAWData (unsigned char *data, int length){NSData *value = nil;if (data != nil)value = [[NSData alloc] initWithBytes:data length:length];printData(value);}
}void printText(NSString* tagstr){NSString* aStr=@"水电费水电费多少\n";NSData* aData;//  aData = [aStr dataUsingEncoding:NSUTF8StringEncoding];NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);aData=[tagstr dataUsingEncoding: enc];NSLog(@"data.length=%ld",aData.length);int len=(int)[aData length];if (len>20) {NSData* dataTemp=[aData subdataWithRange:NSMakeRange(0, 20)];[manager printData:dataTemp];//这里分包发送 蓝牙发送每次不要超过20个字节for (int i = 0; i < len / 20; i++){int lenTemp = 20;if ((len - (20 + 20 * i) < 20) && (len - (20 + 20 * i) > 0)) {//i == 1lenTemp = len - (20 + 20 * i);}if (len - (20 + 20 * i) > 0){//i ==0;dataTemp = [aData subdataWithRange:NSMakeRange(20 + 20 * i, lenTemp)];}[manager printData:dataTemp];}}
}void printData(NSData* aData){[manager connectPeripheral:selectedPeripheral];int len=(int)[aData length];if (len>20) {NSData* dataTemp=[aData subdataWithRange:NSMakeRange(0, 20)];[manager printData:dataTemp];//这里分包发送for (int i = 0; i < len / 20; i++){int lenTemp = 20;if ((len - (20 + 20 * i) < 20) && (len - (20 + 20 * i) > 0)) {//i == 1lenTemp = len - (20 + 20 * i);}if (len - (20 + 20 * i) > 0){//i ==0;dataTemp = [aData subdataWithRange:NSMakeRange(20 + 20 * i, lenTemp)];}[manager printData:dataTemp];}}
}

在(void)startUnity:(UIApplication*)application中实现数据初始化

- (void)startUnity:(UIApplication*)application
{NSAssert(_unityAppReady == NO, @"[UnityAppController startUnity:] called after Unity has been initialized");UnityInitApplicationGraphics();// we make sure that first level gets correct display list and orientation[[DisplayManager Instance] updateDisplayListInUnity];UnityLoadApplication();Profiler_InitProfiler();[self showGameUI];[self createDisplayLink];/*******蓝牙打印数据初始化************/manager = [HHBluetoothPrinterManager sharedManager];manager.delegate = self;dataArray1 = [[NSMutableArray alloc] init];//初始化NSLog(@"初始化");/*******蓝牙打印数据初始化************/UnitySetPlayerFocus(1);
}

Unity连接蓝牙打印机相关推荐

  1. H5开发 连接蓝牙打印机 打印标签(斑马ZR628)

    1.连接蓝牙打印机(先用手机自带蓝牙进行配对),然后绑定出已配对的蓝牙设备(用来选择/切换打印机之用),代码如下 已配对蓝牙设备,中显示的就是已连接的,点击一下即可 代码: 1 <!DOCTYP ...

  2. android 如何实现连接蓝牙打印机来实现打印功能

    ============问题描述============ 目前,android 如何实现连接蓝牙打印机来实现打印功能,请大侠来指点, 是否要遵循什么协议标准,还是有设备提供商会提供打印的sdk, 我们 ...

  3. uni-app H5+ 连接蓝牙打印机打印文字及二维码

    基于Native.js 实现的连接蓝牙打印机 打印效果图 核心代码 测试代码 运行设备及环境 PS: PPS: Demo 打印效果图 核心代码 /*** @Description: 蓝牙打印类 基于h ...

  4. android 蓝牙地址连接打印机,android 连接蓝牙打印机 BluetoothAdapter

    android 连接蓝牙打印机 BluetoothAdapter 源码下载地址:https://github.com/yylxy/BluetoothText.git public class Prin ...

  5. js连接蓝牙打印机打印一维码和二维码

    JavaScript使用原生JS(native.JS)连接蓝牙打印机,打印一维码.二维码 使用说明: 代码已经过测试,可正常使用 测试蓝牙打印机为 商米(SUNMI)V2S plus打印机,此设备为一 ...

  6. Android手机连接蓝牙打印机连接不上的问题

    目前碰到的情况(虽然可能是小情况,但是在解决的时候还是很费时间的): 问题描述:用Android机连接蓝牙打印机,发现华为P7可以连接,而其余的手机都连接失败,找了一上午资料也没解决这个问题. 接着我 ...

  7. android h5链接蓝牙,h5+runtime Native.js 混合APP连接蓝牙打印机

    自己摸索了一下,并参考其他人的代码,修复了原来代码存在的问题, 问题1:字符串的getBytes函数,返回null[需要通过new的方式创建字符串] 问题2:初始化打印一次,之后无法使用[不要重复调用 ...

  8. Android连接蓝牙打印机

    前言 在之前写过一篇Android操作蓝牙打印机(上),当时也是因为自己在工作中确实走了许多弯路,所以当时计划着用两篇文章详细阐述蓝牙打印的整个流程,也是对工作的一种总结,其次也可以给蓝牙打印方面感觉 ...

  9. android 蓝牙打印 js,Native.js 安卓连接蓝牙打印机【可连续打印】

    自己摸索了一下,并参考其他人的代码,并修复了原来代码存在的问题, 问题1:字符串的getBytes函数,返回null[需要通过new的方式创建字符串] 问题2:初始化打印一次,之后无法使用[不要重复调 ...

最新文章

  1. 快速记忆python函数-【速学速记】Python 列表生成式的进化:生成器
  2. 基于 MATLAB 的 PCM 编码解码实现
  3. 【368天】跃迁之路——程序员高效学习方法论探索系列(实验阶段126-2018.02.08)...
  4. Teddy's Knowledge Base--基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V2.0.0 [开源]...
  5. 手淘适配-flexible
  6. cad迷你画图2020中文版
  7. 【眼底图像数据集】视杯 视盘分割
  8. 第十一章 Caché 函数大全 $DATA 函数
  9. Kubernetes Pod Eviction 简介
  10. linux arm 无法执行二进制文件,qemu-arm无法运行arm编译的二进制文件
  11. 顾客满意度意义与作用
  12. 计算机截图方法,电脑简单又实用的截图方法推荐
  13. 【论文阅读】Learning Spatiotemporal Features with 3D Convolutional Networks
  14. 使用Google CDN的JSAPI服务来提供加载各类JS库的方法
  15. 用于自动驾驶汽车的传感器融合
  16. 二代测序linux软件,二代测序数据分析软件包大全
  17. H5调用摄像头拍照,录音及选择文件
  18. python面向对象中方法重写class Person (object):#说明Person继承object类 def __init__(self,name,age): sel
  19. 库塔计算器是电子计算机吗,机械计算器“库塔”
  20. 文件存储管理软件 php,Drawer文件管理系统

热门文章

  1. 干货满满!MES生产制造管理全流程分析
  2. 电气器件系列二十三:压差开关
  3. 平摊分析(Amortized Analysis)-- Potential Method
  4. 软考证书=获得职称?软考证书还能这样用
  5. Kettle Could not initialize class org.apache.batik.bridge.CursorManager
  6. 人工智能翻译能否取代人工翻译
  7. Marble Map
  8. Excel数据求和3种方法操作怎么简单怎么快怎么来
  9. Windows 10 如何安装adb工具并配置变量环境
  10. 顺丰测试开发工程师二面