漢王、繪王簽字版調用封裝

說明

需要配合漢王或繪王簽字版驅動以及對應的sdk服務使用

constants.js

//漢王、繪王sdk websocket連接地址
export const WS_URLS ={1:'ws://127.0.0.1:29999', //漢王2:'ws://127.0.0.1:7181',
}export const COMMAND1 = {1: {HWPenSign: "HWStartSign",nLogo: "簽字",width: "1280",height: "800",key: "", //簽字版signkey! 簽字版signkey! 簽字版signkey!fingerFap: "1",pencolor: "000000",//筆跡顏色,RGBbackcolor: "FFDDff",//背景顏色,RGBtopcolor: "FF0000",//頂部顏色logosize: "30",//左上角文字大小logocolor: "000000",//左上角文字顏色,BGR排序logotype: "黑體",//宋體、Arial、微軟雅黑、黑體可以應用frameWidth: "3",//邊框寬度framecolor: "adadad",//邊框顏色,RGBokcolor: "FA8072",//確定按鈕顏色resigncolor: "FFA500",//重簽按鈕顏色okTextColor: "B22222",//確定按鈕文本顏色resignTextColor: "F5F5DC",//重簽按鈕文本顏色RGBokTextFont: "華文新魏",//確定按鈕文本字體,C:/Winodws/fonts/ 下的字體文件,部分字體無法顯示resignTextFont: "隸書",//重簽按鈕文本字體okTextSize: "20",resignTextSize: "20",//重簽按鈕文本內容OkButtonText: "確定",//確定按鈕文本內容ResignButtonText: "重簽",logoXAxis: "10",//左上角文字X坐標logoYAxis: "15",//左上角文字Y坐標okXAxis: "1150",//確定按鈕X坐標okYAxis: "5",//確定按鈕Y坐標resignXAxis: "1018",//重簽按鈕X坐標resignYAxis: "5",//重簽按鈕Y坐標topHeight: "30",//標題區高度roundValue: "30",//按鈕圓角ButtonHeight: "60",ButtonWidth: "120",fingerTextColor: "000000",//指紋按鈕文本顏色fingerTextFont: "Simsun",//指紋按鈕文本字體fingercolor: "3ff3e4",//指紋按鈕顏色 RGBfingerTextSize: "20",//指紋按鈕文本大小FingerButtonText: "采集指紋",//指紋按鈕文本內容fingerXAxis: "885",//指紋按鈕X坐標fingerYAxis: "5",//指紋按鈕Y坐標
},2:'begin'
}export const COMMAND2 ={1:{HWPenSign: "HWEndSign"},2:'end'
}export const toString = (val)=>{return typeof val==='string' ?  val: JSON.stringify(val)
}

signBoard.js

