Kaynağa Gözat

查询设备接口,及所有接口添加是否显示 gif ;

scbc.sat2 5 yıl önce
ebeveyn
işleme
ad3e2a27ca

+ 2 - 2
SATHelper/SATHelper/DlgLogin.cpp

@@ -62,13 +62,13 @@ void CDlgLogin::OnBnClickedOk()
 	GetDlgItemText(IDC_EDIT_PASSWORD, strPassword);
 
 	if (!SATData::login_resp.bStatus) {
-		if (CSATClient::GetInstance()->TCPLogin(strUserName.GetString(), strPassword.GetString())) {
+		if (CSATClient::GetInstance()->TCPLogin(strUserName.GetString(), strPassword.GetString(), Global::g_Config.strActuator)) {
 			if (!SATData::login_resp.bStatus)
 				AfxMessageBox("登录失败");
 		}
 	} 
 	else {
-		if (CSATClient::GetInstance()->TCPLogout(strUserName.GetString(), strPassword.GetString())) {
+		if (CSATClient::GetInstance()->TCPLogout(strUserName.GetString(), strPassword.GetString(), Global::g_Config.strActuator)) {
 			if (!SATData::logout_resp.bStatus)
 				AfxMessageBox("登出失败");
 		}

+ 3 - 1
SATHelper/SATHelper/DlgProBar.cpp

@@ -13,6 +13,7 @@
 Image* CDlgProBar::m_spImg = NULL;
 BOOL CDlgProBar::m_sbRuning = TRUE;
 Brush *CDlgProBar::m_pBrush = NULL;
+extern CDlgProBar* g_pDlgProBar;
 IMPLEMENT_DYNAMIC(CDlgProBar, CDialogEx)
 
 CDlgProBar::CDlgProBar(CWnd* pParent /*=NULL*/)
@@ -97,6 +98,7 @@ LRESULT CDlgProBar::StopThread(WPARAM wp, LPARAM lp)
 
 void CDlgProBar::OnCancel()
 {
+	g_pDlgProBar = NULL;
 	// TODO: 在此添加专用代码和/或调用基类
 	CDialogEx::OnCancel();
 }
@@ -126,7 +128,7 @@ void CDlgProBar::OnTimer(UINT_PTR nIDEvent)
 			m_pPropertyItem = NULL;
 
 			CSATClient::GetInstance()->Stop();
-			AfxMessageBox(_T("连接超时!"));
+			//AfxMessageBox(_T("连接超时!"));
 
 			PostMessage(WM_CLOSE);
 			

+ 74 - 0
SATHelper/SATHelper/DlgService.cpp

@@ -5,6 +5,7 @@
 #include "SATHelper.h"
 #include "DlgService.h"
 #include "afxdialogex.h"
+#include "SATClient.h"
 
 
 // CDlgService 对话框
@@ -26,12 +27,17 @@ void CDlgService::DoDataExchange(CDataExchange* pDX)
 	CDialogEx::DoDataExchange(pDX);
 	DDX_Control(pDX, IDC_LIST_DEVICES, m_listDevices);
 	DDX_Control(pDX, IDC_LIST_TASK, m_listTask);
+	DDX_Control(pDX, BTN_MODIFY_RUNNER_NAME, m_btnModify);
+	DDX_Control(pDX, BTN_ADD_ANDROID, m_btnAddAndroid);
 }
 
 
 BEGIN_MESSAGE_MAP(CDlgService, CDialogEx)
 	ON_WM_PAINT()
 	ON_WM_CTLCOLOR()
+	ON_BN_CLICKED(BTN_MODIFY_RUNNER_NAME, &CDlgService::OnBnClickedModifyRunnerName)
+	ON_BN_CLICKED(BTN_ADD_ANDROID, &CDlgService::OnBnClickedAddAndroid)
+	ON_WM_TIMER()
 END_MESSAGE_MAP()
 
 
@@ -46,6 +52,9 @@ BOOL CDlgService::OnInitDialog()
 	// 做为子窗口,这里设置透明度没有任何效果;
 	// SetLayeredWindowAttributes(RGB(1, 2, 3), 0, LWA_COLORKEY/*|LWA_ALPHA*/);
 	InitCtrl();
+	FillData2Ctrl();
+	// 5秒刷新一次;
+	SetTimer(0, 15000, NULL);
 	return TRUE;  // return TRUE unless you set the focus to a control
 				  // 异常: OCX 属性页应返回 FALSE
 }
@@ -100,4 +109,69 @@ void CDlgService::InitCtrl()
 	m_listTask.SetColumnWidth(2, 55);
 	m_listTask.InsertColumn(3, "结果");
 	m_listTask.SetColumnWidth(3, 55);
+
+	// 修改按钮默认样式;
+	m_btnModify.m_bTransparent = FALSE;
+	m_btnModify.m_bDontUseWinXPTheme = TRUE;
+	// 设置背景色;
+	m_btnModify.SetFaceColor(RGB(0x87,0xCE,0xFA), TRUE);
+	// 消除单击时黑色内圈;
+	m_btnModify.m_bDrawFocus = FALSE;
+	// 设置按钮扁平样式;
+	m_btnModify.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
+	// 设置鼠标形状;
+	m_btnModify.SetMouseCursorHand();
+
+	m_btnAddAndroid.m_bTransparent = FALSE;
+	m_btnAddAndroid.m_bDontUseWinXPTheme = TRUE;
+	// 设置背景色;
+	m_btnAddAndroid.SetFaceColor(RGB(0x87, 0xCE, 0xFA), TRUE);
+	// 消除单击时黑色内圈;
+	m_btnAddAndroid.m_bDrawFocus = FALSE;
+	// 设置按钮扁平样式;
+	m_btnAddAndroid.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
+	// 设置鼠标形状;
+	m_btnAddAndroid.SetMouseCursorHand();
+}
+
+void CDlgService::FillData2Ctrl()
+{
+	SetDlgItemText(IDC_EDIT_RUNNER_NAME, Global::g_Config.strActuator.c_str());
+}
+
+
+void CDlgService::OnBnClickedModifyRunnerName()
+{
+	// TODO: 在此添加控件通知处理程序代码
+	CSATClient::GetInstance()->TCPLogin(Global::g_Config.strSATUserName, Global::g_Config.strSATPassword, Global::g_Config.strActuator);
+}
+
+
+void CDlgService::OnBnClickedAddAndroid()
+{
+	// TODO: 在此添加控件通知处理程序代码
+	CIPAddressCtrl* pIP = (CIPAddressCtrl*)GetDlgItem(IDC_IP_ANDROID);
+	// 获取IP地址;
+	BYTE nf1, nf2, nf3, nf4;
+	pIP->GetAddress(nf1, nf2, nf3, nf4);
+	CString str;
+	str.Format("%d.%d.%d.%d", nf1, nf2, nf3, nf4);//这里的nf得到的值是IP值了
+	if (str.IsEmpty())
+		return;
+
+	CSATClient::GetInstance()->TCPAddDevice(str.GetString());
+}
+
+
+void CDlgService::OnTimer(UINT_PTR nIDEvent)
+{
+	// TODO: 在此添加消息处理程序代码和/或调用默认值
+	if (nIDEvent == 0)
+	{
+		CSATClient::GetInstance()->TCPQueryDevices(FALSE);
+		Sleep(500);
+
+	}
+
+	CDialogEx::OnTimer(nIDEvent);
 }

