Pārlūkot izejas kodu

测试精灵:蓝牙+电源开关。

Jeff 5 gadi atpakaļ
vecāks
revīzija
c03023edcc

+ 24 - 3
SATHelper/SATHelper/IOCPModel.cpp

@@ -975,10 +975,31 @@ void CIOCPModel::_CaptureProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak)
 
 void CIOCPModel::_TestWizardProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak)
 {
-	if (TW::SendKey) {
-		std::string key = (char*)&pak->buf;
-		TW::SendKey(key.c_str());
+	char* retdata = "0"; //0表示失败,1表示成功
+	//content: ir>keyname  或者 cmd>cmd命令
+	std::string content = (char*)&pak->buf;
+	std::int8_t idx = content.find(">");
+	if (idx == string::npos) return;
+	std::string type = content.substr(0,idx);
+	std::string cmd = content.substr(idx + 1, content.size());
+	LPCTSTR twCmd = cmd.c_str();
+	OutputDebugString(_T("_TestWizardProc\n"));
+	if ((TW::sendCmd) && (type == "cmd")) {
+		boolean retFlag = TW::sendCmd(twCmd);
+		if (retFlag == true) retdata = "1";
+		else retdata = "0";
+	}else if ((TW::SendKey) && (type == "ir")) {
+		boolean retFlag = TW::SendKey(twCmd);
+		if (retFlag == true) retdata = "1";
+		else retdata = "0";
 	}
+	byte* sdata = new byte[strlen(retdata) + PAK_LEN];
+	ProPackage* reponse_pak = (ProPackage*)sdata;
+	reponse_pak->header.version = 0xAC;
+	reponse_pak->header.len = strlen(retdata) + PAK_LEN;
+	memcpy(reponse_pak->buf, retdata, strlen(retdata));
+	int ret = send(pIoContext->m_sockAccept, (const char*)sdata, reponse_pak->header.len, 0);
+	TRACE1("ret= %d\n",ret);
 }
 
 /////////////////////////////////////////////////////////////////////

+ 9 - 0
SATHelper/SATHelper/TestWizardDLL.cpp

@@ -13,6 +13,7 @@ namespace TW {
 	OPEN_DEVICE OpenDevice = NULL;
 	CLOSE_DEVICE CloseDevice = NULL;
 	SEND_KEY SendKey = NULL;
+	SEND_KEY sendCmd = NULL;
 	GETSIGNALSNAME GetSignalsName = NULL;
 
 	BOOL LoadLibrary() 
@@ -86,6 +87,13 @@ namespace TW {
 			return FALSE;
 		}
 
+		sendCmd = (SEND_CMD)GetProcAddress(g_hdll, "sendCmd");
+		if (!sendCmd)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
 		GetSignalsName = (GETSIGNALSNAME)GetProcAddress(g_hdll, "GetSignalsName");
 		if (!GetSignalsName)
 		{
@@ -111,6 +119,7 @@ namespace TW {
 				OpenDevice = NULL;
 				CloseDevice = NULL;
 				SendKey = NULL;
+				sendCmd = 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(*SEND_CMD)(LPCTSTR cmdStr);
 	typedef LPCTSTR(WINAPI* GETSIGNALSNAME)();
 
 	//////////////////////////////////////////////////////////////////////////
@@ -31,6 +32,7 @@ namespace TW {
 	extern OPEN_DEVICE OpenDevice;
 	extern CLOSE_DEVICE CloseDevice;
 	extern SEND_KEY SendKey;
+	extern SEND_CMD sendCmd;
 	extern GETSIGNALSNAME GetSignalsName;
 };