import {Alert} from "./alert"; //彈窗提示可去除
import {toString, COMMAND1, WS_URLS, COMMAND2} from './constants'export class SignBoard {constructor(type = 1) {this.type = typethis.socket = nullthis._debounce = nullthis._bus = {}this._isReady = falsethis.onMessage = null}_onHanWangResponse(res) {if (typeof res === "object" && res.msgID === 0 && res.HWPenSign === "HWGetSign") {Alert.success('已操作')//簽字成功事件返回this._bus.message.forEach(item => {typeof item === "function" && item(res)})typeof this.onMessage === "function" && this.onMessage(res)}if (this._debounce) clearTimeout(this._debounce)this._debounce = setTimeout(() => {if (typeof res === 'object' && res.msgID === 0 && res.HWPenSign === 'HWGetStatus') {res.DeviceStatus === 1 ? Alert.success('設備正常') : Alert.error('設備不存在')}if (typeof res === 'object' && res.msgID !== 0) {Alert.error(res.message || '設備異常')}}, 200)}_onHuiWangResponse(data) {try {if (data.type == 1) {const base64Img = "data:image/jpg;base64," + data.data;//簽字成功事件返回const response = {message: base64Img,msgID:0,HWPenSign:'HWGetSign'}this._bus.message.forEach(item => {typeof item === "function" && item(response)})typeof this.onMessage === "function" && this.onMessage(response)} else {Alert.error('繪王簽字版異常')}} catch (e) {console.log('[繪王簽字版錯誤]', e);}}connect() {if (this._isReady){return}this._isReady = truethis.socket = new WebSocket(WS_URLS[this.type])this.socket.onopen = () => {this.socket.send(toString({HWPenSign: "HWGetDeviceStatus"}))}this.socket.onmessage = ({data}) => {const res = data.indexOf('{') > -1 ? JSON.parse(data) : data;if (this.type === 1) {this._onHanWangResponse(res)} else {this._onHuiWangResponse(res)}}this.socket.onclose = () => {this._isReady = false}this.socket.onerror = () => {this._isReady = falsesetTimeout(()=>{this.connect()},5000)}}disconnect() {this.socket && this.socket.close()}on(name = '', fun) {(this._bus[name] || (this._bus[name] = [])).push(fun)}off(name = '', fun) {this._bus[name] && this._bus[name].forEach((item, i) => {if (fun === item) {this._bus[name].splice(i, 1)}})}startSign() {this.socket.send(toString(COMMAND1[this.type]))}closeSign() {this.socket.send(toString(COMMAND2[this.type]))}
}const signType = 1
export default new SignBoard(signType)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/41160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/41160.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/41160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

探索大型語言模型自動評估 LLM 輸出長句準確性的方法

LLM現在能夠自動評估較長文本中的事實真實性 源碼地址:https://github.com/google-deepmind/long-form-factuality 論文地址:https://arxiv.org/pdf/2403.18802.pdf 這篇論文是關于谷歌DeepMind的,提出了新的數據集、評估方法和衡量標準&am…

vue2+element-ui新增編輯表格+刪除行

實現效果&#xff1a; 代碼實現 &#xff1a; <el-table :data"dataForm.updateData"border:header-cell-style"{text-align:center}":cell-style"{text-align:center}"><el-table-column label"選項字段"align"center&…

Linux 內核 GPIO 用戶空間接口

文章目錄 Linux 內核 GPIO 接口舊版本方式&#xff1a;sysfs 接口新版本方式&#xff1a;chardev 接口 gpiod 庫及其命令行gpiod 庫的命令行gpiod 庫函數的應用 GPIO&#xff08;General Purpose Input/Output&#xff0c;通用輸入/輸出接口&#xff09;&#xff0c;是微控制器…

MAX()和ROW_NUMBER()函數的對比

SQL 查詢中,使用 MAX() 函數和使用窗口函數 ROW_NUMBER() 都可以實現獲取每個分組中某個列的最大值,但它們的實現方式和性能表現有所不同。以下是兩者的區別和性能對比: 使用 MAX() 函數 SELECTMAX(d.times) FROMv_y d WHEREd.id = a.idAND d.name = a.nameAND d.age = a.…

交換機需要多大 buffer(續:更一般的原理)

前面用 aimd 系統分析了交換機 buffer 需求量隨流數量增加而減少&#xff0c;今天從更一般的角度繼續分析這事。 將交換機建模為一個 m/m/1 排隊系統&#xff0c;多流場景下它就會變成一個 m/g/1 排隊系統&#xff0c;而這事比前面的 aimd 系統分析更容易推導。 m/m/1 系統中…

哪里還可以申請免費一年期的SSL證書?

目前&#xff0c;要申請免費一年期的SSL證書&#xff0c;選項較為有限&#xff0c;因為多數供應商已轉向提供短期的免費證書&#xff0c;通常有效期為90天。不過&#xff0c;有一個例外是JoySSL&#xff0c;它仍然提供一年期的免費SSL證書&#xff0c;但是只針對教育版和政務版…

halcon學習

halcon列程詳細介紹-V1.3 從文件夾中遍歷圖片(用到的算子及實例) 1)list_files(::Directory,Options:Files) 功能:列出目錄中的所有文件 參數列表: 第1個參數Directory為輸入變量,需要列出的目錄名字,即輸入目錄地址; 第2個參數Options為輸入變量,默認值為files,建…

html三級菜單

示例 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Menu Example</title> <link re…

mybatispuls 分頁插件的基本原理是什么?

MyBatis-Plus 是一個基于 MyBatis 的增強框架,它提供了許多額外的功能,其中分頁插件是一個常用的功能。分頁插件的基本原理是攔截 SQL 語句,在執行查詢之前對 SQL 進行修改,以實現分頁的功能。以下是 MyBatis-Plus 分頁插件的基本原理及其工作機制: 1. 基本原理 分頁插件…

LED顯示屏跟COB顯示屏有哪些不同?

COB顯示屏跟LED顯示屏的主要區別在于產品的顯示效果、封裝技術、耐用性、防護力、維護以及制造成本方面的不同&#xff0c;這里所說的LED顯示屏主要指的是使用SMD封裝的LED顯示屏&#xff0c;今天跟隨COB顯示屏廠家中品瑞科技一起來詳細看看具體分析&#xff1a; 一、封裝技術 …

品牌推廣的深層邏輯:自我提升與市場認同的和諧共生

品牌推廣的深層邏輯&#xff1a;自我提升與市場認同的和諧共生 著名飛行員查爾斯林德伯格(Charles Lindbergh) 曾寫道:“改善生活方式比傳播生活方式更重要。如果我們自己的生活方式使別人感到滿意&#xff0c;那么它將自動蔓延。如果不是這樣&#xff0c;那么任何武力都不可能…

如何在 Odoo 16 中繼承和更新現有郵件模板

在本文中,讓我們看看如何在 Odoo 16 中繼承和編輯現有郵件模板。我們必須這樣做才能對現有模板的內容進行任何調整或更新。讓我們考慮一個在會計模塊中更新郵件模板的示例。 單擊“account.move”模型中的“發送并打印”按鈕后,將打開上述向導。在這里,我們將進行更改。從…

8人團隊歷時半年打造開源版GPT-4o,零延遲演示引爆全網!人人可免費使用!

目錄 01 Moshi 02 背后技術揭秘 GPT-4o可能要等到今年秋季才會公開。 然而&#xff0c;由法國8人團隊開發的原生多模態Moshi&#xff0c;已經達到了接近GPT-4o的水平&#xff0c;現場演示幾乎沒有延遲&#xff0c;吸引了大量AI專家的關注。 令人驚訝的是&#xff0c;開源版的…

Python酷庫之旅-第三方庫Pandas(003)

目錄 一、用法精講 4、pandas.read_csv函數 4-1、語法 4-2、參數 4-3、功能 4-4、返回值 4-5、說明 4-6、用法 4-6-1、創建csv文件 4-6-2、代碼示例 4-6-3、結果輸出 二、推薦閱讀 1、Python筑基之旅 2、Python函數之旅 3、Python算法之旅 4、Python魔法之旅 …

T100-XG查詢報表的開發

制作XG報表 1、注冊程序 azzi900 首先現將程序注冊一下,在內部構建基礎代碼檔。 2、注冊作業 azzi910 也是直接新增一個,作業跟程序綁定一下。 3、T100簽出規格程序 這個時候應該是沒簽出的,首先將規格遷出。 4、T100畫面產生器 規格遷出之后,這個時候還需要生成一個畫…

springcloud-gateway 網關組件中文文檔

Spring Cloud網關 Greenwich SR5 該項目提供了一個基于Spring生態系統的API網關&#xff0c;其中包括&#xff1a;Spring 5&#xff0c;Spring Boot 2和項目Reactor。Spring Cloud網關的目的是提供一種簡單而有效的方法來路由到API&#xff0c;并向它們提供跨領域的關注&#x…

Java中的數據脫敏與隱私保護技術

Java中的數據脫敏與隱私保護技術 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 隨著信息化進程的加深&#xff0c;數據安全和隱私保護越來越受到關注。數據脫…

Python文件讀入操作

本套課在線學習視頻&#xff08;網盤地址&#xff0c;保存到網盤即可免費觀看&#xff09;&#xff1a; ??https://pan.quark.cn/s/e2ba7867f034?? Python編程中&#xff0c;文件操作是一項基礎且重要的技能。本文將詳細介紹如何使用Python進行文件的打開、讀取、寫入和關…

配置基于不同IP地址的虛擬主機

定義配置文件vhost.conf <directory /www> allowoverride none require all granted </directory> <virtualhost 192.168.209.136:80> documentroot /www servername 192.168.209.136 </virtualhost><virtualhost 192.168.209.138:80> document…

Restore Equipment

Restore Equipment 魔獸世界 - 盜號申請 - 恢復裝備流程 魔獸和網易真的不行啊 1&#xff09;這個裝備本來就是兌換的竟然可以賣NPC 2&#xff09;針對這個情況竟然無法挽回 3&#xff09;設計理念真的不得不吐槽一下 4&#xff09;策劃真的不咋樣&#xff0c;要是有機會我要自…