Parcourir la source

完成TCP查询任务功能;

scbc.sat2 il y a 5 ans
Parent
commit
f6bf64a3c7

+ 34 - 11
SATHelper/SATHelper/DlgService.cpp

@@ -6,7 +6,7 @@
 #include "DlgService.h"
 #include "afxdialogex.h"
 #include "SATClient.h"
-
+//#include "SATProtocol.h"
 
 // CDlgService 对话框
 
@@ -54,7 +54,8 @@ BOOL CDlgService::OnInitDialog()
 	InitCtrl();
 	FillData2Ctrl();
 	// 5秒刷新一次;
-	SetTimer(0, 15000, NULL);
+	SetTimer(0, 5000, NULL);
+	SetTimer(1, 10000, NULL);
 	return TRUE;  // return TRUE unless you set the focus to a control
 				  // 异常: OCX 属性页应返回 FALSE
 }
@@ -104,11 +105,11 @@ void CDlgService::InitCtrl()
 	// 初始化任务列表;
 	m_listTask.InsertColumn(0, "No");
 	m_listTask.SetColumnWidth(0, 25);
-	m_listTask.InsertColumn(1, "任务ID");
+	m_listTask.InsertColumn(1, "任务编号");
 	m_listTask.SetColumnWidth(1, 130);