+ 7 - 0
SATHelper/SATHelper/DlgService.h

@@ -29,4 +29,11 @@ public:
 
 	// 初始化控件;
 	void InitCtrl();
+	// 为控件填数据;
+	void FillData2Ctrl();
+	CMFCButton m_btnModify;
+	CMFCButton m_btnAddAndroid;
+	afx_msg void OnBnClickedModifyRunnerName();
+	afx_msg void OnBnClickedAddAndroid();
+	afx_msg void OnTimer(UINT_PTR nIDEvent);
 };

+ 0 - 1
SATHelper/SATHelper/Resource.h

@@ -129,7 +129,6 @@
 #define IDC_EDIT_USERNAME               1008
 #define BTN_MODIFY_RUNNER_NAME          1009
 #define IDC_IP_ANDROID                  1010
-#define IDC_MFCBUTTON2                  1011
 #define BTN_ADD_ANDROID                 1011
 #define IDC_LIST_DEVICES                1012
 #define IDC_LIST_TASK                   1013

+ 68 - 10
SATHelper/SATHelper/SATClient.cpp

@@ -72,19 +72,22 @@ CSATClient::~CSATClient(void)
 {
 }
 
-bool CSATClient::OnSend(const byte* pData, int nLen)
+bool CSATClient::OnSend(const byte* pData, int nLen, BOOL bShowGif)
 {
 	if (!m_bSocket) {
 		if (!Start())
 			return false;
 	}
 
-	CDlgProBar dlg;
-	g_pDlgProBar = &dlg;
 	DWORD dwLen = m_SocketClient.Write((const LPBYTE)pData, nLen);
 	if (dwLen == nLen)
 	{
-		dlg.DoModal();
+		if (bShowGif) {
+			CDlgProBar dlg;
+			g_pDlgProBar = &dlg;
+			dlg.DoModal();
+		}
+		
 		OutputDebugString(_T("发送数据成功!\n"));
 		return true;
 	}
@@ -267,10 +270,22 @@ void CSATClient::TaskProcess(SATProtocol::Package* pak)
 			}
 				break;
 			case SATProtocol::CMD_ADD_DEVICE:
