WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印uniapp插件使用说明

插件地址:WUP-MY-POS-PRINTER 旻佑热敏打印机票据打印安卓库

简介

  1. 本插件主要用于旻佑热敏打印机打印票据,不支持标签打印。
  2. 适用于旻佑的各型支持票据打印的热敏打印机。
  3. 本插件开发时使用的打印机型号为MY-805嵌入式面板打印机,其他型号请先试用测试。
  4. 使用本插件需要在Android 5.0以上设备使用。
  5. 插件支持uniapp的vue2 和 vue3 版本;uniapp x没做支持,可自行测试。
  6. 初始化流程:获取设备-打开设备-设置多字节模式及编码。
    在这里插入图片描述
    在这里插入图片描述

方法

方法引入

import { sayHi, 需引入的其他方法 } from "@/uni_modules/WUP-MY-POS-PRINTER";

插件测试方法

sayHi("wup-my-pos-printer", function (res) {
	console.log("sayHi", res)
})

枚举本地USB打印设备

enumUsb((res) => {
	console.log("enumUsb", res)
})

打开USB设备

  • usbDeviceStr:枚举的USB列表的中USB设备名
  • autoReplyMode:自动回传模式 0,不开启;1,开启
openUsb(usbDeviceStr, autoReplyMode, (res) => {
	console.log("openUsb", res)
})

全切纸

打印时推荐使用posFeedAndHalfCutPaper,不推荐打印后再单独调用,可能出现切纸位置不准确问题。

fullCutPaper((res) => {
	console.log("fullCutPaper", res)
})

半切纸

打印时推荐使用posFeedAndHalfCutPaper,不推荐打印后再单独调用,可能出现切纸位置不准确问题。

halfCutPaper((res) => {
	console.log("halfCutPaper", res)
})

设置打印机为多字节模式及编码

  • encoding:编码 0,GBK;1,UTF8;3,BIG5;4,ShiftJIS;5,EUCKR
setMultiByteEncoding(encoding, (res) => {
	that.msg = JSON.stringify(res)
	console.log("setMultiByteEncoding", res)
})

获取开发包版本字符串

getLibraryVersion((res) => {
	console.log("getLibraryVersion", res)
})

查询打印机实时状态

  • timeout:查询等待超时时间(毫秒)
posQueryRTStatus(timeout, function (res) {
	console.log("posQueryRTStatus", res)
})

蜂鸣器鸣叫

  • nBeepCount:鸣叫次数
  • nBeepMs:蜂鸣毫秒时间,取值范围[100,900]。取整到百毫秒。
posBeep(nBeepCount, nBeepMs, function (res) {
	that.msg = JSON.stringify(res)
	console.log("posQueryRTStatus", res)
})

走纸到切刀位置并半切纸

posFeedAndHalfCutPaper(function (res) {
	console.log("posFeedAndHalfCutPaper", res)
})

打印机进纸指定行数

  • numLines:要进的行数
posFeedLine(numLines, function (res) {
	console.log("posFeedLine", res)
})

打印机进纸指定点数

  • numDots:要进的点数
posFeedDot(numDots, function (res) {
	console.log("posFeedDot", res)
})

打印机打印自检页

posPrintSelfTestPage(function (res) {
	console.log("posPrintSelfTestPage", res)
})

打印文本

  • str:要打印的字符串
posPrintText(str, function (res) {
	console.log("posPrintText", res)
})

打印一维条码

  • nBarcodeType:标识条码类型 65,UPCA;66,UPCE;67,EAN13;68,EAN8;69,CODE39;70,ITF;71,CODEBAR;72,CODE93;73,CODE128;
  • str:一维条码内容
posPrintBarcode(nBarcodeType, str, function (res) {
	console.log("posPrintBarcode", res)
})

打印 CODE128 条码(该函数自动切换编码,以便节省空间)

  • str:一维条码内容
posPrintBarcodeCode128Auto(str, function (res) {
	console.log("posPrintBarcodeCode128Auto", res)
})

