scbc.sat2 пре 5 година
родитељ
комит
f9e7926038

+ 27 - 22
SATHelper/SATHelper/IRControlWnd.cpp

@@ -394,7 +394,7 @@ void CIRControlWnd::ReLoadSignalXml()
 	if (Global::g_Config.enableTW)
 	{
 		std::string signaldir = Global::g_Config.twSignaldir;
-		std::string signalpath = signaldir;
+		std::string signalpath = signaldir + "\\";
 
 		signalpath.append(Global::g_Config.twUseSignal + ".xml");
 		if (!PathFileExists(signalpath.c_str()))
@@ -419,7 +419,7 @@ void CIRControlWnd::ReLoadSignalXml()
 		}
 
 		// 加载指定目录的xml信号集文件;
-		if (!TW::LoadXml(signalpath.c_str()))
+		if (0 != TW::LoadXml(signalpath.c_str()))
 		{
 			TRACE("加载信号集文件失败\r");
 		}
@@ -481,7 +481,7 @@ void CIRControlWnd::LoadSignals()
 	if (Global::g_Config.enableTW)
 	{
 		filehelper fh;
-		fh.getfiles_findout_subfolder(Global::g_Config.signaldir.c_str(), NULL, &m_vtsignal_tw);
+		fh.getfiles_findout_subfolder(Global::g_Config.twSignaldir.c_str(), NULL, &m_vtsignal_tw);
 
 		m_wndSignalCombo.ResetContent();
 		for (auto it : m_vtsignal_tw)
@@ -631,11 +631,13 @@ void CIRControlWnd::OnSignalBtnClick(UINT uId) // 发送遥控信号;
 	{
 		CString text;
 		pWnd->GetWindowText(text);
+
 		if (Global::g_Config.enableTW)
 		{
+			TW::SendKey(text.GetString());
+			Sleep(1000);
 		}
-		else 
-		{
+		else {
 			// 发送单信号;
 			if (RedRat::g_sendSignal(text.GetString(), 1, 20))
 			{
@@ -647,6 +649,7 @@ void CIRControlWnd::OnSignalBtnClick(UINT uId) // 发送遥控信号;
 				TRACE("发送单信号失败\n");
 			}
 		}
+
 	}
 }
 
@@ -707,29 +710,31 @@ void CIRControlWnd::OnBtnRestartProcClicked() // 重启红老鼠;
 
 void CIRControlWnd::UpdateSignalBtnStatus()
 {
+	std::string data;
 	if (Global::g_Config.enableTW)
 	{
-
+		if (TW::GetSignalsName)
+			data = TW::GetSignalsName();
 	}
 	else{
 		// 获取信号集;
-		if (RedRat::g_getSignalsName)
-		{
+		if (RedRat::g_getSignalsName){
 			// 获取信号数据集,以\n分隔;
-			std::string data = RedRat::g_getSignalsName();
-			CString signals = data.append(1, '\n').c_str();
-			signals.MakeUpper();
-			for (std::vector<BtnInfo>::iterator it = m_vtBtnInfo.begin(); it != m_vtBtnInfo.end(); it++)
-			{
-				if (signals.Find((it->name + '\n').c_str()) == -1)
-				{
-					it->bEnable = false;
-				}
-				else
-				{
-					it->bEnable = true;
-				}
-			}
+			data = RedRat::g_getSignalsName();
+		}
+	}
+
+	CString signals = data.append(1, '\n').c_str();
+	signals.MakeUpper();
+	for (std::vector<BtnInfo>::iterator it = m_vtBtnInfo.begin(); it != m_vtBtnInfo.end(); it++)
+	{
+		if (signals.Find((it->name + '\n').c_str()) == -1)
+		{
+			it->bEnable = false;
+		}
+		else
+		{
+			it->bEnable = true;
 		}
 	}
 }

+ 2 - 2
SATHelper/SATHelper/IRControlWnd.h

@@ -97,8 +97,6 @@ protected:
 
 	// 重启红老鼠;
 	void StartIRDevice(BOOL bReStart = TRUE);
-	// 重载信号文件;
-	void ReLoadSignalXml();
 	// 禁用信号按钮;
 	void DisableSignalBtn() {
 		for (std::vector<BtnInfo>::iterator it = m_vtBtnInfo.begin(); it != m_vtBtnInfo.end(); it++)
@@ -107,6 +105,8 @@ protected:
 		}
 	}
 public:
+	// 重载信号文件;
+	void ReLoadSignalXml();
 	std::map<UINT, BtnInfo&> m_map_btn;
 	std::vector<std::string> m_vtsignal_gen;
 	std::vector<std::string> m_vtsignal_pro;

+ 3 - 0
SATHelper/SATHelper/MainFrm.cpp

@@ -1618,6 +1618,9 @@ void CMainFrame::OnCheckEnabletw()
 		TW::OpenDevice(Global::g_Config.twPort, 115200, 8, 0, 0);
 	else
 		TW::CloseDevice();
+		
+	m_wndIRControl.LoadSignals();
+	m_wndIRControl.ReLoadSignalXml();
 }
 
 

+ 9 - 0
SATHelper/SATHelper/TestWizardDLL.cpp

@@ -13,6 +13,7 @@ namespace TW {
 	OPEN_DEVICE OpenDevice = NULL;
 	CLOSE_DEVICE CloseDevice = NULL;
 	SEND_KEY SendKey = NULL;
+	GETSIGNALSNAME GetSignalsName = NULL;
 
 	BOOL LoadLibrary() 
 	{
@@ -85,6 +86,13 @@ namespace TW {
 			return FALSE;
 		}
 
+		GetSignalsName = (GETSIGNALSNAME)GetProcAddress(g_hdll, "GetSignalsName");
+		if (!GetSignalsName)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
 		return TRUE;
 	}
 
@@ -103,6 +111,7 @@ namespace TW {
 				OpenDevice = NULL;
 				CloseDevice = NULL;
 				SendKey = NULL;
+				GetSignalsName = NULL;
 			}
 		}
 	}

+ 2 - 0
SATHelper/SATHelper/TestWizardDLL.h

@@ -18,6 +18,7 @@ namespace TW {
 	typedef BOOL(*OPEN_DEVICE)(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE Parity, BYTE StopBits);
 	typedef void(*CLOSE_DEVICE)();
 	typedef bool(*SEND_KEY)(LPCTSTR lpKeyName);
+	typedef bool(WINAPI* GETSIGNALSNAME)();
 
 	//////////////////////////////////////////////////////////////////////////
 	// ÉùÃ÷º¯ÊýÖ¸Õë;
@@ -30,6 +31,7 @@ namespace TW {
 	extern OPEN_DEVICE OpenDevice;
 	extern CLOSE_DEVICE CloseDevice;
 	extern SEND_KEY SendKey;
+	extern GETSIGNALSNAME GetSignalsName;
 };