#pragma once #include #include #include #define IOEXPORTPATH "/sys/class/gpio/export" #define PWMEXPORTPATH "/sys/class/pwm/pwmchip%d/export" template std::string string_format(const std::string& format, Args ... args) { size_t size = snprintf(nullptr, 0, format.c_str(), args ...) + 1; std::unique_ptr buf(new char[size]); snprintf(buf.get(), size, format.c_str(), args ...); return std::string(buf.get(), buf.get() + size - 1); } template void write_dev(std::string path, T value) { std::ofstream ofout(path); ofout << value; } extern int read_dev_i(std::string path); extern std::string read_dev_s(std::string path); enum PORTS { Start = 171, Stop = 49, Power = 5, Fpga_Load = 8, #ifndef G300 Power_12v_Off = 12, #endif MotorPower = 48, CuoZhiMotor_Reset = 56, CuoZhiMotor_Sleep = 57, CuoZhiMotor_Enable = 58, CuoZhiMotor_Direction = 62, CuoZhiMotor_Decay = 63, CuoZhiMotor_Home = 184, CuoZhiMotor_Fault = 185, CuoZhiMotor_Mode0 = 59, CuoZhiMotor_Mode1 = 60, CuoZhiMotor_Mode2 = 61, Cover = 189,// 'GPIO6A5' opened:0 ; closed:1 Paper = 225,// 'GPIO7B1' has paper:0 ; no paper:1 Scan = 226,// 'GPIO7B2' no paper:0 ; has paper:1 Scan1 = 102, Double_Paper = 219,// 'GPIO7A3' not doubled:0 ; doubled:1 Double_Enable = 250,// 'GPIO8A2' off: 0 ; on: 1 ZouZhiMotor_Reset = 64, ZouZhiMotor_Sleep = 65, ZouZhiMotor_Enable = 66, ZouZhiMotor_Direction = 70, ZouZhiMotor_Decay = 71, ZouZhiMotor_Home = 187, ZouZhiMotor_Fault = 188, ZouZhiMotor_Mode0 = 67, ZouZhiMotor_Mode1 = 68, ZouZhiMotor_Mode2 = 69, CIS_3v3_Off = 96, CIS_5v_En = 98, Fpga_InitDone = 99, Image_In_Transfer = 101, Fpga_Reset = 232 }; class DeviceExport { public: DeviceExport(); private: #ifndef G300 const int ports[37] = { Start , Stop, Power, Fpga_Load, Power_12v_Off, MotorPower, CuoZhiMotor_Reset, CuoZhiMotor_Sleep, CuoZhiMotor_Enable, CuoZhiMotor_Direction, CuoZhiMotor_Decay, CuoZhiMotor_Home, CuoZhiMotor_Fault , CuoZhiMotor_Mode0 , CuoZhiMotor_Mode1, CuoZhiMotor_Mode2, Cover, Paper, Scan, Scan1,Double_Paper, Double_Enable, ZouZhiMotor_Reset, ZouZhiMotor_Sleep, ZouZhiMotor_Enable, ZouZhiMotor_Direction, ZouZhiMotor_Decay, ZouZhiMotor_Home, ZouZhiMotor_Fault, ZouZhiMotor_Mode0, ZouZhiMotor_Mode1, ZouZhiMotor_Mode2, CIS_3v3_Off, CIS_5v_En, Fpga_InitDone, Image_In_Transfer, Fpga_Reset }; #else const int ports[36] = { Start , Stop, Power, Fpga_Load, MotorPower, CuoZhiMotor_Reset, CuoZhiMotor_Sleep, CuoZhiMotor_Enable, CuoZhiMotor_Direction, CuoZhiMotor_Decay, CuoZhiMotor_Home, CuoZhiMotor_Fault , CuoZhiMotor_Mode0 , CuoZhiMotor_Mode1, CuoZhiMotor_Mode2, Cover, Paper, Scan, Scan1, Double_Paper, Double_Enable, ZouZhiMotor_Reset, ZouZhiMotor_Sleep, ZouZhiMotor_Enable, ZouZhiMotor_Direction, ZouZhiMotor_Decay, ZouZhiMotor_Home, ZouZhiMotor_Fault, ZouZhiMotor_Mode0, ZouZhiMotor_Mode1, ZouZhiMotor_Mode2, CIS_3v3_Off, CIS_5v_En, Fpga_InitDone, Image_In_Transfer, Fpga_Reset }; #endif const int pwms[2] = { 0, 1 }; };