打印二维码

  • nVersion:(不知道用途默认0就好)指定字符版本。取值范围:[0,16],当 version 为 0 时,打印机根据字符串长度自动计算版本号。
  • nECCLevel:ECC纠错等级 1,L:7%,低纠错,数据多;2,M:15%,中纠错;3,Q:优化纠错;4,H:30%,最高纠错,数据少。
  • str:要打印的二维码
posPrintQRCode(nVersion, nECCLevel, str, function (res) {
	console.log("posPrintQRCode", res)
})

打印二维码(Epson指令)

  • nQRCodeUnitWidth:QRCode 码码块宽度,取值范围:[1, 16]
  • nECCLevel:ECC纠错等级 1,L:7%,低纠错,数据多;2,M:15%,中纠错;3,Q:优化纠错;4,H:30%,最高纠错,数据少。
  • str:要打印的二维码
posPrintQRCode(nVersion, nECCLevel, str, function (res) {
	console.log("posPrintQRCode", res)
})

打印二位码(Image指令)

  • nVersion:(不知道用途默认0就好)指定字符版本。取值范围:[0,16],当 version 为 0 时,打印机根据字符串长度自动计算版本号。
  • nQRCodeUnitWidth:QRCode 码码块宽度,取值范围:[1, 16]
  • nECCLevel:ECC纠错等级 1,L:7%,低纠错,数据多;2,M:15%,中纠错;3,Q:优化纠错;4,H:30%,最高纠错,数据少。
  • compression_method:最终打印数据的压缩方式 0,不压缩;1,一级压缩;2,二级压缩。
  • str:要打印的二维码
posPrintQRCodeUseImageCmd(nVersion, nQRCodeUnitWidth, nECCLevel, compression_method, str,  function (res) {
	console.log("posPrintQRCodeUseImageCmd", res)
})

打印 PDF417 条码

  • columnCount:列数,取值范围[0,30]
  • rowCount:行数,取值范围 0,[3,90]
  • unitWidth:模块单元宽度,取值范围[2,8]
  • rowHeight:行高,取值范围[2,8]
  • nECCLevel:指定纠错等级。取值范围:[0,8]
  • dataProcessingMode:数据处理模式。0,选择标准 PDF417;1,选择截断 PDF417
  • str:要打印的 PDF417 码
posPrintPDF417BarcodeUseEpsonCmd(columnCount, rowCount, unitWidth, rowHeight, nECCLevel, dataProcessingMode, str,  function (res) {
	console.log("posPrintPDF417BarcodeUseEpsonCmd", res)
})

  • dstw:要打印的宽度
  • dsth:要打印的高度
  • binaryzation_method:图片二值化算法。0 表示抖动算法,1 表示阀值算法,2 表示误差扩散法。具体效果请测试查看。
  • compression_method:最终打印数据的压缩方式,各值定义如下 0,不压缩;1,一级压缩;2,二级压缩
  • pszFile:图片的路径,插件assets目录下路径,不需含assets
posPrintRasterImageFromFile(dstw, dsth, binaryzation_method, compression_method, pszFile, function (res) {
	console.log("posPrintRasterImageFromFile", res)
})

打印一条水平线

  • nLineStartPosition:线段起点位置
  • nLineEndPosition:线段终点位置
posPrintHorizontalLine(nLineStartPosition, nLineEndPosition,  function (res) {
	console.log("posPrintHorizontalLine", res)
})

打印一条水平线(可设置粗细)

  • nLineStartPosition:线段起点位置
  • nLineEndPosition:线段终点位置
  • nLineThickness:线段粗细
posPrintHorizontalLineSpecifyThickness(nLineStartPosition, nLineEndPosition, nLineThickness, function (res) {
	console.log("posPrintHorizontalLineSpecifyThickness", res)
})

打印机复位

posResetPrinter(function (res) {
	console.log("posResetPrinter", res)
})

设置打印速度(部分机型支持)

  • nSpeed:打印速度,单位毫米每秒
posSetPrintSpeed(nSpeed, function (res) {
	console.log("posSetPrintSpeed", res)
})

设置打印浓度(部分机型支持)

  • nDensity:设置打印浓度[0,15]
posSetPrintDensity(nDensity, function (res) {
	console.log("posSetPrintDensity", res)
})

  • 设置打印机为单字节编码(正常情况下不推荐使用)
