Objective-C
1-OC Framework下载地址:
2-导入 framework
-
必须导入:adapter.framework、father.framework
-
按需导入:cpcl.framework、esc.framework、tspl.framework。
3-根据打印机选择指令:
- ESC 指令 导入 IbridgeBleApi;
- CPCL 指令 导入 FscBleApi;
- TSPL 指令 导入 applebleApi.
4.Demo 下载地址
demo
5.How to use
5.1-TSPL
#import <tspl/tspl.h>
#import <tspl/GenericTSPL.h>
@interface TSPLVC ()
@property (nonatomic , strong) CBPeripheral *currentConnectedPeripheral;
@property (nonatomic , strong) BasicTSPL *basicTspl;
@property (nonatomic , strong) Lifecycle *lifeCycle;
@end
@implementation TSPLVC
- (void)viewDidLoad {
[super viewDidLoad];
// 初始化
_lifeCycle = [[Lifecycle alloc]init];
_lifeCycle.connectedDevice(self.device);
_basicTspl = [[BasicTSPL alloc]init];
_basicTspl.BasicTSPL(_lifeCycle, TSPLPrinter_GENERIC);
__weak typeof (self) weakSelf = self;
// 接收打印机回传
_basicTspl.read = ^(NSData * _Nonnull revData, NSError * _Nullable error) {
NSLog(@"----:%@",revData);
};
// 连接成功
_basicTspl.bleDidConnectPeripheral = ^(CBPeripheral * _Nonnull peripheral) {};
// 连接断开
_basicTspl.bleDidDisconnectPeripheral = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error) {};
// 连接失败
_basicTspl.bleDidFailToConnectPeripheral = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error) {};
}
// 打印
-(void)printModelAction{
//使用指令对象tspl来拼接指令
//一个完整的打印指令一定要有page()开头和print()结尾
_basicTspl.page([[TPage alloc]init].width(100).height(180))
.direction([[TDirection alloc]init].direction(UP_OUT).mirror(NO_MIRROR))
.gap(true)
.cut(true)
.speed(6)
.density(6)
.cls()
.bar([[TBar alloc]init].x(300).y(10).width(4).height(90))
.bar([[TBar alloc]init].x(30).y(100).width(740).height(4))
.bar([[TBar alloc]init].x(30).y(880).width(740).height(4))
.bar([[TBar alloc]init].x(30).y(1300).width(740).height(4))
.text([[TText alloc]init].x(400).y(25).font(TSS24).xmulti(3).ymulti(3).content(@"上海浦东"))
.text([[TText alloc]init].x(30).y(120).font(TSS24).xmulti(1).ymulti(1).content(@"发 件 人:张三 (电话 874236021)"))
.text([[TText alloc]init].x(30).y(150).font(TSS24).xmulti(1).ymulti(1).content(@"发件人地址:广州省 深圳市 福田区 思创路123号\"工业园\"1栋2楼"))
.text([[TText alloc]init].x(30).y(200).font(TSS24).xmulti(1).ymulti(1).content(@"收 件 人:李四 (电话 13899658435)"))
.text([[TText alloc]init].x(30).y(230).font(TSS24).xmulti(1).ymulti(1).content(@"收件人地址:上海市 浦东区 太仓路司务小区9栋1105室"))
.text([[TText alloc]init].x(30).y(700).font(TSS16).xmulti(1).ymulti(1).content(@"各類郵件禁寄、限寄的範圍,除上述規定外,還應參閱「中華人民共和國海關對"))
.text([[TText alloc]init].x(30).y(720).font(TSS16).xmulti(1).ymulti(1).content(@"进出口邮递物品监管办法”和国家法令有关禁止和限制邮寄物品的规定,以及邮"))
.text([[TText alloc]init].x(30).y(740).font(TSS16).xmulti(1).ymulti(1).content(@"寄物品的规定,以及邮电部转发的各国(地区)邮 政禁止和限制。"))
.text([[TText alloc]init].x(30).y(760).font(TSS16).xmulti(1).ymulti(1).content(@"寄件人承诺不含有法律规定的违禁物品。"))
.barcode([[TBarCode alloc]init].x(80).y(300).codeType(CODE_128).height(90).showType(SHOW_CENTER).cellwidth(4).content(@"873456093465"))
.barcode([[TBarCode alloc]init].x(550).y(910).codeType(CODE_128).height(50).showType(SHOW_CENTER).cellwidth(2).content(@"873456093465"))
.box([[TBox alloc]init].startX(40).startY(500).endX(340).endY(650).width(4).radius(20))
.text([[TText alloc]init].x(60).y(520).font(TSS24).xmulti(1).ymulti(1).content(@"寄件人签字:"))
.text([[TText alloc]init].x(130).y(625).font(TSS32).xmulti(1).ymulti(1).content(@"2015-10-30 09:09"))
.text([[TText alloc]init].x(50).y(1000).font(TSS32).xmulti(2).ymulti(3).content(@"广东 ---- 上海浦东"))
.circle([[TCircle alloc]init].startX(670).startY(1170).width(6).radius(100))
.text([[TText alloc]init].x(670).y(1170).font(TSS24).xmulti(3).ymulti(3).content(@"碎"))
.qrcode([[TQRCode alloc]init].x(620).y(620).correctLevel(H).cellWidth(4).content(@"www.qrprt.com www.qrprt.com www.qrprt.com"))
.print();
//最后使用write()方法把指令写入打印机
_basicTspl.write();
}
@end
5.2-CPCL
// 状态回调
{
_basicCPCL.read = ^(NSData * _Nonnull revData, NSError * _Nullable error) {};
// 连接成功
_basicCPCL.bleDidConnectPeripheral = ^(CBPeripheral * _Nonnull peripheral) {};
// 连接断开
_basicCPCL.bleDidDisconnectPeripheral = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error) {};
// 连接失败
_basicCPCL.bleDidFailToConnectPeripheral = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error) {};
}
// 打印
{
//使用指令对象cpcl来拼接指令
//一个完整的打印指令一定要有page()开头和print()结尾
_basicCPCL.page([[CPage alloc]init].width(608).height(1040).num(sampleNumber))
.box([[CBox alloc]init].topLeftX(0).topLeftY(1).bottomRightX(598).bottomRightY(664).width(2))
.line([[CLine alloc]init].startX(0).startY(88).endX(598).endY(88).lineWidth(2))
.line([[CLine alloc]init].startX(0).startY(88+128).endX(598).endY(88+128).lineWidth(2) )
.line([[CLine alloc]init].startX(0).startY(88+128+80).endX(598).endY(88+128+80).lineWidth(2) )
.line([[CLine alloc]init].startX(0).startY(88+128+80+144).endX(598-56-16).endY(88+128+80+144).lineWidth(2) )
.line([[CLine alloc]init].startX(0).startY(88+128+80+144+128).endX(598-56-16).endY(88+128+80+144+128).lineWidth(2) )
.line([[CLine alloc]init].startX(52).startY(88+128+80).endX(52).endY(88+128+80+144+128).lineWidth(2) )
.line([[CLine alloc]init].startX(598-56-16).startY(88+128+80).endX(598-56-16).endY(664).lineWidth(2) )
.bar([[CBar alloc]init].x(120).y(100).lineWidth(1).height(80).content(@"1234567890").codeType(CODE128).codeRotation(CCODEROTATION_0))
.text([[CText alloc]init].textX(120+12).textY(88+20+76).font(TSS24).content(@"1234567890") )
.text([[CText alloc]init].textX(12).textY(88 +128 + 80 +32).font(TSS24).content(@"收") )
.text([[CText alloc]init].textX(12).textY(88 +128 + 80 +96).font(TSS24).content(@"件") )
.text([[CText alloc]init].textX(12).textY(88+128+80+144+32).font(TSS24).content(@"发") )
.text([[CText alloc]init].textX(12).textY(88+128+80+144+80).font(TSS24).content(@"件") )
.text([[CText alloc]init].textX(52+20).textY(88+128+80+144+128+16).font(TSS24).content(@"签收人/签收时间") )
.text([[CText alloc]init].textX(430).textY(88+128+80+144+128+36).font(TSS24).content(@"月") )
.text([[CText alloc]init].textX(490).textY(88+128+80+144+128+36).font(TSS24).content(@"日") )
.text([[CText alloc]init].textX(52+20).textY(88+128+80+24).font(TSS24).content(@"收姓名 13777777777") )
.text([[CText alloc]init].textX(52+20).textY(88 +128+80+24+32).font(TSS24).content(@"南京市浦口区威尼斯水城七街区七街区") )
.text([[CText alloc]init].textX(52+20).textY(88+128+80+144+24).font(TSS24).content(@"名字 13777777777") )
.text([[CText alloc]init].textX(52+20).textY(88+128+80+144+24+32).font(TSS24).content(@"南京市浦口区威尼斯水城七街区七街区") )
.text([[CText alloc]init].textX(598-56-5).textY(88 +128+80+104).font(TSS24).content(@"派") )
.text([[CText alloc]init].textX(598-56-5).textY(88 +128+80+160).font(TSS24).content(@"件") )
.text([[CText alloc]init].textX(598-56-5).textY(88 +128+80+208).font(TSS24).content(@"联") )
.box([[CBox alloc]init].topLeftX(0).topLeftY(1).bottomRightX(598).bottomRightY(968).width(2) )
.line([[CLine alloc]init].startX(0).startY(696+80).endX(598).endY(696+80).lineWidth(2) )
.line([[CLine alloc]init].startX(0).startY(696+80+136).endX(598-56-16).endY(696+80+136).lineWidth(2) )
.line([[CLine alloc]init].startX(52).startY(80).endX(52).endY(696+80+136).lineWidth(2) )
.line([[CLine alloc]init].startX(598-56-16).startY(80).endX(598-56-16).endY(968).lineWidth(2) )
.bar([[CBar alloc]init].x(320).y(696-4).lineWidth(1).height(56).content(@"1234567890").codeType(CODE128).codeRotation(CCODEROTATION_0) )
.text([[CText alloc]init].textX(320+8).textY(696+54).font(TSS16).content(@"1234567890") )
.text([[CText alloc]init].textX(12).textY(696+80+35).font(TSS24).content(@"发") )
.text([[CText alloc]init].textX(12).textY(696+80+84).font(TSS24).content(@"件") )
.text([[CText alloc]init].textX(52+20).textY(696+80+28).font(TSS24).content(@"名字 13777777777") )
.text([[CText alloc]init].textX(52+20).textY(696+80+28+32).font(TSS24).content(@"南京市浦口区威尼斯水城七街区七街区") )
.text([[CText alloc]init].textX(598-56-5).textY(696+80+50).font(TSS24).content(@"客") )
.text([[CText alloc]init].textX(598-56-5).textY(696+80+82).font(TSS24).content(@"户") )
.text([[CText alloc]init].textX(598-56-5).textY(696+80+106).font(TSS24).content(@"联") )
.text([[CText alloc]init].textX(12+8).textY(696+80+136+22-5).font(TSS24).content(@"物品:几个快递 12kg") )
.box([[CBox alloc]init].topLeftX(598-56-16-120).topLeftY(696+80+136+11).bottomRightX(598-56-16-16).bottomRightY(968-11).width(2) )
.text([[CText alloc]init].textX(598-56-16-120+17).textY(696+80+136+11+6).font(TSS24).content(@"已验视") )
.print([[CPrint alloc]init] ).feed();
//最后使用write()方法把指令写入打印机
_basicCPCL.write();
}
5.3-ESC
// 状态回调
{
// 连接成功
_basicESC.bleDidConnectPeripheral = ^(CBPeripheral * _Nonnull peripheral) {};
// 连接断开
_basicESC.bleDidDisconnectPeripheral = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error) {};
// 连接失败
_basicESC.bleDidFailToConnectPeripheral = ^(CBPeripheral * _Nonnull peripheral, NSError * _Nonnull error) {};
}
// 写入数据
{
//使用指令对象esc来拼接指令
//最后使用write()方法把指令写入打印机
_basicESC.batteryVolume().write();
ReadOptions *options = [[ReadOptions alloc]init].timeout(1000);
options.callBack = ^(NSData * _Nonnull revData, NSError * _Nullable error) {
if(error) return;
[self readData:revData];
};
[_basicESC read:options];
}