-				break;
 			case SATProtocol::CMD_DEL_DEVICE:
+			{
+				// 无须处理返回值;
+			}
 				break;
 			case SATProtocol::CMD_QUERY_DEVICES:
+			{
+				SATProtocol::DeviceResp* resp = (SATProtocol::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++)
+				{
+					SATData::devices.push_back(resp->szDevs[i]);
+				}
+			}
 				break;
 			default:
 				break;
@@ -281,7 +296,7 @@ void CSATClient::TaskProcess(SATProtocol::Package* pak)
 BOOL CSATClient::Start()
 {
 	int nFamily = (m_nMode == AF_IPV4) ? AF_INET : AF_INET6;
-	if (!m_SocketClient.StartClient(NULL, Global::g_Config.strServiceIP.c_str(), Global::g_Config.strSATPassword.c_str(), nFamily, (m_nSockType + 1)))
+	if (!m_SocketClient.StartClient(NULL, Global::g_Config.strServiceIP.c_str(), Global::g_Config.strServicePort.c_str(), nFamily, (m_nSockType + 1)))
 	{
 #ifdef _DEBUG
 		OutputDebugString("连接服务器失败\n");
@@ -335,7 +350,7 @@ void CSATClient::GetAddress(const SockAddrIn& addrIn, CString& rString) const
 	rString.Format(_T("%s : %d"), szIPAddr, static_cast<int>(static_cast<UINT>(ntohs(addrIn.GetPort()))));
 }
 
-bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword, BOOL bLogin)
+bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword, std::string strActuator, BOOL bLogin, BOOL bShowGif )
 {
 	SATData::login_resp = {0};
 	int len = HEADER_LEN + sizeof(SATProtocol::UserInfo);
@@ -350,14 +365,57 @@ bool CSATClient::TCPLogin(std::string strUserName, std::string strPassword, BOOL
 	SATProtocol::UserInfo* pUserInfo = (SATProtocol::UserInfo*)pData->buf;
 	memcpy(pUserInfo->szUserName, strUserName.c_str(), strUserName.size());
 	memcpy(pUserInfo->szPassword, strPassword.c_str(), strPassword.size());
+	memcpy(pUserInfo->szActuatorName, strActuator.c_str(), strActuator.size());
 
-	bool bret = OnSend(pbuff, len);
+	bool bret = OnSend(pbuff, len, bShowGif);
 	delete[]pbuff;
 
 	return bret;
 }
 
-bool CSATClient::TCPLogout(std::string strUserName, std::string strPassword)
+bool CSATClient::TCPLogout(std::string strUserName, std::string strPassword, std::string strActuator, BOOL bShowGif)
+{
+	return TCPLogin(strUserName, strPassword, strActuator, FALSE, bShowGif);
+}
+
+bool CSATClient::TCPAddDevice(std::string strDevice, bool bDel, BOOL bShowGif)
+{
+	int len = HEADER_LEN + MAX_PATH;
+	byte* pbuff = new byte[len];
+	memset(pbuff, 0, len);
+	SATProtocol::Package* pData = (SATProtocol::Package*)pbuff;
+
+	pData->header.protocol = 0xAA;
+	pData->header.len = len;
+	pData->header.cmd = bDel ? SATProtocol::CMD_DEL_DEVICE : SATProtocol::CMD_ADD_DEVICE;
+
+	// 赋值;
+	memcpy(pData->buf, strDevice.c_str(), strDevice.size());
+
+	bool bret = OnSend(pbuff, len, bShowGif);
+	delete[]pbuff;
+
+	return false;
+}
+
+bool CSATClient::TCPDelDevice(std::string strDevice, BOOL bShowGif)
 {
-	return TCPLogin(strUserName, strPassword, FALSE);
+	return TCPAddDevice(strDevice, false, bShowGif);
+}
+
+bool CSATClient::TCPQueryDevices(BOOL bShowGif)
+{
+	int len = HEADER_LEN;
+	byte* pbuff = new byte[len];
+	memset(pbuff, 0, len);
+	SATProtocol::Package* pData = (SATProtocol::Package*)pbuff;
+
+	pData->header.protocol = 0xAA;
+	pData->header.len = len;
+	pData->header.cmd = SATProtocol::CMD_QUERY_DEVICES;
+
+	bool bret = OnSend(pbuff, len, bShowGif);
+	delete[]pbuff;
+
+	return false;
 }

+ 6 - 6
SATHelper/SATHelper/SATClient.h

@@ -40,7 +40,7 @@ private:
 	int m_nMode;			// IP4 或 IP6
 	std::string lastData;
 	CSocketClient m_SocketClient;
-	bool OnSend(const byte* pData, int nLen);
+	bool OnSend(const byte* pData, int nLen, BOOL bShowGif = TRUE);
 	bool OnReceive(const byte* pData, int nLen);
 	bool OnClose();
 	bool OnConnect();
@@ -57,16 +57,16 @@ public:
 	void GetAddress(const SockAddrIn& addrIn, CString& rString) const;
 
 	// 登录;
-	bool TCPLogin(std::string strUserName, std::string strPassword, BOOL bLogin = TRUE);
+	bool TCPLogin(std::string strUserName, std::string strPassword, std::string strActuator, BOOL bLogin = TRUE, BOOL bShowGif = TRUE);
 	// 登出;
-	bool TCPLogout(std::string strUserName, std::string strPassword);
+	bool TCPLogout(std::string strUserName, std::string strPassword, std::string strActuator, BOOL bShowGif = TRUE);
 
 	// 添加设备;
-	bool TCPAddDevice(std::string strDevice);
+	bool TCPAddDevice(std::string strDevice, bool bDel = false, BOOL bShowGif = TRUE);
 	// 删除设备;
-	bool TCPDelDevice(std::string strDevice);
+	bool TCPDelDevice(std::string strDevice, BOOL bShowGif = TRUE);
 	// 查询设备;
-	bool TCPQueryDevices(std::vector<std::string> &vtDevices);
+	bool TCPQueryDevices(BOOL bShowGif = TRUE);
 };
 
 #endif // __SAT_CLIENT__