posSetSingleByteMode(function (res) {
	console.log("posSetSingleByteMode", res)
})

设置打印机字符集

  • nCharacterSet:打印机字符集,范围[0,15]
posSetCharacterSet(nCharacterSet, function (res) {
	console.log("posSetCharacterSet", res)
})

设置字符代码页

  • nCharacterCodepage:字符代码页,范围[0,255]
posSetCharacterCodepage(nCharacterCodepage, function (res) {
	console.log("posSetCharacterCodepage", res)
})

设置打印移动单位

  • nHorizontalMovementUnit:水平移动单位
  • nVerticalMovementUnit:垂直移动单位
  • 移动单位设置为 200,则 1mm=8 点。
posSetMovementUnit(nHorizontalMovementUnit, nVerticalMovementUnit, function (res) {
	console.log("posSetMovementUnit", res)
})

设置打印区域左边空白

  • nLeftMargin:左边空白
posSetPrintAreaLeftMargin(nLeftMargin, function (res) {
	console.log("posSetPrintAreaLeftMargin", res)
})

设置打印区域宽度

  • nWidth:打印区域宽度
posSetPrintAreaWidth(nWidth, function (res) {
	console.log("posSetPrintAreaWidth", res)
})

设置横向绝对打印位置

  • nPosition:打印位置
posSetHorizontalAbsolutePrintPosition(nPosition, function (res) {
	console.log("posSetHorizontalAbsolutePrintPosition", res)
})

设置横向相对打印位置

  • nPosition:打印位置
posSetHorizontalRelativePrintPosition(nPosition, function (res) {
	console.log("posSetHorizontalRelativePrintPosition", res)
})

设置打印对齐方式

  • nAlignment:打印对齐方式 0,左对齐;1,中对齐;2,右对齐
posSetAlignment(nAlignment, function (res) {
	console.log("posSetAlignment", res)
})

设置文本放大倍数

  • nWidthScale:宽度放大倍数
  • nHeightScale:高度放大倍数
posSetTextScale(nWidthScale, nHeightScale, function (res) {
	console.log("posSetTextScale", res)
})

设置英文字符字体类型

  • nFontType:英文字符字体类型 0,字型 A(12x24);1,字型 B(9x17)
posSetAsciiTextFontType(1, function (res) {
	console.log("posSetAsciiTextFontType", res)
})

设置文本加粗打印

  • nBold:0,不加粗;1,加粗
posSetTextBold(nBold, function (res) {
	console.log("posSetTextBold", res)
})

设置文本下划线

  • nUnderline:文本下划线 0,无下划线;1,1点下划线;2,2点下划线;
posSetTextUnderline(nUnderline, function (res) {
	console.log("posSetTextUnderline", res)
})

设置文本倒置打印

  • nUpsideDown:0,不倒置;1,倒置
posSetTextUpsideDown(nUpsideDown, function (res) {
	console.log("posSetTextUpsideDown", res)
})

设置黑白反显

  • nWhiteOnBlack:黑白反显 0,不黑白反显;1,黑白反显
posSetTextWhiteOnBlack(nWhiteOnBlack, function (res) {
	console.log("posSetTextWhiteOnBlack", res)
})

设置文本旋转 90 度打印

  • nRotate:设旋转打印 0,不旋转打印;1,旋转90°打印
posSetTextRotate(nRotate, function (res) {
	console.log("posSetTextRotate", res)
})

设置行高

  • nLineHeight:行高,范围[1,255]
posSetTextLineHeight(nLineHeight, function (res) {
	console.log("posSetTextLineHeight", res)
})

设置 ASCII 字符右边空白

  • nSpacing:右边空白,范围[1,255]
posSetAsciiTextCharRightSpacing(nSpacing, function (res) {
	console.log("posSetAsciiTextCharRightSpacing", res)
})

设置汉字文本字符左边空白和右边空白

  • nLeftSpacing:左边空白,范围[1,255]
  • nRightSpacing:右边空白,范围[1,255]
posSetKanjiTextCharSpacing(nLeftSpacing, nRightSpacing, function (res) {
	console.log("posSetKanjiTextCharSpacing", res)
})

