| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418 | 
							
- #include "stdafx.h"
 
- #include "IRControl.h"
 
- #include "RedRatProcess.h"
 
- #ifdef __MAKE_PYD__
 
- #include "Python.h"
 
- #endif
 
- #ifdef _DEBUG
 
- #define new DEBUG_NEW
 
- #endif
 
- #ifdef __CONSOLE__
 
- CWinApp theApp;
 
- using namespace std;
 
- int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 
- {
 
- 	int nRetCode = 0;
 
- 	
 
- 	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
 
- 	{
 
- 		
 
- 		_tprintf(_T("错误: MFC 初始化失败\n"));
 
- 		nRetCode = 1;
 
- 	}
 
- 	else
 
- 	{
 
- 		
 
- 		
 
- 		if (!Connect(_T("127.0.0.1"), 40000))
 
- 			return 0;
 
- 		
 
- 		std::string devices = getDeviceNames();
 
- 		
 
- 		if ( !loadSignalDataSet("D:\\SAT\\resource\\RCU\\product\\ARTEL_WZ_RC311_2841.xml") )
 
- 		{
 
- 			TRACE("加载信号集文件失败\r");
 
- 		}
 
- 		else
 
- 		{
 
- 			TRACE("加载信号集文件成功\r");
 
- 		}
 
- 		Sleep(500);
 
- 		
 
- 		std::string signals = getSignalsName();
 
- 		TRACE(signals.c_str());
 
- 		
 
- 		if ( sendSignal("HOME", 1, 1000) )
 
- 		{ 
 
- 			TRACE("发送单信号成功\n");
 
- 		}
 
- 		else
 
- 		{
 
- 			TRACE("发送单信号失败\n");
 
- 		}
 
- 		
 
- 		if (sendSignals("HOME;right;right;down;up;HOME", 2))
 
- 		{
 
- 			TRACE("发送多信号成功\n");
 
- 		}
 
- 		else
 
- 		{
 
- 			TRACE("发送多信号失败\n");
 
- 		}
 
- 		
 
- 		if (sendRepeatsSignal("right", 2))
 
- 		{
 
- 			TRACE("发送多信号成功\n");
 
- 		}
 
- 		else
 
- 		{
 
- 			TRACE("发送多信号失败\n");
 
- 		}
 
- 		CloseApp();
 
- 	}
 
- 	return nRetCode;
 
- }
 
- #endif
 
- static CRedRatProcess g_IRControl;
 
- #ifndef __MAKE_PYD__
 
- int nIRControl = 100;
 
- IRCONTROL_API DWORD IsAppRunning(LPCTSTR lpszAppDir)
 
- {
 
- 	return CRedRatProcess::IsAppRunning(lpszAppDir);
 
- }
 
- IRCONTROL_API bool StartIRApp(LPCTSTR lpszAppDir, LPCTSTR lpSignalXml, DWORD dwPort)
 
- {
 
- 	if (!CRedRatProcess::StartApp(lpszAppDir, lpSignalXml, dwPort))
 
- 		return false;
 
- 	return true;
 
- }
 
- IRCONTROL_API bool CloseApp()
 
- {
 
- 	return CRedRatProcess::CloseApp();
 
- }
 
- IRCONTROL_API bool Connect(LPCTSTR lpServer, int port)
 
- {
 
- 	
 
- 	if (!g_IRControl.InitSocket())
 
- 	{
 
- 		Global::WriteTextLog(_T("创建TCP连接失败"));
 
- 		
 
- 		return false;
 
- 	}
 
- 	if (!lpServer || lpServer[0] == '\0' || port < 0)
 
- 		return false;
 
- 	
 
- 	if (!g_IRControl.Connect(lpServer, port))
 
- 	{
 
- 		Global::WriteTextLog(_T("连接服务器失败"));
 
- 		
 
- 		return false;
 
- 	}
 
- 	return true;
 
- }
 
- IRCONTROL_API void DisConnect()
 
- {
 
- 	g_IRControl.DisConnect();
 
- }
 
- IRCONTROL_API LPCTSTR getDeviceNames()
 
- {
 
- 	static std::string devices;
 
- 	std::vector<std::string> vtDevices;
 
- 	if ( g_IRControl.getDeviceNameList(vtDevices) )
 
- 	{
 
- 		devices.clear();
 
- 		for ( std::vector<std::string>::iterator dv = vtDevices.begin(); dv != vtDevices.end(); dv++)
 
- 		{
 
- 			devices.append(*dv + _T(";"));
 
- 		}
 
- 		return devices.c_str();
 
- 	}
 
- 	return _T("");
 
- }
 
- IRCONTROL_API LPCTSTR getSignalsName()
 
- {
 
- 	static std::string signals;
 
- 	signals = g_IRControl.getSignalsName();
 
- 	return signals.c_str();
 
- }
 
- IRCONTROL_API bool loadSignalDataSet(LPCTSTR lpDatasetXml)
 
