mirror of
https://github.com/rainloreley/artnet-usbdmx-converter.git
synced 2025-04-20 00:09:38 +02:00
89 lines
2.5 KiB
TypeScript
89 lines
2.5 KiB
TypeScript
import chalk from "chalk";
|
|
import ConvertHandler from "./ConvertHandler";
|
|
import renderStartupScreen from "./startupscreen";
|
|
import renderControlScreen from "./controlscreen";
|
|
import {clearInterval} from "timers";
|
|
import {exec} from "child_process";
|
|
|
|
export const defaultConvertHandler = new ConvertHandler();
|
|
let renderControlScreenTimer: NodeJS.Timeout;
|
|
|
|
/**
|
|
* Entry point of the program
|
|
*/
|
|
async function main() {
|
|
setTerminalTitle("ArtNet => USBDMX")
|
|
const selectedInfo = await renderStartupScreen();
|
|
console.log(chalk.blueBright(
|
|
"Starting ArtNet..."
|
|
));
|
|
console.log(chalk.yellow(
|
|
"Please accept any firewall requests"
|
|
))
|
|
defaultConvertHandler.startArtNetReceiver();
|
|
|
|
console.log(
|
|
chalk.blueBright(
|
|
`Open ${selectedInfo.serial} using mode ${selectedInfo.mode}...`
|
|
)
|
|
);
|
|
const openInterfaceResponse = await defaultConvertHandler.openInterface(selectedInfo.serial, selectedInfo.mode, selectedInfo.manufacturer, selectedInfo.product);
|
|
if (openInterfaceResponse.length > 0) {
|
|
console.log(
|
|
chalk.red(
|
|
openInterfaceResponse
|
|
)
|
|
)
|
|
return process.exit(1);
|
|
}
|
|
else {
|
|
console.log(
|
|
chalk.green("✅ System ready")
|
|
);
|
|
renderControlScreenTimer = setInterval(() => {
|
|
renderControlScreen();
|
|
}, 1000)
|
|
}
|
|
}
|
|
|
|
process.on('SIGINT', () => {
|
|
clearInterval(renderControlScreenTimer);
|
|
defaultConvertHandler.closeInterface();
|
|
process.exit(0);
|
|
}); // CTRL+C
|
|
process.on('SIGQUIT', () => {
|
|
clearInterval(renderControlScreenTimer);
|
|
defaultConvertHandler.closeInterface();
|
|
process.exit(0);
|
|
}); // Keyboard quit
|
|
process.on('SIGTERM', () => {
|
|
clearInterval(renderControlScreenTimer);
|
|
defaultConvertHandler.closeInterface();
|
|
process.exit(0);
|
|
}); // `kill` command
|
|
process.on('SIGHUP', () => {
|
|
clearInterval(renderControlScreenTimer);
|
|
defaultConvertHandler.closeInterface();
|
|
process.exit(0);
|
|
}); // close window
|
|
|
|
process.on('uncaughtException', (err) => {
|
|
clearInterval(renderControlScreenTimer);
|
|
console.log(
|
|
chalk.red(`⛔ A fatal error has occurred`)
|
|
);
|
|
console.log(err);
|
|
exec("pause press [enter]");
|
|
process.exit(0);
|
|
})
|
|
main();
|
|
|
|
/**
|
|
* Sets the title of the terminal
|
|
* @param title new title
|
|
*/
|
|
function setTerminalTitle(title: string){
|
|
process.stdout.write(
|
|
String.fromCharCode(27) + "]0;" + title + String.fromCharCode(7)
|
|
);
|
|
} |