设置条码和二维码单元宽度

  • nBarcodeUnitWidth:条码单元宽度,取值范围:[1,6]
posSetBarcodeUnitWidth(nBarcodeUnitWidth, function (res) {
	console.log("posSetBarcodeUnitWidth", res)
})

设置条码高度

  • nBarcodeHeight:定义条码高度。取值范围:[1,255]
posSetBarcodeHeight(nBarcodeHeight, function (res) {
	console.log("posSetBarcodeHeight", res)
})

设置条码可读字符打印位置

  • nTextPosition:条码可读字符位置 0,不显示可读字符;1,在条码下方显示可读字符;2,在条码上方显示可读字符;3,在条码上方和条码下方显示可读字符;
posSetBarcodeReadableTextPosition(nTextPosition, function (res) {
	that.msg = JSON.stringify(res)
	console.log("posSetBarcodeReadableTextPosition", res)
})

设置条码可读字符字体类型

  • nFontType:指定可读字符的字体类型 0,标准 ASCII;1,压缩 ASCII
posSetBarcodeReadableTextFontType(nFontType, function (res) {
	console.log("posSetBarcodeReadableTextFontType", res)
})

示例代码

<template>
	<view>
		<view style="margin-top: 50px;padding: 0 15px;">
			<button @click="enumUsb" type="primary" style="margin-bottom: 15px;">usb设备列表</button>
			<button @click="openUsb" type="primary" style="margin-bottom: 15px;">打开usb设备</button>
			<button @click="halfCutPaper" type="primary" style="margin-bottom: 15px;">半切纸</button>
			<button @click="fullCutPaper" type="primary" style="margin-bottom: 15px;">全切纸</button>
			<button @click="getLibraryVersion" type="primary" style="margin-bottom: 15px;">获取开发包版本字符串</button>
			<button @click="posQueryRTStatus" type="primary" style="margin-bottom: 15px;">查询打印机实时状态</button>
			<button @click="posBeep" type="primary" style="margin-bottom: 15px;">蜂蜜器鸣叫</button>
			<button @click="posResetPrinter" type="primary" style="margin-bottom: 15px;">打印机复位</button>
			<view style="margin: 50px 0 15px 0;font-size: 2rem;font-weight: bold;">打印</view>
			<button @click="print" type="primary" style="margin-bottom: 15px;">打印测试</button>
			<button @click="posFeedAndHalfCutPaper" type="primary" style="margin-bottom: 15px;">走纸到切刀位置并半切纸</button>
			<button @click="posFeedLine" type="primary" style="margin-bottom: 15px;">打印机进纸指定行数</button>
			<button @click="posFeedDot" type="primary" style="margin-bottom: 15px;">打印机进纸指定点数</button>
			<button @click="posPrintSelfTestPage" type="primary" style="margin-bottom: 15px;">打印机打印自检页</button>
			<button @click="posPrintText" type="primary" style="margin-bottom: 15px;">打印文本</button>
			<button @click="posPrintText1" type="primary" style="margin-bottom: 15px;">打印文本1</button>
			<button @click="posPrintBarcode" type="primary" style="margin-bottom: 15px;">打印一维条形码</button>
			<button @click="posPrintBarcodeCode128Auto" type="primary" style="margin-bottom: 15px;">打印一维条形码Code128Auto</button>
			<button @click="posPrintQRCode" type="primary" style="margin-bottom: 15px;">打印二维码</button>
			<button @click="posPrintQRCodeUseEpsonCmd" type="primary" style="margin-bottom: 15px;">打印二维码(Epson指令)</button>
			<button @click="posPrintQRCodeUseImageCmd" type="primary" style="margin-bottom: 15px;">打印二维码(Image指令)</button>
			<button @click="posPrintPDF417BarcodeUseEpsonCmd" type="primary" style="margin-bottom: 15px;">打印 PDF417 条码</button>
			<button @click="posPrintRasterImageFromFile" type="primary" style="margin-bottom: 15px;">打印图片</button>
			<button @click="posPrintHorizontalLine" type="primary" style="margin-bottom: 15px;">打印水平线</button>
			<button @click="posPrintHorizontalLineSpecifyThickness" type="primary" style="margin-bottom: 15px;">打印水平线(粗细)</button>
		</view>
		<view style="padding: 15px 30px;">
			{{msg}}
		</view>
	</view>
