From abf0b75beed7c2ffc010a1923dba8f7b75914a6c Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期五, 15 十一月 2024 15:39:29 +0800
Subject: [PATCH] gx
---
/dev/null | 39 -------------
src/views/home/index.vue | 4
src/samples/deviceApi/oumulong-HBP-9030.ts | 13 ++++
src/samples/deviceApi/mbp7000qy.ts | 2
src/samples/deviceApi/yuyue.ts | 59 ++++++++++++++++---
src/test.js | 30 ++++++++++
6 files changed, 95 insertions(+), 52 deletions(-)
diff --git a/src/samples/deviceApi/mbp7000qy.ts b/src/samples/deviceApi/mbp7000qy.ts
index f74caa6..7788161 100644
--- a/src/samples/deviceApi/mbp7000qy.ts
+++ b/src/samples/deviceApi/mbp7000qy.ts
@@ -28,7 +28,7 @@
console.log('端口异常端口链接断开')
console.log(err)
})
- const parser = serialport.pipe(new InterByteTimeoutParser({maxBufferSize:20}))
+ const parser = serialport.pipe(new InterByteTimeoutParser({interval: 500 ,maxBufferSize:20}))
// parser.on('ready', () => console.log('the ready byte sequence has been received'))
parser.on('data',(value: string | any[]) =>{
diff --git a/src/samples/deviceApi/oumulong-HBP-9030.ts b/src/samples/deviceApi/oumulong-HBP-9030.ts
index 05c711d..5c7773c 100644
--- a/src/samples/deviceApi/oumulong-HBP-9030.ts
+++ b/src/samples/deviceApi/oumulong-HBP-9030.ts
@@ -1,5 +1,6 @@
// 欧姆龙 HBP-9030 115200
import { ElMessage } from 'element-plus'
+import { ipcRenderer } from 'electron'
const { SerialPort } = require('serialport')
const { DelimiterParser } = require('@serialport/parser-delimiter')
const { ByteLengthParser } = require('@serialport/parser-byte-length')
@@ -15,27 +16,37 @@
message: '端口打开失败!',
type: 'error',
})
+ ipcRenderer.invoke('logger', '端口打开失败')
console.log(err)
}else{
ElMessage({
message: '端口打开成功',
type: 'success',
})
+ ipcRenderer.invoke('logger', '端口打开成功')
}
})
serialport.on("close",(err: any)=>{
console.log('端口异常端口链接断开')
console.log(err)
+ ipcRenderer.invoke('logger', '端口关闭了')
+ })
+ serialport.on("error",(err: any)=>{
+ console.log('端口异常端口链接断开')
+ console.log(err)
+ ipcRenderer.invoke('logger', '端口异常断开')
})
// 解析分割数据流
const parser = serialport.pipe(new ByteLengthParser({ length: 14*4-1 }))
parser.on('data', (value: string | any[])=>{
console.log(value.toString())
+ ipcRenderer.invoke('logger', '串口消息')
+ ipcRenderer.invoke('logger', value)
+ ipcRenderer.invoke('logger', value.toString())
const str=value.toString()
const list=str.split(',')
console.log(list)
if(list.length===11){
-
sockteStore().setxyjSockte(
{
deviceName:'HBP-9030',
diff --git a/src/samples/deviceApi/yuyue.ts b/src/samples/deviceApi/yuyue.ts
index 29a50f3..050daa5 100644
--- a/src/samples/deviceApi/yuyue.ts
+++ b/src/samples/deviceApi/yuyue.ts
@@ -14,6 +14,15 @@
let serialPort:any; // 串口实例
+ // 将十六进制字符串转换为 Uint8Array
+ const hexToUint8Array=(hex:any)=> {
+ const bytes = [];
+ for (let i = 0; i < hex.length; i += 2) {
+ bytes.push(parseInt(hex.substr(i, 2), 16));
+ }
+ return new Uint8Array(bytes);
+}
+
const initPort=(path:String,baudRate:Number)=>{
console.log('初始化打开鱼跃血压计端口')
if(reconnectAttempts!==0){
@@ -85,24 +94,56 @@
console.log(err)
})
// 解析分割数据流
- //ST,GS 70.4kg
//
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 31 3A 35 33 3B CA D5 CB F5 D1 B9 3A 31 31 33 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 39 30 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 37 38 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
//32 30 32 34 2F 38 2F 31 35 2F 31 31 3A 33 33 3A 33 33 3B CA D5 CB F5 D1 B9 3A 31 32 34 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 38 30 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 32 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
//高压124 , 低压 80 , 脉搏82
+
+ //2024/11/14/18:50:5;收缩压:113 mmHg;舒张压:85 mmHg;脉搏:70 次/分钟;
+
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 31 3A 35 33 3B CA D5 CB F5 D1 B9 3A 31 31 33 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 39 30 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 37 38 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 33 3A 36 3B CA D5 CB F5 D1 B9 3A 31 32 39 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 34 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 36 35 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 35 3A 31 39 3B CA D5 CB F5 D1 B9 3A 31 31 31 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 35 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 37 38 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 35 3A 35 36 3B CA D5 CB F5 D1 B9 3A 31 30 39 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 32 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 36 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 36 3A 33 34 3B CA D5 CB F5 D1 B9 3A 31 30 37 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 39 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 32 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 37 3A 34 34 3B CA D5 CB F5 D1 B9 3A 31 31 37 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 38 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 37 36 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 38 3A 33 34 3B CA D5 CB F5 D1 B9 3A 31 31 38 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 32 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 34 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 33 39 3A 31 35 3B CA D5 CB F5 D1 B9 3A 31 31 35 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 36 38 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 31 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 34 30 3A 33 33 3B CA D5 CB F5 D1 B9 3A 31 32 31 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 35 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 33 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 34 31 3A 39 3B CA D5 CB F5 D1 B9 3A 31 32 31 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 30 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 37 38 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 34 31 3A 34 39 3B CA D5 CB F5 D1 B9 3A 31 32 36 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 33 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 30 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+ //32 30 32 34 2F 31 31 2F 31 34 2F 31 38 3A 34 32 3A 33 35 3B CA D5 CB F5 D1 B9 3A 31 31 35 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 37 34 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 37 39 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A
+
const parser = serialport.pipe(new DelimiterParser({ delimiter:Buffer.from([13,10]),includeDelimiter:true }))
- parser.on('data', (value: string | any[])=>{
- // console.log(value.toString())
+ parser.on('data', (value:any)=>{
+ console.log(value)
try{
- const str=value.toString()
- const gy=str.substring(23,27)
- const dy=str.substring(36,39)
- const mb=str.substring(47,50)
- sockteStore().setweightSockte(
+ // const uint8Array = hexToUint8Array(value.replace(/\s/g, '')); // 移除空格
+ // 使用 TextDecoder 解码 Uint8Array
+ const decoder = new TextDecoder('gbk'); // 假设使用 GBK 编码
+ const originalString = decoder.decode(value);
+
+ console.log("原始字符串:", originalString);
+
+ // 使用正则表达式匹配收缩压、舒张压和脉搏的值
+ const systolicPressureMatch = originalString.match(/收缩压:(\d+) mmHg/);
+ const diastolicPressureMatch = originalString.match(/舒张压:(\d+) mmHg/);
+ const pulseMatch = originalString.match(/脉搏:(\d+) 次\/分钟/);
+
+ // 提取匹配的值
+ const systolicPressure = systolicPressureMatch ? parseInt(systolicPressureMatch[1], 10) : null;
+ const diastolicPressure = diastolicPressureMatch ? parseInt(diastolicPressureMatch[1], 10) : null;
+ const pulse = pulseMatch ? parseInt(pulseMatch[1], 10) : null
+ // 输出结果
+ console.log("收缩压:", systolicPressure); // 124
+ console.log("舒张压:", diastolicPressure); // 80
+ console.log("脉搏:", pulse); // 82
+ sockteStore().setxyjSockte(
{
deviceName:'yuyue',
type:"血压计",
- result:gy+','+dy+','+mb,
+ result:systolicPressure+','+diastolicPressure+','+pulse,
resultTime:new Date().toString(),
state:2
}
diff --git a/src/test.js b/src/test.js
new file mode 100644
index 0000000..f9adfc8
--- /dev/null
+++ b/src/test.js
@@ -0,0 +1,30 @@
+function hexToString(hex) {
+ let str = '';
+ for (let i = 0; i < hex.length; i += 2) {
+ str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
+ }
+ return str;
+ }
+
+ const hexData = "32 30 32 34 2F 38 2F 31 35 2F 31 31 3A 33 33 3A 33 33 3B CA D5 CB F5 D1 B9 3A 31 32 34 20 6D 6D 48 67 3B CA E6 D5 C5 D1 B9 3A 38 30 20 6D 6D 48 67 3B C2 F6 B2 AB 3A 38 32 20 B4 CE 2F B7 D6 D6 D3 3B 0D 0A";
+ const originalString = hexToString(hexData.replace(/\s/g, '')); // 移除空格
+
+ console.log(originalString);
+ console.log('----------------')
+ // 解析后的原始字符串
+const data = originalString;
+
+// 使用正则表达式匹配收缩压、舒张压和脉搏的值
+const systolicPressureMatch = data.match(/收缩压:(\d+) mmHg/);
+const diastolicPressureMatch = data.match(/舒张压:(\d+) mmHg/);
+const pulseMatch = data.match(/脉搏:(\d+) 次\/分钟/);
+
+// 提取匹配的值
+const systolicPressure = systolicPressureMatch ? parseInt(systolicPressureMatch[1], 10) : null;
+const diastolicPressure = diastolicPressureMatch ? parseInt(diastolicPressureMatch[1], 10) : null;
+const pulse = pulseMatch ? parseInt(pulseMatch[1], 10) : null;
+
+// 输出结果
+console.log("收缩压:", systolicPressure); // 124
+console.log("舒张压:", diastolicPressure); // 80
+console.log("脉搏:", pulse); // 82
\ No newline at end of file
diff --git a/src/views/home/index.vue b/src/views/home/index.vue
index d5912a7..3bf2ed6 100644
--- a/src/views/home/index.vue
+++ b/src/views/home/index.vue
@@ -287,7 +287,7 @@
import {initPort as mbp9020} from '@/samples/deviceApi/mbp-9020'
import {initPort as rbp9000c} from '@/samples/deviceApi/RBP-9000c'
-
+import {initPort as yuyueDevice} from '@/samples/deviceApi/yuyue'
import {initPort as M503} from '@/samples/deviceApi/M503'
import {initPort as seca102} from '@/samples/deviceApi/seca102'
import {initPort as seca101Banger} from '@/samples/deviceApi/seca101Banger'
@@ -992,7 +992,7 @@
rbp9000c(configData.value.xueyanjiPortPath,configData.value.xueyanjiBaudRate)
// 鱼跃血压计
}else if(configData.value.xyj_type==='yuyue'){
- rbp9000c(configData.value.xueyanjiPortPath,configData.value.xueyanjiBaudRate)
+ yuyueDevice(configData.value.xueyanjiPortPath,configData.value.xueyanjiBaudRate)
}
else{
oumulongHbp9030(configData.value.xueyanjiPortPath,configData.value.xueyanjiBaudRate)
diff --git a/test.js b/test.js
deleted file mode 100644
index d4e5896..0000000
--- a/test.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Client connection */
-/* --------------------------------------------------------------------------------- */
-const net =require('net');
-
-const client = new net.Socket()
-var intervalConnect = false;
-
-function connect() {
- client.connect({
- port: 9010,
- host: "company.leon056.com"
- })
-}
-
-function launchIntervalConnect() {
- if(false != intervalConnect) return
- intervalConnect = setInterval(connect, 5000)
-}
-
-function clearIntervalConnect() {
- if(false == intervalConnect) return
- clearInterval(intervalConnect)
- intervalConnect = false
-}
-
-client.on('connect', () => {
- clearIntervalConnect()
- console.log('connected to server', 'TCP')
- client.write('CLIENT connected');
-})
-
-client.on('error', (err) => {
- console.log(err.code, 'TCP ERROR')
- launchIntervalConnect()
-})
-client.on('close', launchIntervalConnect)
-client.on('end', launchIntervalConnect)
-
-connect()
\ No newline at end of file
--
Gitblit v1.8.0