37 lines
1.2 KiB
C++
37 lines
1.2 KiB
C++
#pragma once
|
|
#include "StateManager.h"
|
|
#include "IState.h"
|
|
#include "BlockingQueue.h"
|
|
#include "keymonitor.h"
|
|
|
|
using HgBtn = KeyMonitor::HGKey;
|
|
|
|
class MotorController
|
|
{
|
|
public:
|
|
MotorController(/* args */);
|
|
~MotorController();
|
|
void PutMsg(StateInfo mode);
|
|
private:
|
|
void runloop();
|
|
void SendMsg();
|
|
void procmsg();
|
|
|
|
private:
|
|
std::atomic<bool> m_bloop;
|
|
BlockingQueue<StateInfo> m_msg;
|
|
std::shared_ptr<std::thread> m_threadmsgloop;
|
|
std::shared_ptr<KeyMonitor> m_keyMinitor;
|
|
const std::map<HgBtn,StateInfo> m_keystats={
|
|
{HgBtn::Key_Enter,{HGScannerStatus::Mode_Set_Key_Enter,0}},
|
|
{HgBtn::Key_Cancle,{HGScannerStatus::Mode_Set_Key_Back,0}},
|
|
{HgBtn::Key_Count,{HGScannerStatus::Mode_Set_Key_Count,0}},
|
|
{HgBtn::Key_Handle,{HGScannerStatus::Mode_Set_HandMode,0}},
|
|
{HgBtn::Key_DoubleFeed,{HGScannerStatus::Mode_Set_Key_EnDoubleFeed,0}},
|
|
{HgBtn::Key_Left,{HGScannerStatus::Mode_Set_Key_Left,0}},
|
|
{HgBtn::Key_Menu,{HGScannerStatus::Mode_Set_Key_Manual,0}},
|
|
{HgBtn::Key_Right,{HGScannerStatus::Mode_Set_Key_Right,0}},
|
|
{HgBtn::Key_Clear,{HGScannerStatus::Mode_Set_Key_ClearCount,0}}
|
|
};
|
|
};
|