</template>

<script>
	import { posBeep, posQueryRTStatus, fullCutPaper, halfCutPaper, openUsb, sayHi, setMultiByteEncoding, enumUsb, getLibraryVersion, posFeedAndHalfCutPaper, posFeedLine, posFeedDot, posPrintSelfTestPage, posPrintText, posPrintBarcode, posPrintBarcodeCode128Auto, posPrintQRCode, posPrintQRCodeUseEpsonCmd, posPrintQRCodeUseImageCmd, posPrintPDF417BarcodeUseEpsonCmd, posPrintRasterImageFromFile, posPrintHorizontalLine, posPrintHorizontalLineSpecifyThickness, posResetPrinter, posSetPrintSpeed, posSetPrintDensity, posSetSingleByteMode, posSetCharacterSet, posSetCharacterCodepage, posSetMovementUnit, posSetPrintAreaLeftMargin, posSetPrintAreaWidth, posSetHorizontalAbsolutePrintPosition, posSetHorizontalRelativePrintPosition, posSetAlignment, posSetTextScale, posSetAsciiTextFontType, posSetTextBold, posSetTextUnderline, posSetTextUpsideDown, posSetTextWhiteOnBlack, posSetTextRotate, posSetTextLineHeight, posSetAsciiTextCharRightSpacing, posSetKanjiTextCharSpacing, posSetBarcodeUnitWidth, posSetBarcodeHeight, posSetBarcodeReadableTextFontType, posSetBarcodeReadableTextPosition } from "@/uni_modules/WUP-MY-POS-PRINTER";
	export default {
		data() {
			return {
				msg: "",
				deviceInx: 0,
			}
		},
		onLoad() {
			let that = this
			sayHi("wup-my-pos-printer", function (res) {
				console.log("sayHi", res)
			})
		},
		methods: {
			print () {
				let that = this
				
				posPrintText("欢迎使用\r\n", function (res) {
					console.log("posPrintText", res)
				})
				posPrintText("WUP-MY-POS-PRINTER(¥99.8)\r\n", function (res) {
					console.log("posPrintText", res)
				})
				
				posFeedLine(2, function (res) {
					console.log("posFeedLine", res)
				})
				
				posPrintText("静夜思\r\n", function (res) {
					console.log("posPrintText", res)
				})
				posPrintText("床前明月光\r\n", function (res) {
					console.log("posPrintText", res)
				})
				posPrintText("疑是地上霜\r\n", function (res) {
					console.log("posPrintText", res)
				})
				posPrintText("举头望明月\r\n", function (res) {
					console.log("posPrintText", res)
				})
				posPrintText("低头思故乡\r\n", function (res) {
					console.log("posPrintText", res)
				})
				
				posPrintQRCode(0, 1, 'https://blog.csdn.net/Douz_lungfish', function (res) {
					console.log("posPrintQRCode", res)
				})
				
				posFeedLine(1, function (res) {
					console.log("posFeedLine", res)
				})
				
				posSetBarcodeReadableTextPosition(1, function (res) {
					console.log("posSetBarcodeReadableTextPosition", res)
				})
				
				posSetBarcodeReadableTextFontType(1, function (res) {
					console.log("posSetBarcodeReadableTextFontType", res)
				})
				
				posPrintBarcode(65, "202012260123", function (res) {
					console.log("posPrintBarcode", res)
				})
				
				posFeedLine(1, function (res) {
					console.log("posFeedLine", res)
				})
				
				posPrintPDF417BarcodeUseEpsonCmd(0, 0, 3, 3, 0, 3, 'hello world',  function (res) {
					console.log("posPrintPDF417BarcodeUseEpsonCmd", res)
				})
				
				posFeedLine(1, function (res) {
					console.log("posFeedLine", res)
				})
				
				posPrintRasterImageFromFile(100, 100, 0, 0, 'logo.png', function (res) {
					console.log("posPrintRasterImageFromFile", res)
				})
				posFeedAndHalfCutPaper(function (res) {
					console.log("posFeedAndHalfCutPaper", res)
				})
			},
			posResetPrinter () {
				let that = this
				posResetPrinter(function (res) {
					that.msg = JSON.stringify(res)
					console.log("posResetPrinter", res)
				})
			},
			posPrintHorizontalLineSpecifyThickness () {
				let that = this
				posPrintHorizontalLineSpecifyThickness(50, 200, 3, function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintHorizontalLineSpecifyThickness", res)
				})
			},
			posPrintHorizontalLine () {
				let that = this
				posPrintHorizontalLine(50, 200,  function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintHorizontalLine", res)
				})
			},
			posPrintRasterImageFromFile () {
				let that = this
				posPrintRasterImageFromFile(100, 100, 0, 0, 'logo.png', function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintRasterImageFromFile", res)
				})
			},
			posPrintPDF417BarcodeUseEpsonCmd () {
				let that = this
				posPrintPDF417BarcodeUseEpsonCmd(0, 0, 3, 3, 0, 3, 'hello world',  function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintPDF417BarcodeUseEpsonCmd", res)
				})
			},
			posPrintQRCodeUseImageCmd () {
				let that = this
				posPrintQRCodeUseImageCmd(0, 8, 1, 0, 'https://blog.csdn.net/Douz_lungfish',  function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintQRCodeUseImageCmd", res)
				})
			},
			posPrintQRCodeUseEpsonCmd () {
				let that = this
				posPrintQRCodeUseEpsonCmd(5, 1, 'https://blog.csdn.net/Douz_lungfish', function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintQRCodeUseEpsonCmd", res)
				})
			},
			posPrintQRCode () {
				let that = this
				posPrintQRCode(0, 1, 'https://blog.csdn.net/Douz_lungfish', function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintQRCode", res)
				})
			},
			posPrintBarcodeCode128Auto () {
				let that = this
				posPrintBarcodeCode128Auto("202012260123", function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintBarcodeCode128Auto", res)
				})
			},
			posPrintBarcode () {
				let that = this
				posPrintBarcode(65, "202012260123", function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintBarcode", res)
				})
			},
			posPrintText () {
				let that = this
				posPrintText("哈哈哈哈哈哈哈哈哈\r\n", function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintText", res)
				})
			},
			posPrintText1 () {
				let that = this
				posPrintText("啊啊啊啊啊啊\r\n", function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintText", res)
				})
			},
			posPrintSelfTestPage () {
				let that = this
				posPrintSelfTestPage(function (res) {
					that.msg = JSON.stringify(res)
					console.log("posPrintSelfTestPage", res)
				})
			},
			posFeedDot () {
				let that = this
				posFeedDot(2, function (res) {
					that.msg = JSON.stringify(res)
					console.log("posFeedDot", res)
				})
			},
			posFeedLine () {
				let that = this
				posFeedLine(2, function (res) {
					that.msg = JSON.stringify(res)
					console.log("posFeedLine", res)
				})
			},
			posFeedAndHalfCutPaper () {
				let that = this
				posFeedAndHalfCutPaper(function (res) {
					that.msg = JSON.stringify(res)
					console.log("posFeedAndHalfCutPaper", res)
				})
			},
			posBeep () {
				let that = this
				posBeep(2, 600, function (res) {
					that.msg = JSON.stringify(res)
					console.log("posQueryRTStatus", res)
				})
			},
			posQueryRTStatus() {
				let that = this
				posQueryRTStatus(500, function (res) {
					that.msg = JSON.stringify(res)
					console.log("posQueryRTStatus", res)
				})
			},
			getLibraryVersion () {
				let that = this
				getLibraryVersion((res) => {
					that.msg = JSON.stringify(res)
					console.log("getLibraryVersion", res)
				})
			},
			enumUsb () {
				let that = this
				enumUsb((res) => {
					that.msg = JSON.stringify(res)
					console.log("enumUsb", res)
				})
			},
			openUsb () {
				let that = this
				openUsb('KCEC_USB in FS Mode/0E08F5C2050601006415000055080172', 1, (res) => {
					that.msg = JSON.stringify(res)
					if (res.code === 0) {
						setMultiByteEncoding(1, (res) => {
							that.msg = JSON.stringify(res)
							console.log("setMultiByteEncoding", res)
						})
					}
					console.log("openUsb", res)
				})
			},
			halfCutPaper () {
				let that = this
				halfCutPaper((res) => {
					that.msg = JSON.stringify(res)
					console.log("halfCutPaper", res)
				})
			},
			fullCutPaper () {
				let that = this
				fullCutPaper((res) => {
					that.msg = JSON.stringify(res)
					console.log("fullCutPaper", res)
				})
			},
		}
	}
