uniapp使用蓝牙,usb,局域网,打印机打印
使用流程(支持安卓和iOS)
引入SDK
引入原生插件包地址如下
https://github.com/oldfive20250214/UniPrinterDemo
连接设备
安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API)
iOS支持ble蓝牙、局域网(参考API)
拼接模版
声明对象
const printer = uni.requireNativePlugin(“Printer”)
tspl模版用例1(打印常用指令)
printer.addSize({"width":75,"height":135});
printer.addCls();
printer.addDirection({"n":0,"m":0});
printer.addGap({"m":2,"n":0});
printer.addText({"x":50,"y":50,"font":"TSS16.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"16号字体"});
printer.addBox({"x":20,"y":20,"x_end":500,"y_end":800,"thickness":2,"radius":0});
printer.addText({"x":50,"y":100,"font":"TSS24.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"24号字体"});
printer.addText({"x":250,"y":50,"font":"TSS16.BF2","rotate":0,"xMultiple":1,"yMultiple":1,"alignment":0,"content":"16号字体"});
printer.addReverse({"x":240,"y":40,"width":200,"height":40});
printer.addBar({"x":50,"y":200,"width":300,"height":3});
printer.addBarcode({"x":50,"y":210,"codeType":"128","height":100,"style":1,"rotation":0,"narrow":2,"wide":2,"alignment":0,"content":"test123456"});
printer.addQRCode({"x":50,"y":350,"eccLevel":"L","cellWidth":7,"mode":"M","rotate":0,"model":"M1","mask":"S3","content":"test123456"})
printer.addPrint({"m":1,"n":1});
tspl模版用例2(打印图片)
printer.addSize({"width":75,"height":135});
printer.addCls();
printer.addDirection({"n":0,"m":0});
printer.addGap({"m":2,"n":0});
printer.addBitmap({"x":0,"y":0,"mode":0,"base64":base64});
printer.addPrint({"m":1,"n":1});
cpcl模版用例1(打印常用指令)
printer.cpcl_addInit({"height":600,"copys":1});
printer.cpcl_addUnit("IN-DOTS");
printer.cpcl_addWidth(600);
printer.cpcl_setMag({"w":1,"h":1});
printer.cpcl_addText({"cmd":"T","font":"1","size":"0","x":50,"y":150,"data":"24*24字体"});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":200,"data":"32*32字体"});
printer.cpcl_setMag({"w":2,"h":1});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":250,"data":"48*24字体"});
printer.cpcl_setMag({"w":3,"h":3});
printer.cpcl_addText({"cmd":"T","font":"4","size":"0","x":50,"y":300,"data":"72*72字体"});
printer.cpcl_setMag({"w":1,"h":1});
printer.cpcl_addLine({"startx":50,"starty":380,"endx":250,"endy":380,"width":5});
printer.cpcl_addBarcode({"isvb":false,"codetype":"128","width":1,"radio":"1","height":50,"x":50,"y":390,"data":"test123456"});
printer.cpcl_addQrcode({"isVQ":false,"codetype":"QR","x":50,"y":450,"m":2,"n":6,"data1":"M","data2":"A","data3":"test123456"});
printer.cpcl_form();
printer.cpcl_print();
cpcl模版用例2(打印图片)
printer.cpcl_addInit({"height":600,"copys":1});
printer.cpcl_addUnit("IN-DOTS");
printer.cpcl_addWidth(600);
printer.cpcl_addBitmap({"x":0,"y":0,"mode":0,"base64":base64});
printer.cpcl_form();
printer.cpcl_print();
esc模版用例1(打印常用指令)
printer.esc_addInit();
printer.esc_addAlign(1);
printer.esc_setCharSize({"width":0,"height":0});
printer.esc_addText("打印机居中\r\n");
printer.esc_addAlign(0);
printer.esc_setCharSize({"width":1,"height":1});
printer.esc_addText("打印机放大1-1\r\n");
printer.esc_setCharSize({"width":2,"height":2});
printer.esc_addText("打印机放大2-2\r\n");
printer.esc_setCharSize({"width":0,"height":0});
printer.esc_addLocation(10);
printer.esc_addText("text1");
printer.esc_addLocation(257);
printer.esc_addText("text2\r\n\r\n");
printer.esc_addText("width2条码宽度36mm\r\n");
printer.esc_barCode({"width":2,"height":80,"font":1,"loc":2,"m":73,"data":"width2abcd"});
printer.esc_addText("\r\n");
printer.esc_addText("width3条码宽度54mm\r\n");
printer.esc_barCode({"width":3,"height":80,"font":1,"loc":2,"m":73,"data":"width3abcd"});
printer.esc_addText("\r\n");
printer.esc_print();
printer.esc_addText("SIZE-1二维码宽度3mm\r\n");
printer.esc_qrCode({"size":1,"data":"test123456"});
printer.esc_addText("\r\nSIZE-2-二维码宽度4mm\r\n");
printer.esc_qrCode({"size":2,"data":"test123456"});
printer.esc_addText("\r\nSIZE-3-二维码宽度7mm\r\n");
printer.esc_qrCode({"size":3,"data":"test123456"});
printer.esc_addText("\r\nSIZE-4-二维码宽度10mm\r\n");
printer.esc_qrCode({"size":4,"data":"test123456"});
printer.esc_addText("\r\nSIZE-5-二维码宽度13mm\r\n");
printer.esc_qrCode({"size":5,"data":"test123456"});
printer.esc_addText("\r\nSIZE-6-二维码宽度16mm\r\n");
printer.esc_qrCode({"size":6,"data":"test123456"});
printer.esc_addText("\r\nSIZE-7-二维码宽度18mm\r\n");
printer.esc_qrCode({"size":7,"data":"test123456"});
printer.esc_addText("\r\nSIZE-8-二维码宽度21mm\r\n");
printer.esc_qrCode({"size":8,"data":"test123456"});
printer.esc_print();
printer.esc_feed(5);
esc模版用例2(打印图片)
printer.esc_addInit();
printer.esc_addBitmap({"mode":0,"base64":base64});
printer.esc_feed(5);
开始打印
安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API)
iOS支持ble蓝牙、局域网(参考API)
安卓经典蓝牙API
打开蓝牙
printer.spp_openBluetoothAdapter(result => {console.log(result);});
扫描蓝牙
printer.spp_startBluetoothDevicesDiscovery(result => {console.log(result);});
连接蓝牙
printer.spp_getConnectDevice({"address":adress},result => {
console.log(result);
});
蓝牙写入
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.spp_writeData({"base64":base64},result => {console.log(result);
});
拼接好模版后直接写入
printer.spp_writeKmPrinterData(result => {console.log(result);});
停止蓝牙扫描
printer.spp_stopBluetoothDevicesDiscovery(result => {console.log(result);});
关闭蓝牙
printer.spp_closeBluetoothAdapter(result => {console.log(result);});
蓝牙连接状态
printer.spp_isConnectClassicBT({"address":address},result => {console.log(result);});
低功耗蓝牙API(支持安卓和iOS)
打开蓝牙
printer.ble_openBluetoothAdapter(result => {console.log(result);});
扫描蓝牙
printer.ble_startBluetoothDevicesDiscovery(result => {console.log(result);});
连接蓝牙
printer.ble_getConnectDevice({"address":address},result => {console.log(result);});
蓝牙写入数据
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.ble_writeData({"base64":base64},result => {console.log(result);
});
停止蓝牙扫描
printer.ble_stopBluetoothDevicesDiscovery(result => {console.log(result);});
关闭蓝牙
printer.ble_closeBluetoothAdapter(result => {console.log(result);});
蓝牙连接状态
/** 状态对应以下数字* int STATE_CONNECTED = 2;* int STATE_CONNECTING = 1;* int STATE_DISCONNECTED = 0;* int STATE_DISCONNECTING = 3;*/
printer.ble_connectState(result => {console.log(result);});
安卓usb打印API
打开usb
printer.usb_openUsb(result => {console.log(result);});
扫描usb
printer.usb_starUsbDevicesDiscovery(result => {console.log(result);});
连接usb
printer.usb_usbConnect({"pid":pid,"vid":vid},result => {console.log(result);});
usb写入数据
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.usb_writeData({"base64":base64},result => {console.log(result);
});
usb读取数据
printer.usb_read(result => {console.log(result);});
关闭usb连接
printer.usb_close(result => {console.log(result);});
局域网打印API(支持安卓和iOS)
连接打印机
局域网打印需要手机和打印机在同一个局域网内,手机去连接打印机的ip地址和端口
printer.net_connectScoket({"host":host,"port":port},result => {console.log(result);
});
发送数据
拿到数据后再写入拿到的数据
//获取sdk生成的模版数据
printer.get_printData({},result => {var obj = JSON.parse(result);console.log(obj.data);console.log(obj.data.base64);
});
//将写入模版数据的base64
printer.net_writeData({"base64":base64},result => {console.log(result);
});
断开连接
printer.net_closeScoket(result => {console.log(result);});
TSPL指令API(支持安卓和iOS)
指定画板版宽高
/*** 设置打印模版宽高* @param width 打印宽度单位 mm int* @param height 打印高度 mm int* @return*/
addSize({"width":width,"height":height})
清空打印机画板缓存
/*** 清空打印机画板缓存* @return*/
addCls()
指定打印浓度
/*** 指定打印浓度* @param n 范围1-15 String* @return*/
addDensity(n)
指定打印速度
/*** 指定打印速度* @param n 范围1-8 String* @return*/
addSpeed(n)
生成文本指令
/*** 生成TEXT指令* @param x 起始x坐标 int* @param y 起始y坐标 int* @param font 字体名称 String* @param rotate 旋转角度 int* @param xMultiple x倍数 int* @param yMultiple y倍数 int* @param alignment 对齐方式 默认0 int* @param content 打印内容 String* @return*/addText({"x":x,"y":y,"font":font,"rotate":rotate,"xMultiple": xMultiple,"yMultiple":yMultiple,"alignment":alignment,"content":content})
生成文本块
/*** TEXT模块 支持换行* @param x 起始x坐标 int* @param y 起始y坐标 int* @param width 宽度,单位是点 int* @param height 高度,单位是点 int* @param font 字体名称 int* @param rotate 旋转角度 int* @param xMultiple x倍数 int* @param yMultiple y倍数 int* @param lineSpace 行间距 int* @param alignment 对齐 int* @param content 内容 String* @return*/
public KmPrinter crtiBlock({"x":x,"y":y,"width":width,"height":height,"font":font,"rotate":rotate,"xMultiple":xMultiple,"yMultiple":yMultiple,"lineSpace":lineSpace,"alignment":alignment,"content":content})
设置黑反打印区域
/*** 设置黑反打印区域* @param x 起点x* @param y 地点y* @param width 宽* @param height 高* @return*/
addReverse({int x, int y, int width, int height})
生成边框指令
/*** 生成边框指令* @param x x坐标起点* @param y y坐标起点* @param x_end x坐标结束点* @param y_end y坐标结束点* @param thickness 线条厚度* @param radius 边框弧度* @return*/
addBox({int x, int y, int x_end, int y_end, int thickness, int radius})
生成线条指令
/*** 生成线条指令* @param x 起始x坐标* @param y 起始y坐标* @param width 宽度* @param height 高度* @return*/
addBar({int x, int y, int width, int height})
生成条码指令
/*** 生成条码指令* @param x x坐标* @param y y坐标* @param codeType 条码类型* @param height 条码高度* @param style 文字样式* 0:不可见* 1:可见居左* 2:可见居中* 3:可见居右* @param rotation 旋转角度* @param narrow 窄条宽度* @param wide 宽条长度* @param alignment 对齐方式* @param content 条码内容* @return*/
addBarcode({int x, int y, String codeType, int height, int style, int rotation, int narrow, int wide, int alignment, String content})
生成二维码指令
/*** 生成二维码指令* @param x 起始x坐标* @param y 起始y坐标* @param eccLevel 纠错等级 {7,15,25,30}* @param cellWidth 码元宽度[1-10]* @param mode A:自动 M:手动* @param rotate 旋转角度* @param model 条码版本* M1:(默认),原始版本* M2:增强版* @param mask 掩膜版的种类,控制二维码的样式 S[0-8] 默认为S7* @param content 二维码内容* @return*/
addQRCode({int x, int y, String eccLevel, int cellWidth, String mode, int rotate, String model, String mask, String content})
生成图片指令
/*** 生成图片指令* @param x 图片x坐标* @param y 图片y坐标* @param mode 图片打印类型 0默认,正常打印 3,zlib压缩 4,zlib反白压缩* @param base64 图片的base64* @return*/
addBitmap({int x, int y, int mode, String base64})
打印模版指令
/*** 打印模版* @param m 指定要打印多少套标签。* @param n 指定每个特定标签集应该打印多少份副本* @return*/
addPrint({int m, int n})
CPCL指令API(支持安卓和iOS)
新建打印模版
/*** 新建打印模版* @param height 打印模版高度* @param copys 打印份数* @return*/
cpcl_addInit({int height, int copys})
设置单位
/*** 设置单位* @param unit IN-INCHES 度量单位英寸* IN-CENTIMETERS 度量单位厘米* IN-MILLIMETERS 度量单位毫米* IN-DOTS 度量单位为点* @return*/
cpcl_addUnit(String unit)
设置模版宽度
/*** 设置打印模版宽度* @param width* @return*/
cpcl_addWidth(int width)
设置字体宽高倍数
/*** 设置字体宽高倍数* @param w 宽度 1-3 1到3倍* @param h 高度 1-3 1到3倍* @return*/
cpcl_setMag({int w, int h})
文本指令
/*** 文本指令* @param cmd 指令类型 (逆时针旋转角度) 默认不旋转* TEXT(或T)* TEXT90(或 T90)* TEXT180(或 T180)* TEXT270(或 T270)* @param font 0-6(根据打印机文档设置)* @param size 0-6(根据打印机文档设置)* @param x x坐标* @param y y坐标* @param data 打印数据* @return*/
cpcl_addText({String cmd, String font, String size, int x, int y, String data})
线条指令
/*** 线条指令* @param startx 起点x坐标* @param starty 起点y坐标* @param endx 终点x坐标* @param endy 终点y坐标* @param width 线条宽度* @return*/
cpcl_addLine({int startx, int starty, int endx, int endy, int width})
黑反打印区域
/*** 黑反打印区域* @param startx 起点x坐标* @param starty 起点y坐标* @param endx 终点x坐标* @param endy 终点y坐标* @param width 黑反区域宽度* @return*/
cpcl_addReverse({int startx, int starty, int endx, int endy, int width})
条码指令
/*** 条码指令* @param isvb 0,1 默认0* BARCODE(B):横向打印条形码。* VBARCODE(VB) :纵向打印条形码* @param codetype 条码类型 默认 128* UPC-A: UPCA、UPCA2、UPCA5* UPC-E: UPCE、UPCE2、UPCE5* EAN/JAN-13: EAN13、EAN132、EAN135* EAN/JAN-8: EAN8、EAN82、EAN 85* Code 39: 39、39C、F39、F39C* Code 93/Ext.93: 93* Interleaved 2 of 5: I2OF5* Interleaved 2 of 5(带checksum):I2OF5C* German Post Code: I2OF5G* Code 128(自动): 128* UCC EAN 128: UCCEAN128* Codabar: CODABAR、CODABAR16* MSI/Plessy: MSI、MSI10、MSI1010、MSI1110* Postnet: POSTNET* FIM: FIM* @param width 窄条单位宽度 默认1* @param radio 宽条与窄条单位比例 默认1* @param height 条码单位高度* @param x x坐标* @param y y坐标* @param data 条码数据* @return*/
cpcl_addBarcode({boolean isvb, String codetype, int width, String radio, int height, int x, int y, String data})
二维码指令
/*** 二维码指令* @param isVQ isVQ 是否纵向* @param codetype 默认QR* @param x x坐标* @param y y坐标* @param m 选项是 1 或 2。QR Code Model 1 是原始ྟ规范,2增强版 默认1* @param n 模块单位宽度 1-32 默认6* @param data1 纠错等级 H/极高可高级别 Q/高可靠级别 M/标准级别 L/高密度级别 默认M* @param data2 字符模式 N数字 A字母数字 默认 A* @param data3 二维码内容 二维码内容* @return*/
cpcl_addQrcode({boolean isVQ, String codetype, int x, int y, int m, int n, String data1, String data2, String data3})
图片指令
/*** 图片指令* @param x* @param y* @param mode 0:CG指令模式 1:EG指令模式 3:CG指令压缩模式* @param base64 图片的base64 * @return*/
cpcl_addBitmap({int x, int y,int mode, String base64})
打印机在一页打印结束后切换至下一页顶部
/*** 打印机在一页打印结束后切换至下一页顶部* @return*/
cpcl_form()
打印模版
/*** 打印模版* @return*/
cpcl_print()
反向出纸打印模版
/*** 反向出纸打印模版* @return*/
cpcl_poprint()
ESC指令API(支持安卓和iOS)
打印机初始化
/*** 打印机初始化* @return*/
esc_addInit()
设置绝对位置
/*** 设置绝对位置* @param n 单位dot* @return*/
esc_addLocation(int n)
文本指令
/*** 文本指令* @param text* @return*/
esc_addText(String text)
对齐方式
/*** 对齐方式* @param align 0左对齐 1居中 2右对齐* @return*/
esc_addAlign(int align)
设置字符倍宽倍高
/*** 设置字符倍宽倍高* @param width 0-7 分别是1-8倍 默认0正常* @param height 0-7 分别是1-8倍 默认0正常* @return*/
esc_setCharSize({int width, int height})
打印条码
/*** 打印条码* @param width 条码宽度 2 ≤ n ≤ 6* @param height 条码高度 1 ≤ height ≤ 255* @param font 条码字体 0,48:标准 ASCII 码字符 (12 × 24) 1,49:压缩 ASCII 码字符 (9 × 17)* @param loc 条码位置显示0, 48:不打印 1, 49:条码上方 2, 50:条码下方 3, 51:条码上、下方都打印* @param m 条码类型 0 ≤ m ≤ 6 65 ≤ m ≤ 73 具体用法参考文档* @param data 条码数据* @return*/
esc_barCode({int width, int height, int font, int loc, int m, String data})
打印二维码
/*** 打印二维码* @param size 二维码大小 1-15* @param data 二维码数据* @return*/
esc_qrCode({int size, String data})
打印图片
/*** 打印图片* @param mode 默认0* @param base64 图片的base64* @return*/
esc_addBitmap({int mode, String base64})
打印并走纸多行
/*** 打印并走纸多行* @param lines 1-255 走纸的行数* @return*/
esc_feed(int lines)
打印并走纸一行
/*** 打印并走纸一行* @return*/
esc_print()
相关文章:

uniapp使用蓝牙,usb,局域网,打印机打印
使用流程(支持安卓和iOS) 引入SDK 引入原生插件包地址如下 https://github.com/oldfive20250214/UniPrinterDemo 连接设备 安卓支持经典蓝牙、ble蓝牙、usb、局域网(参考API) iOS支持ble蓝牙、局域网(参考API&…...

PQL查询和监控各类中间件
1 prometheus的PQL查询 1.1 Metrics数据介绍 prometheus监控中采集过来的数据统一称为Metrics数据,其并不是代表具体的数据格式,而是一种统计度量计算单位当需要为某个系统或者某个服务做监控时,就需要使用到 metrics prometheus支持的met…...

day1 redis登入指令
[rootlocalhost data]# redis-cli -h ip -p 6379 -a q123q123 Warning: Using a password with -a or -u option on the command line interface may not be safe. ip:6379> 以上, Bigder...

2025 年 AI 网络安全预测
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 微软和 OpenAI 宣布延长战略合作伙伴关系,加强对推进人工智能技术的承诺,这表明强大的 AI 将在未来占据主导地位。 随着人工智能 &#x…...

[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑
参考原文:[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑 还在为多台电脑需要多套键盘鼠标而烦恼吗?是不是在操控 Windows、macOS、Linux 不同系统电脑时手忙脚乱?现在,这些问题通通能解决!Deskflow 软件闪亮登…...

单片机的发展
一、引言 单片机自诞生以来,经历了四十多年的风风雨雨,从最初的工业控制逐步扩展到家电、通信、智能家居等各个领域。其发展过程就像是一场精彩的冒险,每一次技术的革新都像是在未知的海域中开辟新的航线。 二、单片机的发展历程 ÿ…...

Spring 构造器注入和setter注入的比较
一、比较说明 在 Spring 框架中,构造器注入(Constructor Injection)和 Setter 注入(Setter Injection)是实现依赖注入(DI)的两种主要方式。它们的核心区别在于依赖注入的时机、代码设计理念以及…...

uploadlabs通关思路
目录 靶场准备 复现 pass-01 代码审计 执行逻辑 文件上传 方法一:直接修改或删除js脚本 方法二:修改文件后缀 pass-02 代码审计 文件上传 1. 思路 2. 实操 pass-03 代码审计 过程: 文件上传 pass-04 代码审计 文件上传 p…...

迷你世界脚本自定义UI接口:Customui
自定义UI接口:Customui 彼得兔 更新时间: 2024-11-07 15:12:42 具体函数名及描述如下:(除前两个,其余的目前只能在UI编辑器内部的脚本使用) 序号 函数名 函数描述 1 openUIView(...) 打开一个UI界面(注意…...

【情境领导者】评估情境——准备度水平
本系列是看了《情境领导者》一书,结合自己工作的实践经验所做的学习笔记。 在文章【情境领导者】评估情境——什么是准备度-CSDN博客我们提到准备度是由能力和意愿两部分组成的。 准备度水平 而我们要怎么去评估准备度呢?准备度水平是指人们在每项工作中…...

2025 ubuntu24.04系统安装docker
1.查看ubuntu版本(Ubuntu 24.04 LTS) rootmaster:~# cat /etc/os-release PRETTY_NAME"Ubuntu 24.04 LTS" NAME"Ubuntu" VERSION_ID"24.04" VERSION"24.04 LTS (Noble Numbat)" VERSION_CODENAMEnoble IDubun…...

Android中AIDL和HIDL的区别
在Android中,AIDL(Android Interface Definition Language) 和 HIDL(HAL Interface Definition Language) 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC(进程间通信࿰…...

通过数据库网格架构构建现代分布式数据系统
在当今微服务驱动的世界中,企业在跨分布式系统管理数据方面面临着越来越多的挑战。数据库网格架构已成为应对这些挑战的强大解决方案,它提供了一种与现代应用架构相匹配的分散式数据管理方法。本文将探讨数据库网格架构的工作原理,以及如何使…...

Python基于Django的医用耗材网上申领系统【附源码、文档说明】
博主介绍:✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&…...

Python爬虫实战:一键采集电商数据,掌握市场动态!
电商数据分析是个香饽饽,可市面上的数据采集工具要不贵得吓人,要不就是各种广告弹窗。干脆自己动手写个爬虫,想抓啥抓啥,还能学点技术。今天咱聊聊怎么用Python写个简单的电商数据爬虫。 打好基础:搞定请求头 别看爬虫…...

STM32之I2C硬件外设
注意:硬件I2C的引脚是固定的 SDA和SCL都是复用到外部引脚。 SDA发送时数据寄存器的数据在数据移位寄存器空闲的状态下进入数据移位寄存器,此时会置状态寄存器的TXE为1,表示发送寄存器为空,然后往数据控制寄存器中一位一位的移送数…...

【C++】中的赋值初始化和直接初始化的区别
在C中,赋值初始化(也称为拷贝初始化)和直接初始化(也称为构造初始化)虽然常常产生相同的结果,但在某些情况下它们有不同的含义和行为。 赋值初始化(Copy Initialization) 使用等号…...

Python ❀ Unix时间戳转日期或日期转时间戳工具分享
设计一款Unix时间戳和日期转换工具,其代码如下: from datetime import datetimeclass Change_Date_Time(object):def __init__(self, date_strNone, date_numNone):self.date_str date_strself.date_num date_num# 转时间戳def datetime2timestamp(s…...

本地部署Dify及避坑指南
Dify作为开源的大模型应用开发平台,支持本地私有化部署,既能保障数据安全,又能实现灵活定制。但对于新手而言,从环境配置到服务启动可能面临诸多挑战。本文结合实战经验,手把手教你从零部署Dify,并总结高频…...

大白话CSS 优先级计算规则的详细推导与示例
大白话CSS 优先级计算规则的详细推导与示例 答题思路 引入概念:先通俗地解释什么是 CSS 优先级,让读者明白为什么要有优先级规则,即当多个 CSS 样式规则作用于同一个元素时,需要确定哪个规则起作用。介绍优先级的分类࿱…...

OpenCV计算摄影学(19)非真实感渲染(Non-Photorealistic Rendering, NPR)
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 非真实感渲染(Non-Photorealistic Rendering, NPR)是一种计算机图形学技术,旨在生成具有艺术风格或其他非现实…...

深度学习(斋藤)学习笔记(五)-反向传播2
上一篇关于反向传播的代码仅支持单变量的梯度计算,下面我们将扩展代码使其支持多个输入/输出。增加了对多输入函数(如 Add),以实现的计算。 1.关于前向传播可变长参数的改进-修改Function类 修改方法: Function用于对…...

数据库基础练习1
目录 1.创建数据库和表 2.插入数据 创建一个数据库,在数据库种创建一张叫heros的表,在表中插入几个四大名著的角色: 1.创建数据库和表 #创建表 CREATE DATABASE db_test;#查看创建的数据库 show databases; #使用db_test数据库 USE db_te…...

TypeError: Cannot create property ‘xxx‘ on string ‘xxx‘
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…...

极狐GitLab 17.9 正式发布,40+ DevSecOps 重点功能解读【三】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...

lsblk命令linux查询设备信息
lsblk命令是Linux中用于列出所有可用块设备信息的工具,它能够显示设备之间的依赖关系,但不会列出RAM盘的信息。块设备包括硬盘、闪存盘、CD-ROM等。lsblk命令包含在util-linux包中,该命令的常用参数包括: -d:仅列出磁盘…...

【智能体架构:Agent】LangChain智能体类型ReAct、Self-ASK的区别
1. 什么是智能体 将大语言模型作为一个推理引擎。给定一个任务, 智能体自动生成完成任务所需步骤, 执行相应动作(例如选择并调用工具), 直到任务完成。 2. 先定义工具:Tools 可以是一个函数或三方 API也…...

鸿蒙开发:弹性布局Flex
前言 代码案例基于Api13。 正在开发一个搜索组件,其中一个功能是针对历史搜索的内容进行展示,由于搜索的内容长度不一,需要进行流式布局展示,效果如下: 以上的效果,相信大家在很多的应用里或多或少都见到过…...

【DeepSeek】5分钟快速实现本地化部署教程
一、快捷部署 (1)下载ds大模型安装助手,下载后直接点击快速安装即可。 https://file-cdn-deepseek.fanqiesoft.cn/deepseek/deepseek_28348_st.exe (2)打开软件,点击立即激活 (3)选…...

易基因特异性R-loop检测整体研究方案
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 01.技术简述 R-loop是由DNA:RNA 杂交体和被置换的单链DNA组成的三链核酸结构,广泛参与基因转录、表观遗传调控及DNA修复等关键生物学过程。异常的R-loop积累会导致基因组不稳…...