Commit 68b04970 authored by martin hou's avatar martin hou

feat: 多设备连接测试

parent d46b1db0
enum Level {
debug = 'debug',
info = 'info',
error = 'error',
}
type Message = {
level: Level;
module: string;
procedure: string;
message: string;
time: number;
};
export function ObjectPrint(obj: Record<string, any>) {
let res = '';
for (const key in obj) {
const value = obj[key];
res += `\n${key}:${JSON.stringify(value)}`
}
res += '\n'
return res;
}
export const Logger = {
messages: [] as Message[],
consoleOutput: true,
printModule: [],
info(module: string, procedure: string, message: string) {
this._append(Level.info, module, procedure, message);
},
debug(module: string, procedure: string, message: string) {
this._append(Level.debug, module, procedure, message);
},
error(module: string, procedure: string, message: string) {
this._append(Level.error, module, procedure, message);
},
save(module: string, procedure: string, message: any) { },
_append(level: Level, module: string, procedure: string, message: string) {
let log = {
level,
module,
procedure,
message: String(message),
time: new Date().getTime(),
};
this.messages.push(log);
if (this.consoleOutput) {
this._print(log);
}
if (this.messages.length > 15000) this.messages.shift();
},
_print(log: Message) {
let time = new Date(log.time);
console.info(
'[' +
(log.level == 'error' ? 'x' : '*') +
'][' +
time.toLocaleString() +
'](' +
log.module +
' - ' +
log.procedure +
') ' +
log.message
);
},
filter(module: string, procedure: string) {
return this.messages.filter((i) => i.module == module && i.procedure == procedure);
},
enableConsoleOutput() {
this.consoleOutput = true;
localStorage.setItem('Looger-consoleOutput', 'true')
},
disableConsoleOutput() {
this.consoleOutput = false;
localStorage.removeItem('Looger-consoleOutput')
},
setPrintModule(modules: string[]) {
// this.printModule = modules;
// localStorage.setItem('Looger-print-module', modules.join(' , '));
},
peek(rows: number) {
return this.messages.slice(-rows);
},
search(module: string, procedure: string, keyword?: string) {
return this.messages.filter((i: Message) => {
let r = i.module == module;
if (!r) return false;
if (procedure) {
if (i.procedure != procedure) return false;
}
if (keyword) {
if (i.message.indexOf(keyword) == -1) return false;
}
return true;
});
},
};
\ No newline at end of file
import { useEffect, useState } from 'react';
import Jensen, { BluetoothDevice } from '..';
import './index.css';
import { Logger } from './Logger'
const jensen = new Jensen();
......@@ -9,6 +10,7 @@ export function Home() {
const [devices, setDevices] = useState<Jensen.BluetoothDevice[]>([]);
const [greeting, setGreeting] = useState<string|null>(null);
/*
useEffect(() => {
jensen.connect();
jensen.onconnect = () => {
......@@ -18,6 +20,7 @@ export function Home() {
});
};
}, []);
*/
const getFilePart = () => {
const file = files[4];
......@@ -184,10 +187,25 @@ export function Home() {
}
}
const connectx = async () => {
const usb = (navigator as any).usb;
usb.getDevices().then(async (devices: any[]) => {
for (let i = 0; i < devices.length; i++)
{
let dev = devices[i];
await dev.open();
let jensen = new Jensen(Logger, dev);
await jensen.initialize();
let rst = await jensen.getDeviceInfo();
console.log(rst);
}
});
}
return (
<>
<div style={{ display: 'flex', flexDirection: 'row', gap: '16px', padding: '16px', alignItems: 'center' }}>
<button style={{ width: '200px', height: '50px' }} onClick={connect}>连接</button>
<button style={{ width: '200px', height: '50px' }} onClick={connectx}>连接</button>
<button style={{ width: '200px', height: '50px' }} onClick={getFilePart}>获取文件</button>
<button style={{ width: '200px', height: '50px' }} onClick={writeSN}>SN写号</button>
<button style={{ width: '200px', height: '50px' }} onClick={getTime}>获取时间</button>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment