Caysn打印机IOS平台打印开发包、接口说明文档及示例程序_20170717
打印机开发包,接口说明文档,打印示例程序下载地址:Caysn打印机IOS开发包、接口说明文档、打印示例程序_20170717
Framework版本要求:IOS8
Framework架构:armv7 armv7s arm64 i386 x86_64
Framework类型:静态库
说明文档:(压缩包里有附带接口说明文档,网页上也保留一份)
备注:
和上一版本相比
增加了MemoryIO
增加了返回值(所有的打印函数都有返回值)
增加了单据查询指令(POS_TicketSucceed)
一 概述
1 NETPrinting、BLEPrinting处理底层读写。
他们分别有自己的打开,关闭函数,有自己的回调接口。
继承自IO、重写了IO的3个重要函数。
- (bool)IsOpened;
- (int)Write:(Byte * ) buffer offset:(int) offset count:(int) count;
- (int)Read:(Byte *)buffer offset:(int)offset count:(int)count timeout:(int)timeout;
2 POSPrinting和 LabelPrinting 封装了打印指令并持有一个IO接口。
POSPrinting封装了ESC/POS指令
LabelPrinting封装了标签打印指令
他们按照指令集的格式将数据组织好,然后调用IO的Write函数进行写入数据,调用Read函数读取数据。
3 MemoryIO
该类可以将指令写到内存中(而不是发送给打印机),后续通过GetBuffer来获取打印数据。可用于调试,也可以用于其他用途(例如,将获取到的指令,通过别的接口发送出去)
二使用
② 先实例化一个BLEPrinting(为方便描述,设变量名为ble),然后调用Open函数连接到蓝牙打印机。
③ 连接成功之后,调用pos的SetIO,将让pos持有ble,这样,后续的POS_XXX系列函数,就会通过ble的Write和Read与打印机通讯。
三各个类的区别
① BLEPrinting、NETPrinting、IO这三者的区别
A) IO是父类,提供统一的接口,供POSPrinting和LabelPrinting使用。
B) BLEPrinting是用于蓝牙通讯的,除了基本的Open Close IsOpened Read Write之外,还有
scan 扫描蓝牙打印机,扫描成功会调用回调接口BLEPrintingDiscoverDelegate
BLEPrintingOpenDelegate Open成功之后会回调该接口
BLEPrintingDiscoverDelegate 扫描到打印机之后会回调该接口
BLEPrintingReceiveDelegate 收到数据之后会回调该接口
BLEPrintingDisconnectDelegate 蓝牙断开之后会回调该接口(多次调用Close不会调用)
C) NETPrinting是用于网络通讯的,除了基本的Open Close IsOpened Read Write之外,还有
NETPrintingOpenDelegate Open成功之后会回调该接口
NETPrintingDisconnectDelegate 连接断开之后会回调该接口(多次调用Close不会调用)
② POSPrinting、LabelPrinting 这两者的区别
普通热敏打印机(只支持ESC/POS指令集),只能使用POSPrinting控制打印机打印。
标签打印机(支持ESC/POS指令集、标签指令集),可以使用POSPrinting控制打印机打印,也可以用LabelPrinting控制打印机打印。
使用LabelPrinting控制打印时,PageBegin 到PagePrint之间,不能穿插POSPrinting函数。
四 函数说明
POSPrinting
普通行式打印
POS_PrintText
描述:打印文本
Syntax
- (bool)POS_PrintText:(char *)pszString x:(int)x nWidthTimes:(int)nWidthTimesnHeightTimes:(int)nHeightTimes nFontType:(int)nFontTypenFontStyle:(int)nFontStyle
Parameters
pszString
要打印的内容。UTF8编码字符串。
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x |
含义 |
-1 |
左对齐 |
-2 |
居中对齐 |
-3 |
右对齐 |
大于等于0 |
横坐标 |
nWidthScale
指定宽度放大倍数 [0,7]
nHeightScale
指定高度放大倍数 [0,7]
nFontType
字体类型
0 标准字体
1 压缩字体
nFontStyle
指定字体风格,可以为下表中的一个或者若干个(相加即可)
Value |
Meaning |
0x00 |
正常 |
0x08 |
加粗 |
0x80 |
1点粗的下划线 |
0x100 |
2点粗的下划线 |
0x200 |
倒置(只在行首有效) |
0x400 |
反显(黑底白字) |
0x1000 |
每个字符顺时针旋转 90 度 |
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
POS_PrintText并不立刻打印,需要调用POS_FeedXXX系列函数,才会把行缓冲区中的内容打印出来。
同一行不支持多种对齐方式。
POS_PrintBarcode
打印条码
Syntax
- (bool)POS_PrintBarcode:(char *)pszString x:(int)x nType:(int)nTypenUnitWidth:(int)nUnitWidth nHeight:(int)nHeight nHriFontType:(int)nHriFontTypenHriFontPosition:(int)nHriFontPosition
Parameters
pszString
条码内容
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x |
含义 |
-1 |
左对齐 |
-2 |
居中对齐 |
-3 |
右对齐 |
大于等于0 |
横坐标 |
nType
可以为以下列表中所列值之一。
Value |
Meaning |
0x41 |
UPC-A |
0x42 |
UPC-C |
0x43 |
JAN13(EAN13) |
0x44 |
JAN8(EAN8) |
0x45 |
CODE39 |
0x46 |
ITF |
0x47 |
CODEBAR |
0x48 |
CODE93 |
0x49 |
CODE 128 |
nUnitWidth
指定条码的基本元素宽度。
可以为以下列表中所列值(n)之一。
n |
单基本模块宽度 |
双基本模块宽度(离散型) |
|
窄元素宽度 |
宽元素宽度 |
||
2 |
0.25mm |
0.25mm |
0.625mm |
3 |
0.375mm |
0.375mm |
1.0mm |
4 |
0.5mm |
0.5mm |
1.25mm |
5 |
0.625mm |
0.625mm |
1.625mm |
6 |
0.75mm |
0.75mm |
1.875mm |
nHeight
条码高度
8点即1mm,填入80即可打印高度为1CM的条码。
nHriFontType
指定 HRI(Human ReadableInterpretation)字符的字体类型。
可以为以下列表中所列值之一。
Value |
Meaning |
0x00 |
标准ASCII |
0x01 |
压缩ASCII |
nHriFontPosition
指定HRI(Human ReadableInterpretation)字符的位置。
可以为以下列表中所列值之一。
Value |
Meaning |
0x00 |
不打印 |
0x01 |
只在条码上方打印 |
0x02 |
只在条码下方打印 |
0x03 |
条码上、下方都打印 |
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
部分机型不支持指定起始位置,请使用左对齐,居中对齐,右对齐进行排版布局。
POS_PrintQRCode
打印二维码(QR码)
Syntax
- (bool)POS_PrintQRcode:(char *)pszString x:(int)x nUnitWidth:(int)nUnitWidthnVersion:(int)nVersion nECCLevel:(int)nECCLevel
Parameters
pszString
二维码文本
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x |
含义 |
-1 |
左对齐 |
-2 |
居中对齐 |
-3 |
右对齐 |
大于等于0 |
横坐标 |
nUnitWidth
QR码单元宽度,范围[1,16]。
QR码单元宽度越大,QR码越大。
nVersion
QR码版本。0表示自动计算版本。
QR码版本越大,能编码的字符就越多,QR码也越大。
nECCLevel
QR码纠错等级。[1,4]
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
部分机型不支持指定起始位置,请使用左对齐,居中对齐,右对齐进行排版布局。
POS_PrintPicture
打印图片
Syntax
- (bool)POS_PrintPicture:(UIImage *)mImagex:(int)x nWidth:(int)nWidthnHeight:(int)nHeight nBinaryAlgorithm:(int)nBinaryAlgorithmnCompressMethod:(int)nCompressMethod
Parameters
mImage
要打印的图片
x
指定水平方向的起始点位置离打印区域左边界的点数。(横坐标)
支持左对齐,居中,右对齐
传入x见下表
x |
含义 |
-1 |
左对齐 |
-2 |
居中对齐 |
-3 |
右对齐 |
大于等于0 |
横坐标 |
nWidth
要打印的宽度
nHeight
要打印的高度
nBinaryAlgorithm
二值化算法
0 使用抖动算法,对彩色图片有较好的效果。
1 使用平均阀值算法,对文本类图片有较好的效果
nCompressMethod
压缩算法
0 不使用压缩算法
1 使用压缩算法
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
部分机型不支持指定起始位置,请使用左对齐,居中对齐,右对齐进行排版布局。
POS_FeedLine
Syntax
- (bool) POS_FeedLine
Parameters
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
打印机进纸一行
POS_Reset
复位打印机。会清空设置。
Syntax
- (bool) POS_Reset
Parameters
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
POS_SetRightSpacing
设置字符右边空白
Syntax
- (bool) POS_SetRightSpacing:(int)nDistance
Parameters
nDistance
字符右边空白
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
POS_SetLineHeight
设置行高
Syntax
- (bool) POS_SetLineHeight:(int)nHeight
Parameters
nHeight
行高
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
POS_SetPrintSpeed
- (bool) POS_SetPrintSpeed:(int)nSpeed
可以通过打印一张单据,测量单据的长度和所用时间,用长度/时间,即可。
POS_CutPaper
POS_Beep
- (bool) POS_Beep:(int)nBeepCountnBeepMillis:(int)nBeepMillis
POS_KickDrawer
- (bool) POS_KickDrawer:(int)nDrawerIndexnPulseTime:(int)nPulseTime
POS_QueryStatus
- (bool)POS_QueryStatus:(int)type status:(Byte *)status timeout:(int)timeoutMaxRetry:(int)MaxRetry
返回true,表明打印机状态OK。否则,打印机未联机或打印机正忙。
POS_RTQueryStatus
- (bool)POS_RTQueryStatus:(int)type status:(Byte *)status timeout:(int)timeoutMaxRetry:(int)MaxRetry
位 |
0/1 |
十六进制码 |
十进制码 |
功能 |
0 |
0 |
00 |
0 |
固定为0 |
1 |
1 |
02 |
2 |
固定为1 |
2 |
0 |
00 |
0 |
一个或两个钱箱打开 (没有钱箱的机器该位固定为零) |
1 |
04 |
4 |
两个钱箱都关闭 |
|
3 |
0 |
00 |
0 |
联机 |
1 |
08 |
8 |
脱机 |
|
4 |
1 |
10 |
16 |
固定为1 |
5,6 |
-- |
-- |
未定义 |
|
7 |
0 |
00 |
00 |
纸已撕走 |
1 |
80 |
96 |
纸未撕走 |
位 |
0/1 |
十六进制码 |
十进制码 |
功能 |
0 |
0 |
00 |
0 |
固定为0 |
1 |
1 |
02 |
2 |
固定为1 |
2 |
0 |
00 |
0 |
上盖关 |
1 |
04 |
4 |
上盖开 |
|
3 |
0 |
00 |
0 |
未按走纸键 |
1 |
08 |
8 |
按下走纸键 |
|
4 |
1 |
10 |
16 |
固定为1 |
5 |
0 |
00 |
0 |
打印机不缺纸 |
1 |
20 |
32 |
打印机缺纸 |
|
6 |
0 |
00 |
00 |
没有出错情况 |
1 |
40 |
64 |
有错误情况 |
|
7 |
0 |
00 |
0 |
固定为0 |
位 |
0/1 |
十六进制码 |
十进制码 |
功能 |
0 |
0 |
00 |
0 |
固定为0 |
1 |
1 |
02 |
2 |
固定为1 |
2 |
-- |
-- |
未定义 |
|
3 |
0 |
00 |
0 |
切刀无错误 |
1 |
08 |
8 |
切刀有错误 |
|
4 |
1 |
10 |
16 |
固定为1 |
5 |
0 |
00 |
0 |
无不可恢复错误 |
1 |
20 |
32 |
有不可恢复错误 |
|
6 |
0 |
00 |
00 |
打印头温度和电压正常 |
1 |
40 |
64 |
打印头温度或电压超出范围 |
|
7 |
0 |
00 |
0 |
固定为0 |
位 |
0/1 |
十六进制码 |
十进制码 |
功能 |
0 |
0 |
00 |
0 |
固定为0 |
1 |
1 |
02 |
2 |
固定为1 |
2,3 |
0 |
00 |
0 |
有纸 |
1 |
0C |
12 |
纸将近 |
|
4 |
1 |
10 |
16 |
固定为1 |
5,6 |
0 |
00 |
0 |
有纸 |
1 |
60 |
96 |
纸尽 |
|
7 |
0 |
00 |
0 |
固定为0 |
返回true,表明打印机通讯正常,查询的状态保存在status中。
POS_TicketSucceed
描述:询单据打印结果。
可以识别出因缺纸,过热,或其他错误导致单据打印不完整的情况。
Syntax
- (int) POS_TicketSucceed:(int)dwSendIndex timeout:(int)timeout;
Parameters
dwSendIndex
单据索引,填0或递增均可。
timeout
超时毫秒时间,根据单据情况设置即可。例如打印一张单据正常需要3s时间,那么此处可以最多等待10s,来确定单据是否打印完成。参数可以填10000
Return value
* 返回 0,表示单据打印成功。
* 返回-1,表示单据查询指令失败。失败原因:连接断开或已关闭。
* 返回-2,表示单据查询指令失败。失败原因:发送失败。
* 返回-3,表示单据查询指令失败。失败原因:打印机无响应。
* 返回-4,表示单据打印失败。原因:打印机脱机。
* 返回-5,表示单据打印不完整。原因:打印机因缺纸而中断打印。
* 返回-6,表示单据打印失败。原因:其他原因。
Remarks
部分机型不支持单据查询指令
LabelPrinting
PageBegin
描述:指示一个 Page页面的开始,并设置 Page页的大小,参考点坐标和页面旋转角度。
startx + width的范围为[1,384]。编写SDK的时候,该打印机一行的打印点数为384点。如果你不确定每行打印点数,请参考打印机规格书。一般来说有384,576,832这三种规格。
starty + height的范围[1,936]。编写SDK的时候,限制是936,但是这个值并不确定,这和打印机的资源有关。即便如此,也不建议把页高设置过大。建议页宽和页高设置和标签纸匹配即可。
页面旋转。 rotate的取值范围为{0,1}。为0,页面不旋转打印,为1,页面旋转90度打印。
PageEnd
PagePrint
DrawPlainText
- (bool)DrawPlainText:(int)startx starty:(int)starty font:(int)font style:(int)stylestr:(char *)str
定义文本起始位置 x坐标,取值范围:[0,Page_Width-1]
定义文本起始位置 y坐标,取值范围:[0,Page_Height-1]
选择字体,有效值范围为{16, 24, 32, 48, 64, 80,96},当前打印机只可以使用24。
DrawLine
直线段起始点 x坐标值,取值范围:[0,Page_Width-1]。
直线段起始点 y坐标值,取值范围:[0,Page_Height-1]。
直线段终止点 x坐标值,取值范围:[0,Page_Width-1]。
直线段终止点 y坐标值,取值范围:[0,Page_Height-1]。
DrawBox
矩形框左上角x坐标值,取值范围:[0, Page_Width-1]。
矩形框左上角y坐标值。取值范围:[0, Page_Height-1]。
矩形框右下角x坐标值。取值范围:[0, Page_Width-1]。
矩形框右下角 y坐标值。取值范围:[0, Page_Height-1]。
矩形框线颜色,曲直范围{0,1}。当 Color = 1时,绘制黑色矩形宽,Color = 0时,绘制白色矩形框。
Returnvalue
返回true表示写入成功;返回false表示写入失败。
Remarks
DrawRectangel
- (bool)DrawRectangel:(int)left top:(int)top right:(int)right bottom:(int)bottomcolor:(int)color
矩形块左上角 x坐标值,取值范围:[0, Page_Width-1]。
矩形块左上角 y坐标值。取值范围:[0, Page_Height-1]。
矩形块右下角 x坐标值。取值范围:[0, Page_Width-1]。
矩形块右下角 y坐标值。取值范围:[0, Page_Height-1]。
矩形块颜色,取值范围:{0, 1}。当 Color为 1时,矩形块为黑色。当 Color为 0时,矩形块为白色。
DrawBarcode
条码左上角 x坐标值,取值范围:[0, Page_Width-1]。
条码左上角 y坐标值,取值范围:[0, Page_Height-1]。
4 CODE39 1- 48-57,65-90,32,36,37,43,45,46,47
6 CODABAR 1- 48-57,65-68,36,43,45,46,47,58
11 "128M",//可以根据数据切换编码模式-> !096- !105
13 "25C",//25C Check use mod 10->奇数先在前面补0,10的倍数-[(奇数位的数字之和<从左至右)+(偶数位数字之和)*3]
14 "39C", //39碼的檢查碼必須搭配「檢查碼相對值對照表」,如表所示,將查出的相對值累加後再除以43,得到的餘數再查出相對的編碼字元,即為檢查碼字元。
15 "39",//Full ASCII 39 Code, 特殊字符用两个可表示的字来表示, 39C同样是包含Full ASCII,注意宽窄比处理
16 "EAN13+2",// 附加码与主码间隔 7-12单位,起始为 1011间隔为 01,(_0*10+_1) Mod 4-> 0--AA 1--AB 2--BA 3--BB
20 "POST", // 详见规格说明,是高低条码,不是宽窄条码
28 "ITF14",// 25C 变种,第一个数前补0,检查码计算时需扣除最后一个数,但仍填充为最尾端
Width取值多级条码单位宽度(mm)二进制条码窄线条宽度二进制条码宽线条宽度
DrawQRCode
QRCode 码左上角 x坐标值,取值范围:[0,Page_Width-1]。
QRCode 码左上角 y坐标值,取值范围:[0, Page_Height-1]。
指定字符版本。取值范围:[0,20]。当 version为 0时,打印机根据字符串长度自动计算版本号。
QRCode 码码块,取值范围:[1, 4]。各值定义与一维条码指令输入参数UniWidth相同。
QRCode 码旋转角度,取值范围:[0, 3]。各值定义与一维条码指令输入参数Rotate相同。
DrawPDF417
PDF417 码左上角 x坐标值,取值范围:[0,Page_Width-1]。
PDF417 码左上角 y坐标值,取值范围:[0, Page_Height-1]。
ColNum 为列数,表述每行容纳多少码字。一个码字为 17*UnitWidth个点。行数由打印机自动产生,行数范围限定为3~90。ColNum的取值范围:[1,30]。
PDF417 码码块,取值范围:[1, 3]。各值定义与一维条码指令输入参数 UniWidth相同。
PDF417 码旋转角度,取值范围:[0, 3]。各值定义与一维条码指令输入参数 Rotate相同。
DrawBitmap
位图左上角 x坐标值,取值范围:[0,Page_Width]。
位图左上角 y坐标值,取值范围:[0,Page_Height]。
width
位图的像素宽度。
height
位图的像素高度。
style
位图打印特效,各位定义如下:
位 定义
0 反白标志位,置 1位图反白打印,清零正常打印。
[2:1] 旋转标志位:
00旋转 0°;
01 旋转 90°;
10 旋转 180°;
11 旋转 270°
[7:3] 保留。
[11:8] 位图宽度放大倍数。
[12:15]位图高度放大倍数。
pdata
位图的点阵数据。
Returnvalue
返回true表示写入成功;返回false表示写入失败。
Remarks
DrawBitmap
描述:在 Page页指定位置绘制位图。
Syntax
- (bool)DrawBitmap:(int)startx starty:(int)starty width:(int)width height:(int)heightstyle:(int)style img:(UIImage *)img nBinaryAlgorithm:(int)nBinaryAlgorithm
Parameters
startx
位图左上角 x坐标值,取值范围:[0, Page_Width]。
starty
位图左上角 y坐标值,取值范围:[0, Page_Height]。
width
要打印的宽度。
height
要打印的素高度。
style
位图打印特效,各位定义如下:
位 定义
0 反白标志位,置 1位图反白打印,清零正常打印。
[2:1] 旋转标志位:
00旋转 0°;
01 旋转 90°;
10 旋转 180°;
11 旋转 270°
[7:3] 保留。
[11:8] 位图宽度放大倍数。
[12:15]位图高度放大倍数。
img
要打印的图片。
nBinaryAlgorithm
二值化算法
0 使用抖动算法,对彩色图片有较好的效果。
1 使用平均阀值算法,对文本类图片有较好的效果
Return value
返回true表示写入成功;返回false表示写入失败。
Remarks
Caysn打印机IOS平台打印开发包、接口说明文档及示例程序_20170717相关推荐
- Caysn打印机IOS平台打印开发包及示例程序_20170610
打印机开发包,接口说明文档,打印示例程序:Caysn打印机IOS开发包.文档.示例程序_20170610 系统要求:IOS8 CPU架构:armv7 armv7s arm64 说明文档:(压缩包里有附 ...
- Caysn打印机IOS平台打印示例及接口说明文档 - 20161008
打印示例下载地址: Caysn打印机IOS打印示例程序 - sample_20161008 接口说明文档下载地址: Caysn打印机IOS开发包接口说明文档 - PrinterLibs For IOS ...
- IOS证件识别开发包
ios安卓ocr识别开发包即是OCR识别软件,通过OCR软件对图片中的文字进行提取识别,转换成可检索的数据.但ios安卓ocr识别开发包其实分的非常细,下面介绍下ios安卓ocr识别开发包. io ...
- *** wechat-php-sdk 微信公众平台php开发包
wechat-php-sdk 微信公众平台php开发包,细化各项接口操作,支持链式调用,欢迎Fork此项目 weixin developer SDK. 项目地址:https://github.com/ ...
- 【幻灯片分享】iOS平台上开发音视频处理 | 盛大微酷 赵志猛 | iOS DevCamp
专业视频处理算法在移动开发中的优化:<iOS平台上开发音视频处理>| 盛大微酷赵志猛 | iOS DevCamp 主题简介:视频处理技术,已经在专业设备上得到了几十年的发展.但是这些处理方 ...
- 电商平台订单获取API接口文档
电商平台原始订单推送(不包含订单敏感信息) 描述 用于点三OMS向外部ERP推送电商平台原始订单信息,原始订单状态变化.地址变更.备注修改.旗帜变化.退款变化等都会触发推送. 电商平台订单获取API接 ...
- 迅雷云加速开放平台接口说明文档
迅雷云加速开放平台接口说明文档 全局接口 任务接口 接口详细说明 XL_Init BOOLXL_Init(void) XL_UnInit BOOL XL_UnInit(void) XL_CreateT ...
- 京东广告联盟android,京东APP联盟SDKAndroid版接口说明文档1.0.PDF
京东APP联盟SDKAndroid版接口说明文档1.0 京东APP 联盟SDK Android 版接口说明文档1.0 1. 嵌入SDK 1.1 添加SDK Android Studio 环境:菜单Ne ...
- CaysnPrinter - Windows平台开发包打印示例程序及接口说明文档 - 20170531
CaysnPrinter打印示例程序:CaysnPrinter打印机开发包示例程序_20170531 CaysnPrinter打印示例程序C#版:CaysnPrinter打印机开发包示例程序_Samp ...
最新文章
- web.xml里filter-mapping中的dispatcher作用
- 《那些年啊,那些事——一个程序员的奋斗史》——61
- 深度优先搜索(DFS)算法
- mysql: order by, group by ,having, select, where 执行 顺序
- 深入理解es module
- 线程通信之多个线程循环执行,(A线程执行5次,B线程执行10次,C线程执行15次)...
- Android Realm数据库
- Hive编程指南pdf
- 金融数据分析(十)人均国内生产总值的增长率
- 云知声开源全栈语音交互方案
- AnimeGAN v2:动漫风格化GAN
- Unity3D教学 开发简单版第一人称射击游戏 可以多人联机(附源码)
- API接口是什么?(京东API详解)
- 这份整理的图解Java(全彩版)火了,完整PDF开放下载
- day29 | 216.组合总和III 17.电话号码的字母组合
- 获取已安装或未安装的apk签名
- 电影 -- 碟中谍4
- HDMI特性之Audio Return Channel Control
- 计算机管理不小心删除了e盘,【J.C.X】计算机的D盘和E盘突然消失. 小编帮你找回来...
- 序列化和json对比