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 = thissayHi("wup-my-pos-printer", function (res) {console.log("sayHi", res)})},methods: {print () {let that = thisposPrintText("欢迎使用\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 = thisposResetPrinter(function (res) {that.msg = JSON.stringify(res)console.log("posResetPrinter", res)})},posPrintHorizontalLineSpecifyThickness () {let that = thisposPrintHorizontalLineSpecifyThickness(50, 200, 3, function (res) {that.msg = JSON.stringify(res)console.log("posPrintHorizontalLineSpecifyThickness", res)})},posPrintHorizontalLine () {let that = thisposPrintHorizontalLine(50, 200,  function (res) {that.msg = JSON.stringify(res)console.log("posPrintHorizontalLine", res)})},posPrintRasterImageFromFile () {let that = thisposPrintRasterImageFromFile(100, 100, 0, 0, 'logo.png', function (res) {that.msg = JSON.stringify(res)console.log("posPrintRasterImageFromFile", res)})},posPrintPDF417BarcodeUseEpsonCmd () {let that = thisposPrintPDF417BarcodeUseEpsonCmd(0, 0, 3, 3, 0, 3, 'hello world',  function (res) {that.msg = JSON.stringify(res)console.log("posPrintPDF417BarcodeUseEpsonCmd", res)})},posPrintQRCodeUseImageCmd () {let that = thisposPrintQRCodeUseImageCmd(0, 8, 1, 0, 'https://blog.csdn.net/Douz_lungfish',  function (res) {that.msg = JSON.stringify(res)console.log("posPrintQRCodeUseImageCmd", res)})},posPrintQRCodeUseEpsonCmd () {let that = thisposPrintQRCodeUseEpsonCmd(5, 1, 'https://blog.csdn.net/Douz_lungfish', function (res) {that.msg = JSON.stringify(res)console.log("posPrintQRCodeUseEpsonCmd", res)})},posPrintQRCode () {let that = thisposPrintQRCode(0, 1, 'https://blog.csdn.net/Douz_lungfish', function (res) {that.msg = JSON.stringify(res)console.log("posPrintQRCode", res)})},posPrintBarcodeCode128Auto () {let that = thisposPrintBarcodeCode128Auto("202012260123", function (res) {that.msg = JSON.stringify(res)console.log("posPrintBarcodeCode128Auto", res)})},posPrintBarcode () {let that = thisposPrintBarcode(65, "202012260123", function (res) {that.msg = JSON.stringify(res)console.log("posPrintBarcode", res)})},posPrintText () {let that = thisposPrintText("哈哈哈哈哈哈哈哈哈\r\n", function (res) {that.msg = JSON.stringify(res)console.log("posPrintText", res)})},posPrintText1 () {let that = thisposPrintText("啊啊啊啊啊啊\r\n", function (res) {that.msg = JSON.stringify(res)console.log("posPrintText", res)})},posPrintSelfTestPage () {let that = thisposPrintSelfTestPage(function (res) {that.msg = JSON.stringify(res)console.log("posPrintSelfTestPage", res)})},posFeedDot () {let that = thisposFeedDot(2, function (res) {that.msg = JSON.stringify(res)console.log("posFeedDot", res)})},posFeedLine () {let that = thisposFeedLine(2, function (res) {that.msg = JSON.stringify(res)console.log("posFeedLine", res)})},posFeedAndHalfCutPaper () {let that = thisposFeedAndHalfCutPaper(function (res) {that.msg = JSON.stringify(res)console.log("posFeedAndHalfCutPaper", res)})},posBeep () {let that = thisposBeep(2, 600, function (res) {that.msg = JSON.stringify(res)console.log("posQueryRTStatus", res)})},posQueryRTStatus() {let that = thisposQueryRTStatus(500, function (res) {that.msg = JSON.stringify(res)console.log("posQueryRTStatus", res)})},getLibraryVersion () {let that = thisgetLibraryVersion((res) => {that.msg = JSON.stringify(res)console.log("getLibraryVersion", res)})},enumUsb () {let that = thisenumUsb((res) => {that.msg = JSON.stringify(res)console.log("enumUsb", res)})},openUsb () {let that = thisopenUsb('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 = thishalfCutPaper((res) => {that.msg = JSON.stringify(res)console.log("halfCutPaper", res)})},fullCutPaper () {let that = thisfullCutPaper((res) => {that.msg = JSON.stringify(res)console.log("fullCutPaper", res)})},}}
</script><style>
</style>

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

海外媒体发稿:如何打造媒体发稿策略

新闻媒体的发稿推广策略对于提升品牌知名度、吸引流量以及增加收入非常重要。本文将介绍一套在21天内打造爆款新闻媒体发稿推广策略的方法。 第一天至第七天&#xff1a;明确目标和定位 在这个阶段&#xff0c;你需要明确你的目标和定位&#xff0c;以便为你的新闻媒体建立一个…

66Analytics 汉化版,网站统计分析源码,汉化前台后台

66Analytics 汉化版,网站统计分析源码,汉化前台后台 本源码汉化前台后台&#xff0c;非其他只汉化前台版 网络分析变得容易。自托管、友好、一体化的网络分析工具。轻量级跟踪、会话回放、热图、用户旅程等 简单、好看、友好-大多数网络分析解决方案做得太多了&#xff0c;在大…

详解PHP正则表达式中的转义操作

PHP正则表达式中的特殊字符和转义 在 PHP 正则表达式中&#xff0c;有许多特殊字符具有特定的意义。这些特殊字符通常用于定义匹配模式的一部分&#xff0c;或者改变匹配的行为。以下是 PHP 正则表达式中一些常用的特殊字符及其含义: .匹配除换行符之外的任何单个字符 ^在方括…

练习LabVIEW第二十四题

学习目标&#xff1a; 刚学了LabVIEW&#xff0c;在网上找了些题&#xff0c;练习一下LabVIEW&#xff0c;有不对不好不足的地方欢迎指正&#xff01; 第二十四题&#xff1a; 分别利用for循环的移位寄存功能和反馈节点两种方法求0510154550的值 开始编写&#xff1a; 两个…

PHP免杀详细讲解PHP免杀详细讲解

基础学习 可变参数 $_GET $_POST $_COOKIE $_REQUEST $_SERVER 其中的某些参数可控,如REQUESTMETHOD,QUERYSTRING,HTTPUSERAGENT等 session_id() 这个比较特殊,但是依然可以利用 $_FILE $GLOBALS getallheaders() get_defined_vars() get_defined_functions() fil…

晓羽扫码点餐快销版系统源码

扫码点餐系统&#xff08;快销版&#xff09;是一款专为快销类餐饮行业设计的点餐工具&#xff0c;如早餐店、面馆、快餐店及零食小吃摊等&#xff0c;旨在满足这些场景下快捷、高效的扫码点餐需求。其核心功能在于仅支持先付款后就餐的模式&#xff0c;这一设计大大简化了点餐…

cesium 加载本地json、GeoJson数据

GeoJSON是一种用于编码地理数据结构的格式 {"type": "Feature","geometry": {"type": "Point","coordinates": [125.6, 10.1]},"properties": {"name": "某地点"} } 一、直接加载…

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

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

OpenHarmony4.0配置应用开机自启

一、开发环境 系统版本:OpenHarmony 4.0.10.13 设备平台:rk3588 SDK版本:fullSDK 4.0.10.13 二、背景 使用自研应用作为默认Launcher,或者说使特定应用默认开机自启作为Home应用。 三、分析过程 通过分析原生Launcher启动流程可知: AMS启动根据应用优先级启动应用,通…

leetcode 75-13 k和数对的最大数目

我的思路 sort函数排序 然后双指针判断 这样时间复杂度nlgn 题解给出了一种空间换时间方法 用哈希表 注意一下写法 现在完全不会这样写 还有就是注意sort函数的代码 怎么写排序也给忘了 sort用的是什么排序方法、 分析 自己写的代码和所谓的滑动窗口就是相当于简化了每个…

【04】RabbitMQ的集群机制

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

week08 zookeeper多种安装与pandas数据变换操作-new

课程1-hadoop-Zookeeper安装 Ububtu18.04安装Zookeeper3.7.1 环境与版本 这里采用的ubuntu18.04环境的基本配置为&#xff1a; hostname 为master 用户名为hadoop 静态IP为 192.168.100.3 网关为 192.168.100.2 防火墙已经关闭 /etc/hosts已经配置全版本下载地址&#xff1…

【Java基础】2、Java基础语法

f2/fnf2&#xff1a;选中点中的文件名 ​​​​​​​ 1.注释 为什么要有注释&#xff1f; 给别人和以后的自己可以看懂的解释 注释含义 注释是在程序指定位置的说明性信息&#xff1b;简单理解&#xff0c;就是对代码的一种解释 注释分类 单行注释 //注释信息 多行注释…

NAT技术和代理服务器

NAT IP原理 之前我们讨论了, IPv4协议中, IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能;NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:很多学校, 家庭, 公司内部采用每个终端设置私有…

基于SSM+小程序的购物管理系统1

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 基于SSM小程序的购物管理系统1&#xff0c;可以实现首页、个人中心、商品分类管理、商品信息管理、特价商品管理、用户管理、留言板管理、系统管理、订单管理等功能。方便用户对首页、商品…

Java审计对比工具JaVers使用

最近有个需求&#xff0c;需要将页面的内容生成excel或者word文档&#xff0c;而且每次的修改都需要生成新的版本&#xff0c;同时需要记录每次修改变化的内容。我们会把每次的修改的内容提交赋值给一个java对象&#xff0c;同时存储到数据库一条新数据&#xff0c;对应数据表一…

stm32入门教程--DMA 超详细!!!

目录 简介 工作模式 1、数据转运DMA 2、ADC扫描模式DMA 简介 工作模式 1、数据转运DMA 这个例子的任务是将SRAM的数组DataA&#xff0c;转运到另一个数组DataB中&#xff0c;这个基本结构里的各个参数应该如何配置呢&#xff1f; 首先是外设站点和存储器站点的起始地址、…

Python 爬虫的寻宝大冒险:如何捕获 API 数据的宝藏

在这个信息爆炸的数字时代&#xff0c;数据就像是隐藏在网络深处的宝藏&#xff0c;等待着勇敢的探险家去发现。今天&#xff0c;我们要讲述的是如何成为一名 Python 爬虫探险家&#xff0c;装备你的代码工具&#xff0c;深入 API 的迷宫&#xff0c;捕获那些珍贵的数据宝藏。 …

时间序列预测(十五)——有关Python项目框架的实例分析

#1024程序员节&#xff5c;征文# 在之前的学习中&#xff0c;已经对时间序列预测的相关内容有了大致的了解。为了进一步加深理解&#xff0c;并能够将所学知识应用于实际中&#xff0c;我决定找一个完整的Python框架来进行深入学习。经过寻找&#xff0c;我终于找到了一篇非常具…

【338】基于springboot的IT职业生涯规划系统

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;it职业生涯规划系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以…