diff --git a/desktop/src/renderer/src/components/device-modal/serial-port.tsx b/desktop/src/renderer/src/components/device-modal/serial-port.tsx index 2f79829..3bb71a7 100644 --- a/desktop/src/renderer/src/components/device-modal/serial-port.tsx +++ b/desktop/src/renderer/src/components/device-modal/serial-port.tsx @@ -41,7 +41,7 @@ export const SerialPort = ({ setMsg }: SerialPortProps): ReactElement => { useEffect(() => { const savedBaudRate = storage.getBaudRate() setBaudRate(savedBaudRate) - + getSerialPorts(true) const rmListener = window.electron.ipcRenderer.on(IpcEvents.OPEN_SERIAL_PORT_RSP, (_, err) => { @@ -68,18 +68,24 @@ export const SerialPort = ({ setMsg }: SerialPortProps): ReactElement => { if (autoOpen) { const port = storage.getSerialPort() if (port && serialPorts.includes(port)) { - await selectSerialPort(port) + const savedBaudRate = storage.getBaudRate() + await selectSerialPort(port, savedBaudRate) } } } - async function selectSerialPort(port: string): Promise { + async function selectSerialPort(port: string, customBaudRate?: number): Promise { if (serialPortState === 'connecting') return setSerialPortState('connecting') setIsFailed(false) setMsg('') - const success = await window.electron.ipcRenderer.invoke(IpcEvents.OPEN_SERIAL_PORT, port, baudRate) + let rate = baudRate + if (customBaudRate && !baudRateOptions.some(option => option.value === customBaudRate)) { + rate = customBaudRate + } + + const success = await window.electron.ipcRenderer.invoke(IpcEvents.OPEN_SERIAL_PORT, port, rate) if (success) { setSerialPort(port) @@ -99,12 +105,12 @@ export const SerialPort = ({ setMsg }: SerialPortProps): ReactElement => { async function handleBaudRateChange(newBaudRate: number): Promise { setBaudRate(newBaudRate) storage.setBaudRate(newBaudRate) - + if (serialPort && serialPortState === 'connected') { - const currentPort = serialPort + const currentPort = serialPort await closeSerialPort() setTimeout(() => { - selectSerialPort(currentPort) + selectSerialPort(currentPort, newBaudRate) }, 200) } } @@ -118,7 +124,7 @@ export const SerialPort = ({ setMsg }: SerialPortProps): ReactElement => { loading={serialPortState === 'connecting'} status={isFailed ? 'error' : undefined} placeholder={t('modal.selectSerial')} - onChange={selectSerialPort} + onChange={(serialPort) => selectSerialPort(serialPort)} onClick={() => getSerialPorts(false)} />