This repository has been archived on 2023-12-22. You can view files and clone it, but cannot push or open issues or pull requests.
old-monorepo/Dashboard/src/App.tsx

88 lines
1.8 KiB
TypeScript
Raw Normal View History

2021-08-26 11:39:34 +02:00
import React, { useEffect, useState } from "react";
import { createGlobalStyle } from "styled-components";
import SerialPort from "serialport";
2021-07-10 12:00:50 +02:00
import Knob from "./Components/Knob";
2021-08-26 11:39:34 +02:00
import { port, parser } from "./SerialConnection";
const GlobalStyle = createGlobalStyle`
html {
border-style: solid;
border-color: #363636;
border-width: 1px;
box-sizing: border-box;
height: 100%;
border-bottom-style: hidden;
border-right-style: hidden;
}
`;
2021-07-09 13:54:25 +02:00
const App = () => {
2021-08-26 11:39:34 +02:00
const [status, setStatus] = useState(0);
const SerialDataListener = (data: string) => {
const parsedData = data.split(",");
console.log(parsedData);
2021-08-26 11:39:34 +02:00
setStatus(parseInt(parsedData[2], 10));
};
useEffect(() => {
parser.on("data", SerialDataListener);
port.open();
return () => {
parser.removeListener("data", SerialDataListener);
port.close();
};
}, []);
2021-07-10 16:28:20 +02:00
const sendIncreaseHandler = () => {
2021-08-26 11:39:34 +02:00
setStatus(status + 1);
2021-07-10 16:28:20 +02:00
port.write("2i");
};
const sendDecreaseHandler = () => {
2021-08-26 11:39:34 +02:00
setStatus(status - 1);
2021-07-10 16:28:20 +02:00
port.write("2d");
};
const sendToggleHandler = () => {
port.write("2t");
};
return (
<div>
<GlobalStyle />
2021-07-10 16:28:20 +02:00
<Knob
increase={sendIncreaseHandler}
decrease={sendDecreaseHandler}
toggle={sendToggleHandler}
2021-08-26 11:39:34 +02:00
status={status}
2021-07-10 16:28:20 +02:00
/>
<button
type="button"
onClick={() => {
port.open();
}}
>
open
</button>
<button
type="button"
onClick={() => {
port.close();
}}
>
close
</button>
2021-06-30 09:51:39 +02:00
<button
type="button"
onClick={() => {
const list = SerialPort.list();
2021-07-10 12:00:50 +02:00
list.then((arg) => {
console.log(arg);
});
2021-06-30 09:51:39 +02:00
}}
>
list
</button>
</div>
);
};
export default App;