|
@@ -195,6 +195,9 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
AfxMessageBox("加载遥控dll失败,请检测dll是否正常!");
|
|
|
}
|
|
|
|
|
|
+#if 1
|
|
|
+ ReStartIRDevice();
|
|
|
+#else
|
|
|
// 启动服务;
|
|
|
if (g_IsAppRunning(Global::g_Config.redratpath.c_str()))
|
|
|
{
|
|
@@ -203,7 +206,7 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
else
|
|
|
{
|
|
|
TRACE("启动红老鼠进程未运行\r");
|
|
|
- if (g_StartIRApp(Global::g_Config.redratpath.c_str(), (Global::g_Config.signaldir + "\\defualt.xml").c_str(), 40000))
|
|
|
+ if (g_StartIRApp(Global::g_Config.redratpath.c_str(), ".\\default.xml", 40000))
|
|
|
{
|
|
|
TRACE("启动红老鼠进程启动成功\r");
|
|
|
}
|
|
@@ -239,7 +242,7 @@ int CIRControlWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
|
{
|
|
|
TRACE("加载信号集文件成功\r");
|
|
|
}
|
|
|
-
|
|
|
+#endif
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -310,34 +313,14 @@ void CIRControlWnd::OnCbnSelchangeSignal()
|
|
|
{
|
|
|
std::string signalpath;
|
|
|
m_wndSignalCombo.GetLBText(nCurSel, strSignal);
|
|
|
- if ( Global::g_Config.bGenerics )
|
|
|
- {
|
|
|
- signalpath = Global::g_Config.signaldir + "\\general\\";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- signalpath = Global::g_Config.signaldir + "\\product\\";
|
|
|
- }
|
|
|
-
|
|
|
- signalpath.append(strSignal.GetString());
|
|
|
- signalpath.append(".xml");
|
|
|
-
|
|
|
- // 切换信号集文件;
|
|
|
- // 加载指定目录的xml信号集文件;
|
|
|
- if (!g_loadSignalDataSet(signalpath.c_str()))
|
|
|
- {
|
|
|
- TRACE("加载信号集文件失败\r");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TRACE("加载信号集文件成功\r");
|
|
|
- UpdateSignalBtnStatus();
|
|
|
- }
|
|
|
|
|
|
// 保存到配置文件中;
|
|
|
+ Global::g_Config.use_signal = strSignal.GetString();
|
|
|
WritePrivateProfileString("ir-device", "use-signal", strSignal.GetString(), Global::g_szConfig);
|
|
|
-
|
|
|
}
|
|
|
+
|
|
|
+ DisableSignalBtn();
|
|
|
+ ReLoadSignalXml();
|
|
|
}
|
|
|
|
|
|
void CIRControlWnd::SetPropListFont()
|
|
@@ -361,59 +344,130 @@ void CIRControlWnd::SetPropListFont()
|
|
|
//m_wndObjectCombo.SetFont(&m_fntPropList);
|
|
|
}
|
|
|
|
|
|
-void CIRControlWnd::LoadSignals()
|
|
|
+void CIRControlWnd::ReStartIRDevice(std::string signalName)
|
|
|
{
|
|
|
- filehelper fh;
|
|
|
- fh.getfolderfiles((Global::g_Config.signaldir + "\\general\\").c_str(), NULL, &m_vtsignal_gen);
|
|
|
- fh.getfolderfiles((Global::g_Config.signaldir + "\\product\\").c_str(), NULL, &m_vtsignal_pro);
|
|
|
+ std::thread t([&](std::string signal_name) {
|
|
|
+ // 结束进程;
|
|
|
+ if (g_CloseApp)
|
|
|
+ g_CloseApp();
|
|
|
+
|
|
|
+ // 默认加载配置的信号集文件;
|
|
|
+ std::string signale = Global::g_Config.bGenerics ? Global::g_Config.signaldir + "\\general\\" : Global::g_Config.signaldir + "\\product\\";
|
|
|
+ signale.append(Global::g_Config.use_signal + ".xml");
|
|
|
+ if ( !PathFileExists(signale.c_str()) )
|
|
|
+ {
|
|
|
+ m_wndSignalCombo.SetCurSel(-1);
|
|
|
+ signale = ".\\default.xml";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ m_wndSignalCombo.SelectString(0, Global::g_Config.use_signal.c_str());
|
|
|
+ }
|
|
|
|
|
|
- // 添加到combobox中;
|
|
|
- std::string signalpath;
|
|
|
- if (Global::g_Config.bGenerics )
|
|
|
- {
|
|
|
- signalpath = Global::g_Config.signaldir + "\\general\\";
|
|
|
+ if (g_StartIRApp(Global::g_Config.redratpath.c_str(), signale.c_str(), 40000))
|
|
|
+ {
|
|
|
+ TRACE("启动红老鼠进程启动成功\r");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ TRACE("启动红老鼠进程启动失败\r");
|
|
|
+ AfxMessageBox("启动红老鼠进程启动失败!");
|
|
|
+ }
|
|
|
|
|
|
- m_wndSignalCombo.ResetContent();
|
|
|
- for ( auto it : m_vtsignal_gen)
|
|
|
+ BOOL bRet = FALSE;
|
|
|
+ // 连接服务器;
|
|
|
+ for (int i = 0; i < 5; i++)
|
|
|
{
|
|
|
- m_wndSignalCombo.AddString(fh.getfilename(it).c_str());
|
|
|
+ if ((bRet = g_Connect(_T("127.0.0.1"), 40000)))
|
|
|
+ break;
|
|
|
+ Sleep(1000);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!bRet)
|
|
|
+ AfxMessageBox("连接红老鼠服务端失败,请重启设备!");
|
|
|
+
|
|
|
+ // 更新按钮状态;
|
|
|
+ UpdateSignalBtnStatus();
|
|
|
+ // 获取设备列表,以逗号分隔;
|
|
|
+ std::string devices = g_getDeviceNames();
|
|
|
+ if (devices.size() == 0)
|
|
|
+ {
|
|
|
+ AfxMessageBox("当前无红老鼠设备连接!");
|
|
|
}
|
|
|
+ }, signalName);
|
|
|
+ t.detach();
|
|
|
+}
|
|
|
+
|
|
|
+void CIRControlWnd::ReLoadSignalXml()
|
|
|
+{
|
|
|
+ std::string signaldir,signalpath;
|
|
|
+ if (Global::g_Config.bGenerics)
|
|
|
+ {
|
|
|
+ signaldir = Global::g_Config.signaldir + "\\general\\";
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- signalpath = Global::g_Config.signaldir + "\\product\\";
|
|
|
- m_wndSignalCombo.ResetContent();
|
|
|
- for (auto it : m_vtsignal_pro)
|
|
|
- {
|
|
|
- m_wndSignalCombo.AddString(fh.getfilename(it).c_str());
|
|
|
- }
|
|
|
- }
|
|
|
+ signaldir = Global::g_Config.signaldir + "\\product\\";
|
|
|
+ }
|
|
|
|
|
|
+ signalpath = signaldir;
|
|
|
signalpath.append(Global::g_Config.use_signal + ".xml");
|
|
|
if (!PathFileExists(signalpath.c_str()))
|
|
|
{
|
|
|
+ AfxMessageBox(_T("该信号文件不存在!"));
|
|
|
+ // 设置默认的;
|
|
|
CString strSignal;
|
|
|
m_wndSignalCombo.SetCurSel(0);
|
|
|
m_wndSignalCombo.GetLBText(0, strSignal);
|
|
|
|
|
|
- // 加载指定目录的xml信号集文件;
|
|
|
- if (!g_loadSignalDataSet(signalpath.c_str()))
|
|
|
- {
|
|
|
- TRACE("加载信号集文件失败\r");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TRACE("加载信号集文件成功\r");
|
|
|
- UpdateSignalBtnStatus();
|
|
|
- }
|
|
|
+ signalpath = signaldir;
|
|
|
+ signalpath.append(strSignal.GetString());
|
|
|
+ signalpath.append(".xml");
|
|
|
|
|
|
// 保存到配置文件中;
|
|
|
+ Global::g_Config.use_signal = strSignal.GetString();
|
|
|
WritePrivateProfileString("ir-device", "use-signal", strSignal.GetString(), Global::g_szConfig);
|
|
|
}
|
|
|
- else
|
|
|
+ else // 切换通用类型时用到;
|
|
|
{
|
|
|
m_wndSignalCombo.SelectString(0, Global::g_Config.use_signal.c_str());
|
|
|
}
|
|
|
+
|
|
|
+ // 加载指定目录的xml信号集文件;
|
|
|
+ if (!g_loadSignalDataSet(signalpath.c_str()))
|
|
|
+ {
|
|
|
+ TRACE("加载信号集文件失败\r");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ TRACE("加载信号集文件成功\r");
|
|
|
+ UpdateSignalBtnStatus();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+void CIRControlWnd::LoadSignals()
|
|
|
+{
|
|
|
+ filehelper fh;
|
|
|
+ fh.getfolderfiles((Global::g_Config.signaldir + "\\general\\").c_str(), NULL, &m_vtsignal_gen);
|
|
|
+ fh.getfolderfiles((Global::g_Config.signaldir + "\\product\\").c_str(), NULL, &m_vtsignal_pro);
|
|
|
+
|
|
|
+ // 添加到combobox中;
|
|
|
+ if (Global::g_Config.bGenerics )
|
|
|
+ {
|
|
|
+ m_wndSignalCombo.ResetContent();
|
|
|
+ for ( auto it : m_vtsignal_gen)
|
|
|
+ {
|
|
|
+ m_wndSignalCombo.AddString(fh.getfilename(it).c_str());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ m_wndSignalCombo.ResetContent();
|
|
|
+ for (auto it : m_vtsignal_pro)
|
|
|
+ {
|
|
|
+ m_wndSignalCombo.AddString(fh.getfilename(it).c_str());
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void CIRControlWnd::Loadlayout(std::vector<BtnInfo>& vt)
|
|
@@ -524,7 +578,7 @@ void CIRControlWnd::OnPaint()
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-void CIRControlWnd::OnSignalBtnClick(UINT uId)
|
|
|
+void CIRControlWnd::OnSignalBtnClick(UINT uId) // 发送遥控信号;
|
|
|
{
|
|
|
CWnd* pWnd = GetFocus();
|
|
|
int id = pWnd->GetDlgCtrlID();
|
|
@@ -557,12 +611,12 @@ void CIRControlWnd::OnUpdateCheckBox(CCmdUI* pCmdUI)
|
|
|
void CIRControlWnd::OnCheckBoxClicked()
|
|
|
{
|
|
|
Global::g_Config.bGenerics = m_wndSignalCheck.IsChecked();
|
|
|
+ // 保存到配置文件中;
|
|
|
+ WritePrivateProfileString("ir-device", "generics", Global::g_Config.bGenerics ? "1" : "0", Global::g_szConfig);
|
|
|
+
|
|
|
// 添加到combobox中;
|
|
|
- std::string signalpath;
|
|
|
if (Global::g_Config.bGenerics)
|
|
|
{
|
|
|
- signalpath = Global::g_Config.signaldir + "\\general\\";
|
|
|
-
|
|
|
m_wndSignalCombo.ResetContent();
|
|
|
for (auto it : m_vtsignal_gen)
|
|
|
{
|
|
@@ -571,41 +625,15 @@ void CIRControlWnd::OnCheckBoxClicked()
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- signalpath = Global::g_Config.signaldir + "\\product\\";
|
|
|
m_wndSignalCombo.ResetContent();
|
|
|
for (auto it : m_vtsignal_pro)
|
|
|
{
|
|
|
m_wndSignalCombo.AddString(filehelper::getfilename(it).c_str());
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- signalpath.append(Global::g_Config.use_signal + ".xml");
|
|
|
- if (!PathFileExists(signalpath.c_str()))
|
|
|
- {
|
|
|
- CString strSignal;
|
|
|
- m_wndSignalCombo.SetCurSel(0);
|
|
|
- m_wndSignalCombo.GetLBText(0, strSignal);
|
|
|
-
|
|
|
- // 加载指定目录的xml信号集文件;
|
|
|
- if (!g_loadSignalDataSet(signalpath.c_str()))
|
|
|
- {
|
|
|
- TRACE("加载信号集文件失败\r");
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- TRACE("加载信号集文件成功\r");
|
|
|
- UpdateSignalBtnStatus();
|
|
|
- }
|
|
|
-
|
|
|
- // 保存到配置文件中;
|
|
|
- WritePrivateProfileString("ir-device", "use-signal", strSignal.GetString(), Global::g_szConfig);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- m_wndSignalCombo.SelectString(0, Global::g_Config.use_signal.c_str());
|
|
|
- }
|
|
|
-
|
|
|
- WritePrivateProfileString("ir-device", "generics", Global::g_Config.bGenerics ? "1" : "0", Global::g_szConfig);
|
|
|
+
|
|
|
+ DisableSignalBtn();
|
|
|
+ ReLoadSignalXml();
|
|
|
}
|
|
|
|
|
|
void CIRControlWnd::OnUpdateBtnRestartProc(CCmdUI* pCmdUI)
|
|
@@ -613,8 +641,12 @@ void CIRControlWnd::OnUpdateBtnRestartProc(CCmdUI* pCmdUI)
|
|
|
pCmdUI->Enable(TRUE);
|
|
|
}
|
|
|
|
|
|
-void CIRControlWnd::OnBtnRestartProcClicked()
|
|
|
+void CIRControlWnd::OnBtnRestartProcClicked() // 重启红老鼠;
|
|
|
{
|
|
|
+#if 1
|
|
|
+ DisableSignalBtn();
|
|
|
+ ReStartIRDevice();
|
|
|
+#else
|
|
|
// 关闭旧类型进程;
|
|
|
if (g_CloseApp)
|
|
|
g_CloseApp();
|
|
@@ -622,7 +654,7 @@ void CIRControlWnd::OnBtnRestartProcClicked()
|
|
|
// 新启动类型进程;
|
|
|
if (g_StartIRApp)
|
|
|
{
|
|
|
- if (g_StartIRApp(Global::g_Config.redratpath.c_str(), (Global::g_Config.signaldir + "\\defualt.xml").c_str(), 40000))
|
|
|
+ if (g_StartIRApp(Global::g_Config.redratpath.c_str(), ".\\default.xml", 40000))
|
|
|
{
|
|
|
TRACE("启动红老鼠进程启动成功\r");
|
|
|
}
|
|
@@ -658,6 +690,7 @@ void CIRControlWnd::OnBtnRestartProcClicked()
|
|
|
TRACE("加载信号集文件成功\r");
|
|
|
UpdateSignalBtnStatus();
|
|
|
}
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
void CIRControlWnd::UpdateSignalBtnStatus()
|