-	m_listTask.InsertColumn(2, "状态");
-	m_listTask.SetColumnWidth(2, 55);
-	m_listTask.InsertColumn(3, "结果");
+	m_listTask.InsertColumn(2, "任务名称");
+	m_listTask.SetColumnWidth(2, 60);
+	m_listTask.InsertColumn(3, "状态");
 	m_listTask.SetColumnWidth(3, 55);
 	m_listTask.SetExtendedStyle(m_listTask.GetExtendedStyle() | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
 
@@ -176,13 +177,12 @@ void CDlgService::OnTimer(UINT_PTR nIDEvent)
 	if (nIDEvent == 0)
 	{
 		CSATClient::GetInstance()->TCPQueryDevices(FALSE);
-		Sleep(500);
-
 		int nIndex = 0;
+		TCHAR szValue[MAX_PATH] = { 0 };
 		m_listDevices.DeleteAllItems();
-		for ( std::vector<SATPROTO::Device>::iterator it = SATData::devices.begin(); it != SATData::devices.end(); it++ )
-		{
-			m_listDevices.InsertItem(nIndex, "1");
+		for ( std::vector<SATPROTO::Device>::iterator it = SATData::devices.begin(); it != SATData::devices.end(); it++ ) {
+			_itoa_s(nIndex, szValue, 10);
+			m_listDevices.InsertItem(nIndex, szValue);
 			if ( it->nType == 0 )
 				m_listDevices.SetItemText(nIndex, 1, "虚拟");
 			else if ( it->nType == 1 )
@@ -195,6 +195,29 @@ void CDlgService::OnTimer(UINT_PTR nIDEvent)
 				m_listDevices.SetItemText(nIndex, 3, "空闲");
 			else
 				m_listDevices.SetItemText(nIndex, 3, "繁忙");
+			nIndex++;
+		}
+	}
+	else if (nIDEvent == 1)
+	{
+		CSATClient::GetInstance()->TCPQueryTasks(FALSE);
+		int nIndex = 0;
+		m_listTask.DeleteAllItems();
+		TCHAR szValue[MAX_PATH] = {0};
+		for ( int i = 0; i < SATData::task_resp.nSize; i++ ) {
+			
+			// 任务No;
+			_itoa_s(SATData::task_resp.ssTasks[i].nTaskId, szValue, 10);
+			m_listTask.InsertItem(nIndex, szValue);
+			m_listTask.SetItemText(nIndex, 1, SATData::task_resp.ssTasks[i].szTaskNo);
+			m_listTask.SetItemText(nIndex, 2, SATData::task_resp.ssTasks[i].szTaskName);
+			if (SATData::task_resp.ssTasks[i].nStatus == 0)
+				m_listTask.SetItemText(nIndex, 3, "未执行");
+			else if ( SATData::task_resp.ssTasks[i].nStatus == 1 )
+				m_listTask.SetItemText(nIndex, 3, "执行中");
+			else if (SATData::task_resp.ssTasks[i].nStatus == 2)
+				m_listTask.SetItemText(nIndex, 3, "完成");
+			nIndex++;
 		}
 	}
 

+ 51 - 28
SATHelper/SATHelper/SATClient.cpp

@@ -255,43 +255,49 @@ void CSATClient::TaskProcess(SATPROTO::Package* pak)
 		{
 			case SATPROTO::CMD_LOGIN:
 			case SATPROTO::CMD_LOGOUT:
-			{
-				SATPROTO::LoginResp* resp = (SATPROTO::LoginResp*)pak->buf;
-				if (pHeader->cmd == SATPROTO::CMD_LOGIN)
 				{
-					SATData::logout_resp.bStatus = false;
-					SATData::login_resp.bStatus = resp->bStatus;
-					_stprintf_s(SATData::login_resp.szMessage, _T("%s"), resp->szMessage);
-				}
-				else
-				{
-					SATData::login_resp.bStatus = false;
-					SATData::logout_resp.bStatus = resp->bStatus;
-					_stprintf_s(SATData::logout_resp.szMessage, _T("%s"), resp->szMessage);
+					SATPROTO::LoginResp* resp = (SATPROTO::LoginResp*)pak->buf;
+					if (pHeader->cmd == SATPROTO::CMD_LOGIN)
+					{
+						SATData::logout_resp.bStatus = false;
+						SATData::login_resp.bStatus = resp->bStatus;
+						_stprintf_s(SATData::login_resp.szMessage, _T("%s"), resp->szMessage);
+					}
+					else
+					{
+						SATData::login_resp.bStatus = false;
+						SATData::logout_resp.bStatus = resp->bStatus;
+						_stprintf_s(SATData::logout_resp.szMessage, _T("%s"), resp->szMessage);
+					}
 				}
-			}
 				break;
 			case SATPROTO::CMD_ADD_DEVICE:
 			case SATPROTO::CMD_DEL_DEVICE:
-			{
-				// 无须处理返回值;
-			}
+				{
+					// 无须处理返回值;
+				}
 				break;
 			case SATPROTO::CMD_QUERY_DEVICES:
-			{
-				SATPROTO::DeviceResp* resp = (SATPROTO::DeviceResp*)pak->buf;
-				//SATData::device_resp.nSize = resp->nSize;
-				//memcpy(SATData::device_resp.szDevs, resp->szDevs, 30*MAX_PATH);
-				SATData::devices.clear();
-				for (size_t i = 0; i < resp->nSize; i++)
 				{
-					SATPROTO::Device dev;
-					dev.nType = resp->ssDevs[i].nType;
-					dev.nStatus = resp->ssDevs[i].nStatus;
-					memcpy(dev.szName, resp->ssDevs[i].szName, MAX_PATH);
-					SATData::devices.push_back(dev);
+					SATPROTO::DeviceResp* resp = (SATPROTO::DeviceResp*)pak->buf;
+					//SATData::device_resp.nSize = resp->nSize;
+					//memcpy(SATData::device_resp.szDevs, resp->szDevs, MAX_DEVS*MAX_PATH);
+					SATData::devices.clear();
+					for (size_t i = 0; i < resp->nSize; i++) {
+						SATPROTO::Device dev;
+						dev.nType = resp->ssDevs[i].nType;
+						dev.nStatus = resp->ssDevs[i].nStatus;
+						memcpy(dev.szName, resp->ssDevs[i].szName, MAX_PATH);
+						SATData::devices.push_back(dev);
+					}
+				}
+				break;
+			case SATPROTO::CMD_QUERY_TASK:
+				{
+					SATPROTO::TaskInfoResp* resp = (SATPROTO::TaskInfoResp*)pak->buf;
+					SATData::task_resp.nSize = resp->nSize;
+					memcpy(SATData::task_resp.ssTasks, resp->ssTasks, SATPROTO::MAX_TASKS*sizeof(SATPROTO::TaskInfo));
 				}
-			}
 				break;
 			default:
 				break;
@@ -425,3 +431,20 @@ bool CSATClient::TCPQueryDevices(BOOL bShowGif)
 
 	return false;
 }
+
+bool CSATClient::TCPQueryTasks(BOOL bShowGif)
+{
+	int len = HEADER_LEN;
+	byte* pbuff = new byte[len];
+	memset(pbuff, 0, len);
+	SATPROTO::Package* pData = (SATPROTO::Package*)pbuff;
+
+	pData->header.protocol = 0xAA;
+	pData->header.len = len;
+	pData->header.cmd = SATPROTO::CMD_QUERY_TASK;
+
+	bool bret = OnSend(pbuff, len, bShowGif);
+	delete[]pbuff;
+
+	return false;
+}

+ 2 - 0
SATHelper/SATHelper/SATClient.h

@@ -67,6 +67,8 @@ public:
 	bool TCPDelDevice(std::string strDevice, BOOL bShowGif = TRUE);
 	// ²éѯÉ豸;
 	bool TCPQueryDevices(BOOL bShowGif = TRUE);
+	// ²éѯÈÎÎñ;
+	bool TCPQueryTasks(BOOL bShowGif = TRUE);
 };
 
 #endif // __SAT_CLIENT__

+ 1 - 0
SATHelper/SATHelper/SATData.cpp

@@ -7,4 +7,5 @@ namespace SATData {
 	SATPROTO::LoginResp logout_resp;
 	SATPROTO::DeviceResp device_resp;
 	std::vector<SATPROTO::Device> devices;
+	SATPROTO::TaskInfoResp task_resp;
 };

+ 2 - 0
SATHelper/SATHelper/SATData.h

@@ -14,6 +14,8 @@ namespace SATData {
 	// 查询设备返回;
 	extern SATPROTO::DeviceResp device_resp;
 	extern std::vector<SATPROTO::Device> devices;
+	// 查询返回的任务;
+	extern SATPROTO::TaskInfoResp task_resp;
 };
 
 #endif // __SAT_DATA__