</script>

<style>
</style>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903668.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spyglass关于cdc检测的一处bug

最近在使用22版spyglass的cdc检测功能&#xff0c;发现struct_check的cdc检测实际时存在一些bug的。 构造如下电路&#xff0c;当qualifier和destination信号汇聚时&#xff0c;如果des信号完全将qualifier gate住&#xff0c;sg仍然会报ac_sync。当然此问题可以通过后续funct…

基于SSM的心理咨询管理管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的心理咨询管理管理系统拥有三个角色&#xff1a;学生用户、咨询师、管理员 管理员&#xff1a;学生管理、咨询师管理、文档信息管理、预约信息管理、测试题目管理、测试信息管理…

vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发

编号&#xff1a;R03-果蔬识别系统 简介&#xff1a;vuespringboot百度AI实现的果蔬识别系统 版本&#xff1a;2025版 视频介绍&#xff1a; vuespringboot百度AI实现的果蔬识别系统前后端java开发&#xff0c;百度识别&#xff0c;带H5移动端&#xff0c;mysql数据库可视化 1 …

从零搭建开源陪诊系统:关键技术栈与架构设计

构建一个开源陪诊系统是一个涉及多种技术的复杂工程。为了让这个系统具备高效、可靠和可扩展的特点&#xff0c;我们需要从架构设计、技术栈选择到代码实现等方面进行全面的考量。本文将从零开始&#xff0c;详细介绍搭建开源陪诊系统的关键技术栈和架构设计&#xff0c;并提供…

