添加新中新二代证读取器支持

This commit is contained in:
yuchenglong
2025-11-20 10:27:20 +08:00
parent 8aa5f7802f
commit 2406d600ef
27 changed files with 356 additions and 67 deletions

View File

@@ -1,42 +1,95 @@
const { app, BrowserWindow } = require("electron");
const path = require("path");
const { app, BrowserWindow, ipcMain } = require('electron');
const path = require('path');
const { Worker } = require('worker_threads');
let idCardWorker = null;
let mainWindow = null;
function createIdCardWorker() {
if (idCardWorker) return;
idCardWorker = new Worker(path.join(__dirname, 'idcard-worker.js'));
idCardWorker.on('message', (msg) => {
if (!mainWindow) return;
if (msg.type === 'data') {
mainWindow.webContents.send('idcard-data', { payload: msg.payload });
} else if (msg.type === 'error') {
mainWindow.webContents.send('idcard-error', { payload: msg.payload });
}
});
idCardWorker.on('error', (err) => {
console.error('Worker error:', err);
});
idCardWorker.on('exit', (code) => {
if (code !== 0) console.error(`Worker stopped with exit code ${code}`);
idCardWorker = null;
});
}
function createWindow() {
const win = new BrowserWindow({
width: 1080,
height: 1920,
webPreferences: {
preload: path.join(__dirname, "preload.js"),
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: false,
contextIsolation: true,
},
});
mainWindow = win;
// 开发环境下加载 Vite 开发服务器地址
// 生产环境下加载打包后的 index.html
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD> Vite <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ش<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> index.html
const isDev = !app.isPackaged;
if (isDev) {
win.loadURL("http://localhost:5173");
// 打开开发者工具
win.loadURL('http://localhost:5173');
// <EFBFBD>򿪿<EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹<EFBFBD><EFBFBD><EFBFBD>
win.webContents.openDevTools();
} else {
win.loadFile(path.join(__dirname, "../dist/index.html"));
win.loadFile(path.join(__dirname, '../dist/index.html'));
}
}
app.whenReady().then(() => {
createWindow();
createIdCardWorker();
app.on("activate", () => {
// IPC <20><><EFBFBD><EFBFBD>
ipcMain.handle('start_idcard_listen', () => {
if (idCardWorker) {
idCardWorker.postMessage('start');
} else {
createIdCardWorker();
idCardWorker.postMessage('start');
}
return 'started';
});
ipcMain.handle('stop_idcard_listen', () => {
if (idCardWorker) {
idCardWorker.postMessage('stop');
}
return 'stopped';
});
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow();
}
});
});
app.on("window-all-closed", () => {
if (process.platform !== "darwin") {
app.on('window-all-closed', () => {
if (idCardWorker) {
idCardWorker.terminate();
}
if (process.platform !== 'darwin') {
app.quit();
}
});