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/dxPwm.js |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 116 insertions(+), 0 deletions(-)

diff --git a/vf205_access/dxmodules/dxPwm.js b/vf205_access/dxmodules/dxPwm.js
new file mode 100644
index 0000000..25a709f
--- /dev/null
+++ b/vf205_access/dxmodules/dxPwm.js
@@ -0,0 +1,116 @@
+// build : 20240419
+// PWM浠h〃鑴夊啿瀹藉害璋冨埗锛圥ulse Width Modulation锛夎鐢ㄦ潵妯℃嫙杈撳嚭鐢靛帇鎴栧姛鐜囷紝浠ユ帶鍒惰渹楦e櫒銆佺數鏈虹殑閫熷害銆丩ED鐨勪寒搴︺�佹俯搴﹁皟鑺傚櫒鐨勬俯搴︾瓑绛�
+import { pwmClass } from './libvbar-b-dxpwm.so'
+import * as os from "os"
+const pwmObj = new pwmClass();
+
+const pwm = {}
+
+/**
+ * 鐢宠pwm閫氶亾,鐢宠涓�娆″嵆鍙�
+ * @param {number} channel 鐢宠鐨勯�氶亾鍙凤紝鏀寔0~7閫氶亾
+ * @returns true/false
+ */
+pwm.request = function (channel) {
+	return pwmObj.request(channel)
+}
+/**
+ * 璁剧疆PWM妯″紡
+ * @param {number} mode  
+	0 --> CPU mode,杩炵画娉㈠舰.
+	1 --> DMA mode,鎸囧畾鏁伴噺鐨勬尝褰�.
+	2 --> DMA mode,杩炵画娉㈠舰.
+ * @returns true/false
+ */
+pwm.setMode = function (mode) {
+	return pwmObj.setMode(mode)
+}
+/**
+ * 璁剧疆PWM鍛ㄦ湡 鏄寚涓�涓畬鏁寸殑PWM淇″彿鍛ㄦ湡鎵�鑺辫垂鐨勬椂闂�
+ * @param {number} periodNs  寰呰缃殑PWM鍛ㄦ湡鍊�(鍗曚綅: ns)
+ * @returns true/false
+ */
+pwm.setPeriod = function (periodNs) {
+	return pwmObj.setPeriod(periodNs)
+}
+/**
+ * 璁剧疆PWM鍗犵┖姣� 鏄寚楂樼數骞筹紙鑴夊啿锛夊湪涓�涓畬鏁寸殑鍛ㄦ湡鍐呮墍鍗犵殑鏃堕棿
+ * @param {number} dutyNs  寰呰缃殑PWM鍗犵┖姣�(璁剧疆楂樼數骞崇殑鏃堕棿, 鍗曚綅: ns)
+ * @returns true/false
+ */
+pwm.setDuty = function (dutyNs) {
+	return pwmObj.setDuty(dutyNs)
+}
+/**
+ * 璁剧疆PWM mode 2锛屾寚浠ゆ暟閲忕殑娉㈠舰妯″紡鐨勬暟閲�
+ * @param {number} dutyNs 
+ * @returns true/false
+ */
+pwm.setDmaDuty = function (dutyNs) {
+	return pwmObj.setDmaDuty(dutyNs)
+}
+/**
+ * 浣胯兘鎸囧畾閫氶亾
+ * @param {number} channel  鐢宠鐨勯�氶亾鍙凤紝鏀寔0~7閫氶亾
+ * @param {boolean} on 
+ * @returns true/false
+ */
+pwm.enable = function (channel, on) {
+	return pwmObj.enable(channel, on)
+}
+/**
+ * 鍏抽棴鎵�閫夐�氶亾
+ * @param {number} channel 杈撳叆鍙傛暟, 鐢宠鐨勯�氶亾鍙凤紝鏀寔0~7閫氶亾
+ * @returns true/false
+ */
+pwm.free = function (channel) {
+	return pwmObj.free(channel)
+}
+/**
+ * 璁剧疆鎸囧畾閫氶亾鐨凱WM鍛ㄦ湡
+ * @param {number} channel  鐢宠鐨勯�氶亾鍙凤紝鏀寔0~7閫氶亾
+ * @param {number} periodNs  寰呰缃殑PWM鍛ㄦ湡鍊�(鍗曚綅: ns)
+ * @returns true/false
+ */
+pwm.setPeriodByChannel = function (channel, periodNs) {
+	return pwmObj.setPeriodByChannel(channel, periodNs)
+}
+/**
+ * 璁剧疆鎸囧畾閫氶亾鐨凱WM鍗犵┖姣�
+ * @param {number} channel  鐢宠鐨勯�氶亾鍙凤紝鏀寔0~7閫氶亾
+ * @param {number} dutyNs 寰呰缃殑PWM鍗犵┖姣�(璁剧疆楂樼數骞崇殑鏃堕棿, 鍗曚綅: ns)
+ * @returns true/false
+ */
+pwm.setDutyByChannel = function (channel, dutyNs) {
+	return pwmObj.setDutyByChannel(channel, dutyNs);
+}
+/**
+* 铚傞福,闇�瑕佸厛request锛宻etPeriodByChannel鍜宔nable涔嬪悗鎵嶅彲浠ヤ娇鐢�
+* @param {object} options 铚傞福鐨勫弬鏁� 
+* 		@param {number} options.channel  鐢宠鐨勯�氶亾鍙凤紝鏀寔0~7閫氶亾锛屽繀濉�
+* 		@param {number} options.period  寰呰缃殑PWM鍛ㄦ湡鍊�(鍗曚綅: ns) 缂虹渷鏄�366166
+* 		@param {number} options.count 铚傞福鐨勬鏁帮紝缂虹渷鏄�1娆� 
+* 		@param {number} options.time 铚傞福鐨勬椂闂达紝缂虹渷鏄�50姣锛屽鏋滄兂闀块福锛屼竴鑸槸500姣
+* 		@param {number} options.interval 2娆¤渹楦d箣闂寸殑闂撮殧锛岀己鐪佹槸50姣
+* 		@param {number} options.volume 铚傞福鐨勯煶閲忥紝缂虹渷鏄�50
+*/
+pwm.beep = function (options) {
+	const {
+		count = 1,
+		time = 50,
+		interval = 50,
+		volume = 50,
+		period = 366166,
+	} = options;
+	for (let i = 0; i < count; i++) {
+		pwm.setDutyByChannel(options.channel, period * volume / 255)
+		os.sleep(time)
+		pwm.setDutyByChannel(options.channel, 0)
+		if (i < (count - 1)) {
+			// 鏈�鍚庝竴娆¤渹楦f棤闂撮殧
+			os.sleep(interval)
+		}
+	}
+}
+
+export default pwm;

--
Gitblit v1.9.3