// // Created by illyum on 8/15/2024. // #ifndef DMX_H #define DMX_H #include #include #include #include struct DMXFixture { unsigned char r, g, b; int channel; }; class DMXEngine { public: explicit DMXEngine(const char* portName, int baudRate = 250000, int dataSize = 512); ~DMXEngine(); void start(); void stop(); void setChannelValue(int channel, unsigned char value); private: void sendDMXData(); void dumpZeros(); void configurePort(); static void dmxThreadFunc(DMXEngine* engine); void* hSerial; std::atomic running; std::vector buffer; std::thread dmxThread; }; #endif // DMX_H