iot-playground / src /hooks /useSerial.ts
3v324v23's picture
Initial commit: IoT Playground
847854e
Raw
History Blame Contribute Delete
1.15 kB
import { useState, useCallback } from 'react';
import { useStore } from '../store/useStore';
export const useSerial = () => {
const [port, setPort] = useState<any>(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 };
};