瀏覽代碼

添加U盘强制升级的dll库支持

sat23 4 年之前
父節點
當前提交
754e107022

+ 13 - 0
SATHelper/SATHelper/IOCPModel.cpp

@@ -905,6 +905,11 @@ void CIOCPModel::_TaskProcess(PER_IO_CONTEXT* pIoContext, ProPackage* pak)
 		// 测试精灵;
 		_TestWizardProc(pIoContext, pak);
 	}
+	else if (pak->header.version == 0xAD)
+	{
+		// TV串口;
+		_TVWatchProc(pIoContext, pak);
+	}
 }
 
 void CIOCPModel::_DeviceProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak)
@@ -999,6 +1004,14 @@ void CIOCPModel::_TestWizardProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak)
 	int ret = send(pIoContext->m_sockAccept, (const char*)sdata, reponse_pak->header.len, 0);
 }
 
+void CIOCPModel::_TVWatchProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak)
+{
+	// 串口启动时,需要同时启动监听功能;
+	// SendCommand:
+	// WatchWord
+	// RTKUpgrade
+}
+
 /////////////////////////////////////////////////////////////////////
 // 判断客户端Socket是否已经断开,否则在一个无效的Socket上投递WSARecv操作会出现异常
 // 使用的方法是尝试向这个socket发送数据,判断这个socket调用的返回值

+ 1 - 0
SATHelper/SATHelper/IOCPModel.h

@@ -273,6 +273,7 @@ protected:
 	void _DeviceProc(PER_IO_CONTEXT* pIoContext, ProPackage*pak);
 	void _CaptureProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak);
 	void _TestWizardProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak);
+	void _TVWatchProc(PER_IO_CONTEXT* pIoContext, ProPackage* pak);
 private:
 
 	HANDLE                       m_hShutdownEvent;              // 用来通知线程系统退出的事件,为了能够更好的退出线程

+ 2 - 0
SATHelper/SATHelper/SATHelper.vcxproj

@@ -249,6 +249,7 @@
     <ClInclude Include="tinyxml2.h" />
     <ClInclude Include="TrayIcon.h" />
     <ClInclude Include="UB530View.h" />
+    <ClInclude Include="USBUpgradeDLL.h" />
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\cJson\cJSON.c">
@@ -303,6 +304,7 @@
     </ClCompile>
     <ClCompile Include="TrayIcon.cpp" />
     <ClCompile Include="UB530View.cpp" />
+    <ClCompile Include="USBUpgradeDLL.cpp" />
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="SATHelper.rc" />

+ 6 - 0
SATHelper/SATHelper/SATHelper.vcxproj.filters

@@ -201,6 +201,9 @@
     <ClInclude Include="CallPython.h">
       <Filter>头文件</Filter>
     </ClInclude>
+    <ClInclude Include="USBUpgradeDLL.h">
+      <Filter>头文件</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="SATHelper.cpp">
@@ -326,6 +329,9 @@
     <ClCompile Include="CallPython.cpp">
       <Filter>源文件</Filter>
     </ClCompile>
+    <ClCompile Include="USBUpgradeDLL.cpp">
+      <Filter>源文件</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="SATHelper.rc">

+ 1 - 1
SATHelper/SATHelper/TestWizardDLL.h