+ 2 - 0
SATHelper/SATHelper/SATData.cpp

@@ -5,4 +5,6 @@ namespace SATData {
 	SATProtocol::UserInfo login;
 	SATProtocol::LoginResp login_resp;
 	SATProtocol::LoginResp logout_resp;
+	SATProtocol::DeviceResp device_resp;
+	std::vector<std::string> devices;
 };

+ 3 - 0
SATHelper/SATHelper/SATData.h

@@ -11,6 +11,9 @@ namespace SATData {
 	extern SATProtocol::LoginResp login_resp;
 	// µÇ³ö·µ»Ø;
 	extern SATProtocol::LoginResp logout_resp;
+	// ²éѯÉ豸·µ»Ø;
+	extern SATProtocol::DeviceResp device_resp;
+	extern std::vector<std::string> devices;
 };
 
 #endif // __SAT_DATA__

+ 1 - 1
SATHelper/SATHelper/SATHelper.cpp

@@ -148,7 +148,7 @@ BOOL CSATHelperApp::InitInstance()
 	if (CSATClient::GetInstance()->Start())
 	{
 		if (Global::g_Config.bAutoLogin)
-			CSATClient::GetInstance()->TCPLogin(Global::g_Config.strSATUserName, Global::g_Config.strSATPassword);
+			CSATClient::GetInstance()->TCPLogin(Global::g_Config.strSATUserName, Global::g_Config.strSATPassword, Global::g_Config.strActuator);
 	}
 
 	// 启动TCP服务端;

+ 1 - 1
SATHelper/SATHelper/SATHelper.ini

@@ -20,4 +20,4 @@ Actuator=SAT-Admin
 ;如果是本机,ip可不填;
 ServiceIP=
 ;端口号;
-ServicePort=5588
+ServicePort=5599

+ 0 - 1
SATHelper/SATHelper/resource.h

@@ -129,7 +129,6 @@
 #define IDC_EDIT_USERNAME               1008
 #define BTN_MODIFY_RUNNER_NAME          1009
 #define IDC_IP_ANDROID                  1010
-#define IDC_MFCBUTTON2                  1011
 #define BTN_ADD_ANDROID                 1011
 #define IDC_LIST_DEVICES                1012
 #define IDC_LIST_TASK                   1013