iOS调试真机出现的 “__llvm_profile_initialize“ 错误

一、错误形式&#xff1a; app启动就崩溃&#xff0c;如下&#xff1a; Demo__llvm_profile_initialize:0x1045f7ab0 <0>: stp x20, x19, [sp, #-0x20]!0x1045f7ab4 <4>: stp x29, x30, [sp, #0x10]0x1045f7ab8 <8>: add x29, sp, #0x100x1…

如何在 Windows 上安装 Python:一步一步的指南

Python 已成为 当今最受欢迎的编程语言之一&#xff0c;在商业的各个领域中广泛应用。开发者使用 Python 构建应用程序和开发网站&#xff0c;而数据工程师则使用 Python 进行数据分析、统计分析以及构建机器学习模型。 检测是否已安装Python 默认情况下&#xff0c;Windows …

【04】RabbitMQ的集群机制

1、RabbitMQ的性能监控 关于RabbitMQ的性能监控&#xff0c;在管理控制台中提供了非常丰富的展示。例如&#xff1a;首页这个整体监控页面&#xff0c;就展示了非常多详细的信息&#xff1a; 还包括消息的生产消费频率、关键组件的使用情况等等非常多的消息。都可以在这个管理…

python代码中通过pymobiledevice3访问iOS沙盒目录获取app日志

【背景】 在进行业务操作过程中&#xff0c;即在app上的一些操作&#xff0c;在日志中会有对应的节点&#xff0c;例如&#xff0c;下面是查看设备实时视频过程对应的一些关键节点&#xff1a; 1、TxDeviceAwakeLogicHelper&#xff1a;wakeStart deviceId CxD2BA11000xxxx …

Vue笔记-element ui中关于table的前端分页

对于 Element UI 表格的前端分页&#xff0c;可以在组件中使用 JavaScript 来实现数据的分页显示&#xff0c;而不必从后端获取已分页的数据。以下是一个简单的示例&#xff0c;演示如何在前端进行 Element UI 表格的分页&#xff1a; <template><div><el-tabl…

DIY可视化-uniapp悬浮菜单支持拖动、吸附-代码生成器

