From e491cdb48129752324c4e3764f99bd9203c56dec Mon Sep 17 00:00:00 2001
From: lgq <1015864684@qq.com>
Date: 星期二, 31 三月 2026 09:48:44 +0800
Subject: [PATCH] 1.新增VF205门禁机代码

---
 vf205_access/dxmodules/dxWatchdog.js |  123 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 deletions(-)

diff --git a/vf205_access/dxmodules/dxWatchdog.js b/vf205_access/dxmodules/dxWatchdog.js
new file mode 100644
index 0000000..963949b
--- /dev/null
+++ b/vf205_access/dxmodules/dxWatchdog.js
@@ -0,0 +1,123 @@
+//build 20240425
+//鐪嬮棬鐙楃粍浠讹紝鐢ㄤ簬鐩戞帶搴旂敤鏄惁鍗℃锛岃缃竴涓秴鏃舵椂闂达紝濡傛灉瓒呰繃杩欎釜鏃堕棿娌℃湁鍠傜嫍锛屼細鑷姩瑙﹀彂璁惧閲嶅惎
+//娉ㄦ剰浣跨敤鐪嬮棬鐙椾箣鍓嶅彲鑳介渶瑕佸厛鍒濆鍖杇pio
+//渚濊禆缁勪欢 dxDriver,dxLogger,dxCommon,dxMap,dxGpio
+import { watchdogClass } from './libvbar-b-dxwatchdog.so'
+import dxMap from './dxMap.js'
+import logger from './dxLogger.js'
+import dxCommon from './dxCommon.js'
+
+const map = dxMap.get("___watchdog")
+const watchdogObj = new watchdogClass();
+
+const watchdog = {}
+watchdog.last = new Date().getTime()
+/**
+ * 鎵撳紑鐪嬮棬鐙楄澶�
+ * @param {number} type 蹇呭~
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堣嫢鍒濆鍖栧涓疄渚嬮渶瑕佷紶鍏ュ敮涓�id锛�
+ */
+watchdog.open = function (type, id) {
+	let pointer = watchdogObj.open(type)
+	if (pointer === undefined || pointer === null) {
+		throw new Error("watchdog.open: open failed")
+	}
+	dxCommon.handleId("watchdog", id, pointer)
+}
+/**
+ * 鎺у埗鎸囧畾閫氶亾寮�鍏�
+ * @param {number} chan 閫氶亾id,蹇呭~
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ * @returns true/false
+ */
+watchdog.enable = function (chan, id) {
+	let pointer = dxCommon.handleId("watchdog", id)
+	return watchdogObj.enable(pointer, chan)
+}
+/**
+ * 寮�鍚湅闂ㄧ嫍鎬诲畾鏃跺櫒
+ * @param {*} timeout 蹇呭~
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ * @returns true/false
+ */
+watchdog.start = function (timeout, id) {
+	let pointer = dxCommon.handleId("watchdog", id)
+	return watchdogObj.start(pointer, timeout)
+}
+/**
+ * 鍒ゆ柇鏄惁鏄笂鐢靛浣嶏紝鐪嬮棬鐙楁槸鍚﹀凡缁忓惎鍔�
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ * @returns true/false
+ */
+watchdog.isPoweron = function (id) {
+	let pointer = dxCommon.handleId("watchdog", id)
+	return watchdogObj.isPoweron(pointer)
+}
+/**
+ * 鍠傜嫍鎸囧畾閫氶亾
+ * @param {*} chan 閫氶亾id锛屽繀濉�
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ * @returns true/false
+ */
+watchdog.restart = function (chan, id) {
+	let pointer = dxCommon.handleId("watchdog", id)
+	return watchdogObj.restart(pointer, chan)
+}
+/**
+ * 鍏抽棴鐪嬮棬鐙楁�诲畾鏃跺櫒
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ * @returns true/false
+ */
+watchdog.stop = function (id) {
+	let pointer = dxCommon.handleId("watchdog", id)
+	return watchdogObj.stop(pointer)
+}
+/**
+ * 鍏抽棴鐪嬮棬鐙楄澶�
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ * @returns true/false
+ */
+watchdog.close = function (id) {
+	let pointer = dxCommon.handleId("watchdog", id)
+	return watchdogObj.close(pointer)
+}
+/**
+ * 寰幆妫�鏌ユ瘡涓嚎绋嬬殑鍠傜嫍鎯呭喌锛屼换浣曚竴涓嚎绋嬫病鏈夊杺鐙楋紝鍒欎笉鍚姩restart
+ * @param {number} chan 閫氶亾id锛屽繀濉�
+ * @param {string} id 鍙ユ焺id锛岄潪蹇呭~锛堥渶淇濇寔鍜宨nit涓殑id涓�鑷达級
+ */
+watchdog.loop = function (chan, id) {
+	const now = new Date().getTime()
+	const minus = now - watchdog.last
+	if (minus > 3000 || minus < 0) {//姣�3绉掓鏌ヤ竴娆℃垨鑰呭皬浜�0浠h〃鎿嶄綔浜嗗線鍓嶆敼鏃堕棿
+		watchdog.last = now
+		let keys = map.keys()
+		let check = true
+		for (let i = 0; i < keys.length; i++) {
+			let key = keys[i]
+			let value = map.get(key)
+			const temp = now - value.now
+			if (temp > value.timeout * 1000 && temp < 1700000000) {
+				logger.error(`The worker ${key} did not feed the dog in time.`, temp)
+				check = false
+				break
+			}
+		}
+		if (check) {
+			this.restart(chan, id)
+		}
+	}
+}
+/**
+ * 涓嶅悓鐨勭嚎绋嬪杺鐙�
+ * @param {string} flag 绾跨▼鐨勬爣璇�,蹇呭~涓嶈兘涓虹┖ 
+ * @param {number} timeout 绾跨▼鍙互澶氶暱鏃堕棿涓嶅杺鐙楋紙绉掞級锛岀己鐪佹槸10绉�
+ */
+watchdog.feed = function (flag, timeout = 10) {
+	if (!flag || flag.length <= 0) {
+		return
+	}
+	map.put(flag, { now: new Date().getTime(), timeout: timeout })
+}
+
+export default watchdog;

--
Gitblit v1.9.3