| | |
| | | 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){ |
| | |
| | | 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 |
| | | } |