@@ -2,7 +2,7 @@
 #define __TW_HEADER__
 
 namespace TW {
-	extern HMODULE g_hTWdll;
+	extern HMODULE g_hdll;
 	extern BOOL LoadLibrary();
 	extern void UnloadLibrary();
 

+ 100 - 0
SATHelper/SATHelper/USBUpgradeDLL.cpp

@@ -0,0 +1,100 @@
+#include "stdafx.h"
+#include "USBUpgradeDLL.h"
+
+namespace USBUPGRADE {
+	HMODULE g_hdll = NULL;
+
+	OPEN_TVPORT OpenTVPort = NULL;
+	IS_OPEN IsOpen = NULL;
+	CLOSE_TVPORT CloseTVPort = NULL;
+	START_MONITOR StartMonitor = NULL;
+	SEND_COMMAND SendCommand = NULL;
+	CLEARBUFFER ClearBuffer = NULL;
+	WATCH_WORD WatchWord = NULL;
+	RTK_UPBUPGRADE RTK_USBUpgrade = NULL;
+
+
+	BOOL LoadLibrary() 
+	{
+		if (g_hdll == NULL) {
+			g_hdll = (HMODULE)::LoadLibrary(_T("SerialWatch.dll"));
+			if (!g_hdll)
+				return FALSE;
+		}
+
+		OpenTVPort = (OPEN_TVPORT)GetProcAddress(g_hdll, "OpenTVPort");
+		if (!OpenTVPort)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		IsOpen = (IS_OPEN)GetProcAddress(g_hdll, "IsOpen");
+		if (!IsOpen)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		CloseTVPort = (CLOSE_TVPORT)GetProcAddress(g_hdll, "CloseTVPort");
+		if (!CloseTVPort)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		StartMonitor = (START_MONITOR)GetProcAddress(g_hdll, "StartMonitor");
+		if (!StartMonitor)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		SendCommand = (SEND_COMMAND)GetProcAddress(g_hdll, "SendCommand");
+		if (!SendCommand)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		ClearBuffer = (CLEARBUFFER)GetProcAddress(g_hdll, "ClearBuffer");
+		if (!ClearBuffer)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		WatchWord = (WATCH_WORD)GetProcAddress(g_hdll, "WatchWord");
+		if (!WatchWord)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		RTK_USBUpgrade = (RTK_UPBUPGRADE)GetProcAddress(g_hdll, "RTK_USBUpgrade");
+		if (!RTK_USBUpgrade)
+		{
+			UnloadLibrary();
+			return FALSE;
+		}
+
+		return TRUE;
+	}
+
+	void UnloadLibrary()
+	{
+		if (g_hdll) {
+			if (FreeLibrary(g_hdll)) {
+				g_hdll = NULL;			
+				OpenTVPort = NULL;
+				IsOpen = NULL;
+				CloseTVPort = NULL;
+				StartMonitor = NULL;
+				SendCommand = NULL;
+				ClearBuffer = NULL;
+				WatchWord = NULL;
+				RTK_USBUpgrade = NULL;
+			}
+		}
+	}
+}

+ 34 - 0
SATHelper/SATHelper/USBUpgradeDLL.h

@@ -0,0 +1,34 @@
+#ifndef __USB_UPGRADE_HEADER__
+#define __USB_UPGRADE_HEADER__
+
+namespace USBUPGRADE {
+	extern HMODULE g_hdll;
+	extern BOOL LoadLibrary();
+	extern void UnloadLibrary();
+
+	//////////////////////////////////////////////////////////////////////////
+	// 定义函数指针;
+	typedef BOOL(*OPEN_TVPORT)(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE Parity, BYTE StopBits);
+	typedef BOOL(*IS_OPEN)();
+	typedef void(*CLOSE_TVPORT)();
+	typedef void(*START_MONITOR)();
+	typedef void(*SEND_COMMAND)(LPCTSTR lpCommand, int nSendCount, int nSleep);
+	typedef void(*CLEARBUFFER)();
+	typedef BOOL(*WATCH_WORD)(LPCTSTR lpWatchWord, int nWatchTime);
+	typedef void(*RTK_UPBUPGRADE)(BYTE byKey);
+
+	//////////////////////////////////////////////////////////////////////////
+	// 声明函数指针;
+	extern OPEN_TVPORT OpenTVPort;
+	extern IS_OPEN IsOpen;
+	extern CLOSE_TVPORT CloseTVPort;
+	extern START_MONITOR StartMonitor;
+	extern SEND_COMMAND SendCommand;
+	extern CLEARBUFFER ClearBuffer;
+	extern WATCH_WORD WatchWord;
+	extern RTK_UPBUPGRADE RTK_USBUpgrade;
+	
+};
+
+
+#endif