- {
 
- 	if (!lpDatasetXml || lpDatasetXml[0] == '\0')
 
- 		return false;
 
- 	return g_IRControl.loadSignalDataSet(lpDatasetXml);
 
- }
 
- IRCONTROL_API bool sendSignal(LPCTSTR lpSignal, int send_times, int sleep_time)
 
- {
 
- 	if (!lpSignal || lpSignal[0] == '\0')
 
- 		return false;
 
- 	return g_IRControl.sendSignal(lpSignal, send_times, sleep_time);
 
- }
 
- IRCONTROL_API bool sendSignals(LPCTSTR lpSignals, int sleep_time)
 
- {
 
- 	if (!lpSignals || lpSignals[0] == '\0')
 
- 		return false;
 
- 	std::string signals = lpSignals;
 
- 	std::vector<std::string> vtSignals;
 
- 	int npos = -1;
 
- 	while (true)
 
- 	{
 
- 		npos = signals.find_first_of(';');
 
- 		if (npos == std::string::npos)
 
- 			break;
 
- 		vtSignals.push_back(signals.substr(0, npos));
 
- 		signals = signals.substr(npos + 1);
 
- 	}
 
- 	vtSignals.push_back(signals);
 
- 	return g_IRControl.sendSignals(vtSignals, sleep_time);
 
- }
 
- IRCONTROL_API bool sendRepeatsSignal(LPCTSTR lpSignal, int repeat_time)
 
- {
 
- 	if (!lpSignal || lpSignal[0] == '\0')
 
- 		return false;
 
- 	return g_IRControl.sendRepeatsSignal(lpSignal, repeat_time);
 
- }
 
- #else
 
- static PyObject* IsAppRunning(PyObject* self, PyObject* args)
 
- {
 
- 	
 
- 	const char* pszExePath = NULL;
 
- 	if (!PyArg_ParseTuple(args, "s", &pszExePath))
 
- 		return NULL;
 
- 	
 
- 	return Py_BuildValue("i", CRedRatProcess::IsAppRunning(pszExePath));
 
- }
 
- static PyObject* StartApp(PyObject* self, PyObject* args)
 
- {
 
- 	
 
- 	const char* pszExePath = NULL;
 
- 	const char* pszDataset = NULL;
 
- 	unsigned int port = 0;
 
- 	if (!PyArg_ParseTuple(args, "ssI", &pszExePath, &pszDataset, &port))
 
- 		return NULL;
 
- 	return Py_BuildValue("b", CRedRatProcess::StartApp(pszExePath, pszDataset, port));
 
- }
 
- static PyObject* StopApp(PyObject* self, PyObject* args)
 
- {
 
- 	return Py_BuildValue("b", CRedRatProcess::CloseApp());	
 
- }
 
- static PyObject* ConnectDevice(PyObject* self, PyObject* args)
 
- {
 
- 	unsigned int port = 0;
 
- 	const char* pszServer = NULL;
 
- 	if (!PyArg_ParseTuple(args, "sI", &pszServer, &port))
 
- 		return NULL;
 
- 	
 
- 	if (!g_IRControl.InitSocket())
 
- 	{
 
- 		Global::WriteTextLog(_T("创建TCP连接失败"));
 
- 		g_IRControl.CloseApp();
 
- 		return Py_BuildValue("b", false);
 
- 	}
 
- 	if (!pszServer || pszServer[0] == '\0' || port < 0)
 
- 		return Py_BuildValue("b", false);
 
- 	if (!g_IRControl.SelectConnect(pszServer, port, 5000))
 
- 	{
 
- 		Global::WriteTextLog(_T("连接服务器失败"));
 
- 		g_IRControl.CloseApp();
 
- 		return Py_BuildValue("b", false);
 
- 	}
 
- 	return Py_BuildValue("b", true);
 
- }
 
- static PyObject* DisconnectDevice(PyObject* self, PyObject* args)
 
- {
 
- 	g_IRControl.DisConnect();
 
- 	return Py_BuildValue("");
 
- }
 
- static PyObject* getDeviceNames(PyObject* self, PyObject* args)
 
- {
 
- 	std::string devices;
 
- 	std::vector<std::string> vtDevices;
 
- 	if (g_IRControl.getDeviceNameList(vtDevices))
 
- 	{
 
- 		for (std::vector<std::string>::iterator dv = vtDevices.begin(); dv != vtDevices.end(); dv++ )
 
- 		{
 
- 			devices.append(*dv + _T(";"));
 
- 		}
 
- 		return Py_BuildValue("s", devices.c_str());
 
- 	}
 
- 	return Py_BuildValue("s", "");
 
- }
 
- static PyObject* loadSignalDataSet(PyObject* self, PyObject* args)
 
- {
 
- 	const char* pszDatasetXml = NULL;
 
- 	if (!PyArg_ParseTuple(args, "s", &pszDatasetXml))
 
- 		return NULL;
 
- 	if ( !pszDatasetXml || pszDatasetXml[0] == '\0')
 
- 		return Py_BuildValue("b", false);
 
- 	if (!g_IRControl.loadSignalDataSet(std::string(pszDatasetXml)) )
 
- 	{
 
- 		Global::WriteTextLog(_T("加载信号数据集失败"));
 
- 		g_IRControl.CloseApp();
 
- 		return Py_BuildValue("b", false);
 
- 	}
 
- 	return Py_BuildValue("b", true);
 
- }
 