在Uniapp中&#xff0c;悬浮菜单支持拖动和吸附功能&#xff0c;可以为用户带来更加灵活和便捷的操作体验。以下是对这两个功能的详细解释&#xff1a; 悬浮菜单支持拖动 提高用户体验&#xff1a;用户可以根据自己的需要&#xff0c;将悬浮菜单拖动到屏幕上的任意位置&#x…

一二三应用开发平台自定义查询设计与实现系列2——查询方案功能实现

查询方案功能实现 上面实现了自定义查询功能框架&#xff0c;从用户角度出发&#xff0c;有些条件组合可以形成特定的查询方案&#xff0c;对应着业务查询场景。诸多查询条件的组合&#xff0c;不能每次都让用户来设置&#xff0c;而是应该保存下来&#xff0c;下次可以直接使…

MySql基础:事务

1. 事务的简介 1.1 什么是事务 事务就是一组DML语句组成&#xff0c;这些语句在逻辑上存在相关性&#xff0c;这一组DML语句要么全部成功&#xff0c;要么全部失败&#xff0c;是一个整体。MySQL提供一种机制&#xff0c;保证我们达到这样的效果。事务还规定不同的客户端看到的…

数字IC开发:布局布线

数字IC开发&#xff1a;布局布线 前端经过DFT&#xff0c;综合后输出网表文件给后端&#xff0c;由后端通过布局布线&#xff0c;将网表转换为GDSII文件&#xff1b;网表文件只包含单元器件及其连接等信息&#xff0c;GDS文件则包含其物理位置&#xff0c;具体的走线&#xff1…

Linux 进程优先级 进程切换

目录 优先级 概念 为什么优先级要限制在一定范围内 进程切换 方式 EIP寄存器(程序计数器) 进程在运行时会使用寄存器来保存临时数据 进程的上下文是什么&#xff1f; 进程的上下文保存到哪&#xff1f; 内核栈或专门的上下文结构也在内核空间&#xff1f;那为什么不直…

Visual Studio Code

代码自动保存 打开设置搜索auto save&#xff0c;设置为afterDelay 设置延迟时间&#xff0c;单位是毫秒 启用Ctrl鼠标滚轮对字体进行缩放 搜索Mouse Wheel Zoom&#xff0c;把该选项勾选上即可 Python插件 运行和调试Python

在zabbix5.0中监控hpe 3par8440存储

前言 通常在3par ssmc或者命令行才能完全查看各项数据&#xff0c;比如硬件状态&#xff0c;在zabbix中如何详细并集中监控查看3par的各项系统软硬件数据或者状态呢&#xff1f;3par 利用snmp协议搜集数据貌似不可行&#xff0c;但是在zabbix官网推出了一个基于SMI-S接口结合p…

软件测试学习笔记丨Selenium学习笔记:css定位

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/22511 本文为霍格沃兹测试开发学社的学习经历分享&#xff0c;写出来分享给大家&#xff0c;希望有志同道合的小伙伴可以一起交流技术&#xff0c;一起进步~ 说明&#xff1a;本篇博客基于sel…

即插即用篇 | YOLOv8 引入 空间自适应特征调制模块 SAFM

代码地址: https://github.com/sunny2109/SAFMN 论文地址:https://arxiv.org/pdf/2302.13800 虽然已经提出了许多图像超分辨率的解决方案,但它们通常与许多计算和内存限制的低功耗设备不兼容。本文通过提出一个简单而有效的深度网络来高效地解决图像超分辨率问题。具体来说,…

layui扩展组件之----右键菜单

源码&#xff1a;rightmenu.js layui.define([element], function (exports) {let element layui.element;const $ layui.jquery;let MOD_NAME rightmenu;let RIGHTMENUMOD function () {this.v 1.0.0;this.author raowenjing;};String.prototype.format function () {…

本质矩阵分解计算Rt

1 本质矩阵的计算 上一文章中描述了本质矩阵的计算&#xff0c;计算机视觉-对极几何-CSDN博客&#xff0c;那么计算得到本质矩阵有什么用&#xff1f;其中一个应用是通过本质矩阵计算得到2D-2D的相对变换。 在相关矩阵计算时&#xff0c;一般会在两幅图像中&#xff0c;根据特征…