import { useState, useCallback } from 'react'; import { useStore } from '../store/useStore'; export const useSerial = () => { const [port, setPort] = useState(null); const { setConnectedDevice, setLoading } = useStore(); const connect = useCallback(async () => { if (!('serial' in navigator)) { alert('您的浏览器不支持 Web Serial API'); return; } try { setLoading(true); const port = await (navigator as any).serial.requestPort(); await port.open({ baudRate: 9600 }); setPort(port); setConnectedDevice({ id: 'serial-port', name: '串口设备', type: 'serial', status: 'connected' }); console.log('Serial Port Connected'); } catch (error) { console.error('Serial Connection Error:', error); } finally { setLoading(false); } }, [setConnectedDevice, setLoading]); const disconnect = useCallback(async () => { if (port) { await port.close(); } setPort(null); setConnectedDevice(null); }, [port, setConnectedDevice]); return { port, connect, disconnect }; };