- static PyObject* getSignalsName(PyObject* self, PyObject* args)
 
- {
 
- 	std::string data = g_IRControl.getSignalsName();
 
- 	return Py_BuildValue("s", data.c_str());
 
- }
 
- static PyObject* sendSignal(PyObject* self, PyObject* args)
 
- {
 
- 	const char* pszSignal = NULL;
 
- 	int send_times = 1, sleep_time = 1000;
 
- 	if (!PyArg_ParseTuple(args, "sii", &pszSignal, &send_times, &sleep_time))
 
- 		return NULL;
 
- 	if (!pszSignal || pszSignal[0] == '\0')
 
- 		return Py_BuildValue("b", false);
 
- 	return Py_BuildValue("b", g_IRControl.sendSignal(pszSignal, send_times, sleep_time));
 
- }
 
- static PyObject* sendSignals(PyObject* self, PyObject* args)
 
- {
 
- 	const char* pszSignal = NULL;
 
- 	int sleep_time = 1000;
 
- 	if (!PyArg_ParseTuple(args, "si", &pszSignal, &sleep_time))
 
- 		return NULL;
 
- 	if (!pszSignal || pszSignal[0] == '\0')
 
- 		return Py_BuildValue("b", false);
 
- 	std::string signals = pszSignal;
 
- 	std::vector<std::string> vtSignals;
 
- 	int npos = -1;
 
- 	while (true)
 
- 	{
 
- 		npos = signals.find_first_of(';');
 
- 		if (npos == std::string::npos)
 
- 			break;
 
- 		vtSignals.push_back(signals.substr(0, npos));
 
- 		signals = signals.substr(npos + 1);
 
- 	}
 
- 	vtSignals.push_back(signals);
 
- 	return Py_BuildValue("b", g_IRControl.sendSignals(vtSignals, sleep_time));
 
- }
 
- static PyObject* sendRepeatsSignal(PyObject* self, PyObject* args)
 
- {
 
- 	const char* pszSignal = NULL;
 
- 	int repeat_time = 2;
 
- 	if (!PyArg_ParseTuple(args, "si", &pszSignal, &repeat_time))
 
- 		return NULL;
 
- 	if (!pszSignal || pszSignal[0] == '\0')
 
- 		return Py_BuildValue("b", false);
 
- 	return Py_BuildValue("b", g_IRControl.sendRepeatsSignal(pszSignal, repeat_time));
 
- }
 
- static PyObject* sendDurationSignal(PyObject* self, PyObject* args)
 
- {
 
- 	const char* pszSignal = NULL;
 
- 	int duration_time = 2;
 
- 	if (!PyArg_ParseTuple(args, "si", &pszSignal, &duration_time))
 
- 		return NULL;
 
- 	if (!pszSignal || pszSignal[0] == '\0')
 
- 		return Py_BuildValue("b", false);
 
- 	return Py_BuildValue("b", g_IRControl.sendDurationSignal(pszSignal, duration_time));
 
- }
 
- static PyMethodDef IRControl_Methods[] = {
 
- 	{"IsAppRunning",IsAppRunning,METH_VARARGS,"程序是否在运行"},
 
- 	{"StartApp", StartApp, METH_VARARGS, "启动进程"},
 
- 	{"StopApp", StopApp, METH_VARARGS, "关闭进程"},
 
- 	{"ConnectDevice", ConnectDevice, METH_VARARGS, "连接设备"},
 
- 	{"DisconnectDevice", DisconnectDevice, METH_VARARGS, "断开设备"},
 
- 	{"getDeviceNames", getDeviceNames, METH_VARARGS, "获取设备列表,逗号分隔"},
 
- 	{"loadSignalDataSet", loadSignalDataSet, METH_VARARGS, "加载指定目录的信号数据集XML文件"},
 
- 	{"getSignalsName", getSignalsName, METH_VARARGS, "获取默认信号数据集信号列表"},
 
- 	{"sendSignal", sendSignal, METH_VARARGS, "发送单个信号"},
 
- 	{"sendSignals", sendSignals, METH_VARARGS, "发送多个信号,以分号为分隔符"},
 
- 	{"sendRepeatsSignal", sendRepeatsSignal, METH_VARARGS, "发送重复信号"},
 
- 	{"sendDurationSignal", sendDurationSignal, METH_VARARGS, "发送时叠信号"},
 
- 	{NULL,NULL}
 
- };
 
- PyMODINIT_FUNC initIRControl()
 
- {
 
- 	
 
- 	PyObject* m, * d;
 
- 	m = Py_InitModule("IRControl", IRControl_Methods);
 
- 	d = PyModule_GetDict(m);
 
- }
 
- #endif
 
 
  |