Browse Source

fix light bug

researchman 8 years ago
parent
commit
62374f9ea1
45 changed files with 191 additions and 91 deletions
  1. BIN
      CRYPTBASE.dll/4A5BBF41c000/CRYPTBASE.dll
  2. BIN
      FWPUCLNT.DLL/4CE7B83238000/FWPUCLNT.DLL
  3. BIN
      IPHLPAPI.DLL/4CE7B8591c000/IPHLPAPI.DLL
  4. BIN
      KERNELBASE.dll/4CE7BAFA46000/KERNELBASE.dll
  5. BIN
      NapiNSP.dll/4A5BDA6D10000/NapiNSP.dll
  6. BIN
      WSHTCPIP.DLL/4A5BDB5A5000/WSHTCPIP.DLL
  7. 185 90
      YAServerDlg.cpp
  8. 4 1
      YAServerDlg.h
  9. BIN
      advapi32.dll/4CE7B706a0000/advapi32.dll
  10. BIN
      apphelp.dll/4CE7B73E4c000/apphelp.dll
  11. 1 0
      classdef.cpp
  12. 1 0
      classdef.h
  13. BIN
      comctl32.dll/4CE7B82C84000/comctl32.dll
  14. BIN
      cryptsp.dll/4A5BDA3D16000/cryptsp.dll
  15. BIN
      dnsapi.dll/4CE7B7E644000/dnsapi.dll
  16. BIN
      gdi32.dll/4CE7BA5390000/gdi32.dll
  17. BIN
      imm32.dll/4CE7BA5360000/imm32.dll
  18. BIN
      kernel32.dll/4CE7BAF9110000/kernel32.dll
  19. BIN
      lpk.dll/4A5BDB3Ba000/lpk.dll
  20. BIN
      msctf.dll/4A5BDA69cc000/msctf.dll
  21. BIN
      msvcrt.dll/4A5BDA6Fac000/msvcrt.dll
  22. BIN
      mswsock.dll/4CE7B8E83c000/mswsock.dll
  23. BIN
      nlaapi.dll/4CE7B90F10000/nlaapi.dll
  24. BIN
      nsi.dll/4A5BDAD96000/nsi.dll
  25. BIN
      ntdll.dll/4CE7BA58180000/ntdll.dll
  26. BIN
      ole32.dll/4CE7B96F15c000/ole32.dll
  27. BIN
      oleaut32.dll/4CE7B9728f000/oleaut32.dll
  28. 0 0
      pingme.txt
  29. BIN
      rasadhlp.dll/4A5BDAD66000/rasadhlp.dll
  30. BIN
      resource.h
  31. BIN
      rpcrt4.dll/4CE7BA59f0000/rpcrt4.dll
  32. BIN
      rsaenh.dll/4A5BDAE03b000/rsaenh.dll
  33. BIN
      sechost.dll/4A5BDB0419000/sechost.dll
  34. BIN
      secur32.dll/4CE7B9D18000/secur32.dll
  35. BIN
      shell32.dll/4CE7B9DEc4a000/shell32.dll
  36. BIN
      shlwapi.dll/4CE7B9E257000/shlwapi.dll
  37. BIN
      sspicli.dll/4CE7BA5960000/sspicli.dll
  38. BIN
      user32.dll/4CE7BA59100000/user32.dll
  39. BIN
      usp10.dll/4CE7BA299d000/usp10.dll
  40. BIN
      uxtheme.dll/4A5BDB3C80000/uxtheme.dll
  41. BIN
      winmm.dll/4CE7BA4232000/winmm.dll
  42. BIN
      winnsi.dll/4A5BDB437000/winnsi.dll
  43. BIN
      winrnr.dll/4A5BDB448000/winrnr.dll
  44. BIN
      ws2_32.dll/4CE7BA6835000/ws2_32.dll
  45. BIN
      wship6.dll/4A5BDB566000/wship6.dll

BIN
CRYPTBASE.dll/4A5BBF41c000/CRYPTBASE.dll


BIN
FWPUCLNT.DLL/4CE7B83238000/FWPUCLNT.DLL


BIN
IPHLPAPI.DLL/4CE7B8591c000/IPHLPAPI.DLL


BIN
KERNELBASE.dll/4CE7BAFA46000/KERNELBASE.dll


BIN
NapiNSP.dll/4A5BDA6D10000/NapiNSP.dll


BIN
WSHTCPIP.DLL/4A5BDB5A5000/WSHTCPIP.DLL


+ 185 - 90
YAServerDlg.cpp

@@ -249,11 +249,7 @@ DWORD WINAPI _exec_sql(LPVOID lparam)
 
 	if(sql){
 		LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_88);
-<<<<<<< HEAD
 		delete[] sql;
-=======
-		delete[] lparam;
->>>>>>> 37ae62500d030f49557c27c4679cd22e3c38d38a
 		sql = NULL;
 	}
 
@@ -1782,11 +1778,11 @@ int CYAServerDlg::init_traffic_lights(int light_id)
 	char sql[LENGTH_SQL] = {0};
 	if (light_id == 0)
 	{
-		sprintf_s(sql, "select light_id,ip,x,y,z,name,label,map_id,area_id,section_id,reader_id,group_id,port from dat_traffic_lights where state = 0;"); 
+		sprintf_s(sql, "select light_id,ip,x,y,z,name,label,map_id,area_id,section_id,ctrl_reader_id,group_id,port from dat_light where state = 0;"); 
 	} 
 	else
 	{
-		sprintf_s(sql, "select light_id,ip,x,y,z,name,label,map_id,area_id,section_id,reader_id,group_id,port from dat_traffic_lights where state = 0 and light_id = %d;",light_id); 
+		sprintf_s(sql, "select light_id,ip,x,y,z,name,label,map_id,area_id,section_id,ctrl_reader_id,group_id,port from dat_light where state = 0 and light_id = %d;",light_id); 
 	}
 
 
@@ -2049,6 +2045,48 @@ int CYAServerDlg::init_light_group(int group_id /*= 0*/)
 	return 0;
 }
 
+int CYAServerDlg::init_light_state(CONNID dwConnID,TCHAR lpszAddress[])
+{
+	std::string ip = CFunctions::TChar2string(lpszAddress);
+	if (ip == "")
+	{
+		return 1;
+	}
+
+	bool is_exist = false;
+
+	ReaderMap::iterator it_reader = mp_ctrl_reader_list.begin();
+	for (it_reader;it_reader!=mp_ctrl_reader_list.end();++it_reader)
+	{
+		if(it_reader->second->ip == ip){
+			is_exist = true;
+			break;
+		}
+	}
+
+	if (!is_exist)
+	{
+		return 1;
+	}
+
+	if (!it_reader->second->init_ctrl_reader_state)
+	{
+		for (it_reader;it_reader!=mp_ctrl_reader_list.end();++it_reader)
+		{
+			LightMap::iterator it_light = mp_light_list.begin();
+			for (it_light;it_light!=mp_light_list.end();++it_light)
+			{
+				if(it_light->second->m_nReaderID == it_reader->second->reader_id){
+					send_call_light(CC_REQ_LIGTHS_STATE,it_light->second->m_nID,1,1);
+					it_reader->second->init_ctrl_reader_state = true;
+				}
+			}
+		}
+	}
+	
+	return 0;
+}
+
 void CYAServerDlg::ws_init()
 {
 	is_websocket_ok = false;
@@ -2355,7 +2393,6 @@ void CYAServerDlg::parse_package_data(BYTE* DataBuffer, int nLen, DWORD dwConnID
 void CYAServerDlg::parse_data_locate_reader(BYTE * DataBuffer, int& nCurPos, int nLen, DWORD dwConnID, int& reader_id )
 {
 	LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_15);
-	//TRACE(_T("parse_data_locate_reader \r\n"));
 	// 分站号
 	DWORD dwReaderID;
 	CFunctions::getDWord(DataBuffer, &dwReaderID, nCurPos);
@@ -2371,9 +2408,6 @@ void CYAServerDlg::parse_data_locate_reader(BYTE * DataBuffer, int& nCurPos, int
 		add_socket_to_list(dwConnID, reader_id, DEVICE_TYPE::DT_CARD_READER);
 		LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_16);
 	}else{
-		//return;
-		//isErrorReader = true;
-		//TRACE(_T("new Reader,reader_id = %d . \r\n"),dwReaderID);
 		pReader = std::make_shared<Reader>();
 		pReader->reader_id = dwReaderID;
 		LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_17);
@@ -2450,7 +2484,7 @@ void CYAServerDlg::parse_data_ctrl_reader( BYTE * DataBuffer, int& nCurPos, int
 	std::shared_ptr<Reader> pReader = nullptr;
 	bool isErrorReader = false;
 
-	if(itReader != mp_reader_list.end()){
+	if(itReader != mp_ctrl_reader_list.end()){
 		pReader = itReader->second;
 		add_socket_to_list(dwConnID, reader_id, DEVICE_TYPE::DT_CTRL_READER);
 	}else{
@@ -2863,6 +2897,8 @@ std::string CYAServerDlg::get_json_device_state()
 		Json::Value state_map;
 		Json::Value state_devs;
 		int n = 0;
+
+		//定位分站列表
 		ReaderMap::iterator it = mp_reader_list.begin();
 		for(; it != mp_reader_list.end(); ++it){
 			if(it->second->map_id != it_map->second->map_id) continue;
@@ -2880,6 +2916,29 @@ std::string CYAServerDlg::get_json_device_state()
 			it->second->state_old = it->second->state;
 			//}
 		}
+
+		//通信分站列表
+		ReaderMap::iterator it_ctrl_reader = mp_ctrl_reader_list.begin();
+		for (it_ctrl_reader;it_ctrl_reader!=mp_ctrl_reader_list.end();++it_ctrl_reader)
+		{
+			if (it_ctrl_reader->second->map_id != it_map->second->map_id)
+			{
+				continue;
+			}
+			
+			Json::Value state_dev;
+			state_dev[JSON_KEY_DEV_STATE_DEVICE_ID] = it_ctrl_reader->second->reader_id;
+			state_dev[JSON_KEY_DEV_STATE_STATE_DESC] = it_ctrl_reader->second->get_state_text();
+			state_dev[JSON_KEY_DEV_STATE_STATE] = it_ctrl_reader->second->state;
+			state_dev[JSON_KEY_DEV_STATE_DEVICE_TYPE_ID] = it_ctrl_reader->second->device_type_id;
+			localtime_s(&local_time, &it_ctrl_reader->second->rec_time);
+			strftime(_time, STR_LEN_TIME, "%Y-%m-%d %H:%M:%S", &local_time);
+			state_dev[JSON_KEY_DEV_STATE_TIME] = _time;
+			n++;
+			state_devs.append(state_dev);
+			it_ctrl_reader->second->state_old = it_ctrl_reader->second->state;
+		}
+
 		if(n >0){
 			state_map[JSON_KEY_DEV_STATE_MAP_ID] = it_map->second->map_id;
 			state_map[JSON_KEY_DEV_STATE_DEVICES] = state_devs;
@@ -2892,50 +2951,7 @@ std::string CYAServerDlg::get_json_device_state()
 		root[JSON_ROOT_KEY_DATA] = state_maps;
 		return root.toFastString();
 	}
-	return "";
-	//char _time[STR_LEN_TIME];
-	//struct tm local_time;
-	//Json::Value root;	
-	//Json::Value data;
-	//	
-	//int n = 0;
-	//ReaderMap::iterator it_reader = mp_reader_list.begin();
-	//for(; it_reader != mp_reader_list.end(); ++it_reader){
-	//	//if(it->second->state != it->second->state_old){
-	//	Json::Value state_dev;
-	//	state_dev.append(it_reader->second->reader_id);
-	//	state_dev.append(it_reader->second->device_type_id);
-	//	state_dev.append(it_reader->second->state);
-	//	state_dev.append((double)*((int64_t*)&it_reader->second->rec_time) * 1000);
-	//	state_dev.append(it_reader->second->map_id);
-	//	n++;
-	//	data.append(state_dev);
-	//	it_reader->second->state_old = it_reader->second->state;
-	//	//}
-	//}
-
-	//LightMap::iterator it_light = mp_light_list.begin();
-	//for(; it_light != mp_light_list.end(); ++it_light){
-	//	//if(it->second->state != it->second->state_old){
-	//	Json::Value state_dev;
-	//	state_dev.append(it_light->second->m_nID);
-	//	state_dev.append(DEVICE_TYPE::DT_LIGHT);
-	//	state_dev.append(it_light->second->m_nColor);
-	//	state_dev.append((double)*((int64_t*)&it_light->second->rec_time) * 1000);
-	//	state_dev.append(it_light->second->m_nMapID);
-	//	state_dev.append(it_light->second->m_nIsCtrl);
-	//	n++;
-	//	data.append(state_dev);
-	//	it_reader->second->state_old = it_reader->second->state;
-	//	//}
-	//}
 
-	//if(n>0){
-	//	root[JSON_ROOT_KEY_CMD] = JSON_CMD_VALUE_DEV_STATE;
-	//	root[JSON_ROOT_KEY_DATA] = data;
-	//	LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_46);
-	//	return root.toFastString();
-	//}
 	LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_47);
 	return "";
 }
@@ -4309,7 +4325,10 @@ void CYAServerDlg::OnBnExit()
 
 void CYAServerDlg::OnBnSyncTime()
 {
-	send_sync_reader();
+	//send_sync_reader();
+
+	//send_call_light(CC_SET_LIGHTS_STATE,2,2,2);
+	send_call_light(CC_REQ_LIGTHS_STATE,2,2,2);
 }
 
 CYAServerDlg::~CYAServerDlg()
@@ -4320,7 +4339,6 @@ CYAServerDlg::~CYAServerDlg()
 void CYAServerDlg::OnConnected()
 {
 	is_websocket_ok = true;
-	//Sleep(50); // need delay
 	time_ws_connect = ::GetTickCount();
 }
 
@@ -4945,7 +4963,7 @@ int CYAServerDlg::deal_traffic_lights(std::shared_ptr<Card> card)
 					{
 						it_ll->second->m_nColor = COLOR_GREEN;
 						if(LIGHT_CTRL_STATE::CTRL_STATE_AUTO == it_ll->second->m_nIsCtrl){
-							send_call_light(it_ll->second->m_nID, it_ll->second->m_nIsCtrl, it_ll->second->m_nColor);
+							send_call_light(CC_SET_LIGHTS_STATE,it_ll->second->m_nID, it_ll->second->m_nIsCtrl, it_ll->second->m_nColor);
 						}
 					}
 					card->b_enter_intersection = false;
@@ -5096,7 +5114,7 @@ int CYAServerDlg::deal_traffic_lights(std::shared_ptr<Card> card)
 				}
 
 				if(LIGHT_CTRL_STATE::CTRL_STATE_AUTO == it_glight->second->m_nIsCtrl){
-					send_call_light(it_glight->second->m_nID, it_glight->second->m_nIsCtrl, it_glight->second->m_nColor);
+					send_call_light(CC_SET_LIGHTS_STATE,it_glight->second->m_nID, it_glight->second->m_nIsCtrl, it_glight->second->m_nColor);
 				}
 			}
 
@@ -6730,6 +6748,7 @@ void CYAServerDlg::init_base_data()
 	init_adhoc();
 
 	init_chamber();
+	init_ctrl_reader();
 	init_traffic_lights();
 	init_section();
 	init_light_group();
@@ -7444,6 +7463,8 @@ EnHandleResult CYAServerDlg::OnAccept( ITcpServer* pSender, CONNID dwConnID, SOC
 
 	pSender->GetRemoteAddress(dwConnID, szAddress, iAddressLen, usPort);
     debug_print_syslog(0, "Anchor accept connect: ip:%S", szAddress);
+	TRACE(_T("ip:%S \r\n"),szAddress);
+	init_light_state(dwConnID,szAddress);
 	//::PostOnAccept(dwConnID, szAddress, usPort, bPass);
 	return HR_OK;
 }
@@ -7466,7 +7487,6 @@ EnHandleResult CYAServerDlg::OnReceive( ITcpServer* pSender, CONNID dwConnID, co
 		memset(data->buf, 0, LENGTH_MSG_4K);
 		memcpy(data->buf, pData, iLength);
 		//WT_EXECUTELONGFUNCTION 线程间跳转 WT_EXECUTEDEFAULT 执行完一个再执行另一个
-		//QueueUserWorkItem(_parse_data_server, (LPVOID)data, WT_EXECUTEDEFAULT);
 		this->parse_data_server(data->buf, data->len, data->dwConnID);
 		BufferUtility::getInstance()->releaseItem(data);
 	}
@@ -9491,23 +9511,32 @@ std::string CYAServerDlg::get_json_event()
 
 void CYAServerDlg::parse_data_lights_state( BYTE* DataBuffer, int& nCurPos, int reader_id, unsigned short wChr )
 {
+	TRACE(_T("get state \r\n"));
 	time_t cur_time = time(NULL);
 	WORD wlen = 0; // 段长度 2 byte
-	CFunctions::getWord(DataBuffer, &wlen, nCurPos);
-	nCurPos += sizeof(WORD);
+	//CFunctions::getWord(DataBuffer, &wlen, nCurPos);
+	//nCurPos += sizeof(WORD);
+	wlen = 8;			//只针对认证,此处写死为8个
+	
 
 	BYTE btCmd = 0; // 控制码 1 byte 0x01 响应红绿灯设置状态 0x02 响应请求红绿灯状态
 	memcpy(&btCmd, &DataBuffer[nCurPos], sizeof(BYTE));
 	nCurPos += sizeof(BYTE);
 
-	BYTE btResult = 0; // 返回结果
-	memcpy(&btResult, &DataBuffer[nCurPos], sizeof(BYTE));
-	nCurPos += sizeof(BYTE);
+	//BYTE btResult = 0; // 返回结果
+	//memcpy(&btResult, &DataBuffer[nCurPos], sizeof(BYTE));
+	//nCurPos += sizeof(BYTE);
 
-	// 段数据 
-	BYTE btDevType = 0; // 设备类型 1 byte 0x01灯,0x02 报警器,0x03 显示屏
+	//// 段数据 
+	//BYTE btDevType = 0; // 设备类型 1 byte 0x01灯,0x02 报警器,0x03 显示屏
+	//memcpy(&btDevType, &DataBuffer[nCurPos], sizeof(BYTE));
+	//nCurPos += sizeof(BYTE);
+
+	// 设备类型 
+	BYTE btDevType = 0; // 设备类型 1 byte :0x00:读卡分站;0x01:控制分站;0x03:红绿灯;0x04:告警器;0x05:道岔;0x06:显示屏
 	memcpy(&btDevType, &DataBuffer[nCurPos], sizeof(BYTE));
 	nCurPos += sizeof(BYTE);
+
 	if(btDevType == DEVICE_TYPE::DT_LIGHT){
 		BYTE btId = 0; // 设备编号 1 byte
 		memcpy(&btId, &DataBuffer[nCurPos], sizeof(BYTE));
@@ -9570,11 +9599,11 @@ void CYAServerDlg::send_call_light()
 {
 	LightCallMap::iterator it_light_call = mp_light_call_list->begin();
 	for(; it_light_call != mp_light_call_list->end(); ++ it_light_call){
-		send_call_light(it_light_call->second->light_id, it_light_call->second->ctrl_type, it_light_call->second->ctrl_color);
+		send_call_light(CC_SET_LIGHTS_STATE,it_light_call->second->light_id, it_light_call->second->ctrl_type, it_light_call->second->ctrl_color);
 	}
 }
 
-void CYAServerDlg::send_call_light( int light_id, int ctrl_type, int ctrl_color )
+void CYAServerDlg::send_call_light(BYTE ctrl_cmd, int light_id, int ctrl_type, int ctrl_color )
 {
 	BYTE buf[LENGTH_SEND_BUF];
 
@@ -9582,28 +9611,94 @@ void CYAServerDlg::send_call_light( int light_id, int ctrl_type, int ctrl_color
 	LightMap::iterator it_light;
 
 	int npos = 0;
-	BYTE btCmd = 0x01, btDevType = DEVICE_TYPE::DT_LIGHT, btShape = 0x01;
-	it_light = mp_light_list.find(light_id);
-	if(it_light != mp_light_list.end()){
-		it_sock = mp_socket_list.find(CFunctions::c2wc(it_light->second->m_strIP.c_str()));
-		if(it_sock != mp_socket_list.end()){
-			memset(buf, 0, LENGTH_SEND_BUF);
-			npos = 0;
-			memcpy(&buf[npos], &btCmd, sizeof(BYTE)); // 控制码
-			npos += sizeof(BYTE);
-			memcpy(&buf[npos], &btDevType, sizeof(BYTE)); // 设备类型
-			npos += sizeof(BYTE);
-			memcpy(&buf[npos], &it_light->second->m_nPort, sizeof(BYTE)); // 设备ID
-			npos += sizeof(BYTE);
-			memcpy(&buf[npos], &ctrl_type, sizeof(BYTE)); // 控制状态
-			npos += sizeof(BYTE);
-			memcpy(&buf[npos], &ctrl_color, sizeof(BYTE)); // 颜色
-			npos += sizeof(BYTE);
-			memcpy(&buf[npos], &btShape, sizeof(BYTE)); // 图案
-			npos += sizeof(BYTE);
-
-			SendData(it_sock->second->dwConnID,CHAR_CTRL_READER_CMD, npos, buf);
+	BYTE btCmd = ctrl_cmd, btDevType = DEVICE_TYPE::DT_LIGHT, btShape = 0x01;
+	WORD wCrc;
+	switch (ctrl_cmd)
+	{
+	case 0x01:
+		it_light = mp_light_list.find(light_id);
+		if(it_light != mp_light_list.end()){
+			it_sock = mp_socket_list.find(CFunctions::c2wc(it_light->second->m_strIP.c_str()));
+			if(it_sock != mp_socket_list.end()){
+				memset(buf, 0, LENGTH_SEND_BUF);
+				npos = 0;
+				memcpy(&buf[npos], &btCmd, sizeof(BYTE)); // 控制码
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &btDevType, sizeof(BYTE)); // 设备类型
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &it_light->second->m_nPort, sizeof(BYTE)); // 设备ID
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &ctrl_type, sizeof(BYTE)); // 控制状态
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &ctrl_color, sizeof(BYTE)); // 颜色
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &btShape, sizeof(BYTE)); // 图案
+				npos += sizeof(BYTE);
+
+				//CRC校验
+				wCrc = CFunctions::getCRC(&buf[0], npos); // 数据长度 + 特征字
+				CFunctions::memcpyWord(&buf[0], wCrc, npos);
+				npos += sizeof(WORD);
+
+				SendData(it_sock->second->dwConnID,CHAR_CTRL_READER_CMD, npos, buf);
+			}
 		}
+		break;
+	case 0x02:
+		it_light = mp_light_list.find(light_id);
+		if(it_light != mp_light_list.end()){
+			it_sock = mp_socket_list.find(CFunctions::c2wc(it_light->second->m_strIP.c_str()));
+			if(it_sock != mp_socket_list.end()){
+				memset(buf, 0, LENGTH_SEND_BUF);
+				npos = 0;
+				memcpy(&buf[npos], &btCmd, sizeof(BYTE)); // 控制码
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &btDevType, sizeof(BYTE)); // 设备类型
+				npos += sizeof(BYTE);
+				memcpy(&buf[npos], &it_light->second->m_nPort, sizeof(BYTE)); // 设备ID
+				npos += sizeof(BYTE);
+				//CRC校验
+				wCrc = CFunctions::getCRC(&buf[0], npos); // 数据长度 + 特征字
+				CFunctions::memcpyWord(&buf[0], wCrc, npos);
+				npos += sizeof(WORD);
+				SendData(it_sock->second->dwConnID,CHAR_CTRL_READER_CMD, npos, buf);
+			}
+		}
+		break;
+	default:
+		break;
 	}
-	//delete[] buf;
+
+	//BYTE buf[LENGTH_SEND_BUF];
+	//SocketMap::iterator it_sock;
+	//LightMap::iterator it_light;
+	//int npos = 0;
+	//BYTE btCmd = ctrl_cmd, btDevType = DEVICE_TYPE::DT_LIGHT, btShape = 0x01;
+	//it_light = mp_light_list.find(light_id);
+	//if(it_light != mp_light_list.end()){
+	//	it_sock = mp_socket_list.find(CFunctions::c2wc(it_light->second->m_strIP.c_str()));
+	//	if(it_sock != mp_socket_list.end()){
+	//		memset(buf, 0, LENGTH_SEND_BUF);
+	//		npos = 0;
+	//		memcpy(&buf[npos], &btCmd, sizeof(BYTE)); // 控制码
+	//		npos += sizeof(BYTE);
+	//		memcpy(&buf[npos], &btDevType, sizeof(BYTE)); // 设备类型
+	//		npos += sizeof(BYTE);
+	//		memcpy(&buf[npos], &it_light->second->m_nPort, sizeof(BYTE)); // 设备ID
+	//		npos += sizeof(BYTE);
+	//		memcpy(&buf[npos], &ctrl_type, sizeof(BYTE)); // 控制状态
+	//		npos += sizeof(BYTE);
+	//		memcpy(&buf[npos], &ctrl_color, sizeof(BYTE)); // 颜色
+	//		npos += sizeof(BYTE);
+	//		memcpy(&buf[npos], &btShape, sizeof(BYTE)); // 图案
+	//		npos += sizeof(BYTE);
+
+	//		//CRC校验
+	//		WORD wCrc = CFunctions::getCRC(&buf[0], npos); // 数据长度 + 特征字
+	//		CFunctions::memcpyWord(&buf[0], wCrc, npos);
+	//		npos += sizeof(WORD);
+
+	//		SendData(it_sock->second->dwConnID,CHAR_CTRL_READER_CMD, npos, buf);
+	//	}
+	//}
 }

+ 4 - 1
YAServerDlg.h

@@ -271,6 +271,7 @@ public:
 	int init_chamber(int chamber_id = 0);				//初始化硐室
 	int init_section(int section_id = 0);				//初始化路段
 	int init_light_group(int group_id = 0);				//初始化红绿灯组
+	int init_light_state(CONNID dwConnID,TCHAR lpszAddress[]);
 
 	//int init_patrol_info(int task_id = 0); // 加载巡检任务及巡检路线
 	int init_patrol_info(std::string card_id);
@@ -337,7 +338,7 @@ public:
 	// 将设置的灯添加到列表,同一个灯的状态会覆盖,使用最后一个状态控制
 	void add_light_to_call_list(LIGHTS_SELECT_TYPE lst, LIGHT_COLOR clr, LIGHT_CTRL_STATE ctrl, int tkid, int light_id = 0); 
 	void send_call_light();
-	void send_call_light(int light_id, int ctrl_type, int ctrl_color);
+	void send_call_light(BYTE ctrl_cmd, int light_id, int ctrl_type, int ctrl_color);
 
 	// 获取json串
 	string get_json_login();
@@ -444,6 +445,8 @@ public:
 	bool isInMainTunel(std::shared_ptr<Card> pCard);		//此卡是否在主巷道
 	int getTunelProperty(std::shared_ptr<Card> pCard);		//获得卡的巷道值
 	void AnalysisAlgoFailedData(std::shared_ptr<Card> pCard);
+public:
+	//测试函数
 	void Test();
 	void ReadFileTest();
 public:

BIN
advapi32.dll/4CE7B706a0000/advapi32.dll


BIN
apphelp.dll/4CE7B73E4c000/apphelp.dll


+ 1 - 0
classdef.cpp

@@ -1805,6 +1805,7 @@ Reader::Reader(void)
 	}
 
 	bIsInitCoverage = false;
+	init_ctrl_reader_state = false;
 
 	for(int i = 0; i < READER_EVENT_COUNT; i++){
 		m_event_list[i] = 0;

+ 1 - 0
classdef.h

@@ -712,6 +712,7 @@ public:
 	map<int,_point> readerCoveragePath;
 	bool bIsInitCoverage;
 	int m_nIsSpecial;
+	bool init_ctrl_reader_state;	//当为控制分站时,第一次需要获得此控制分站下的红绿灯状态
 
 	INT64 m_event_list[READER_EVENT_COUNT]; // 保存事件Id
 public:

BIN
comctl32.dll/4CE7B82C84000/comctl32.dll


BIN
cryptsp.dll/4A5BDA3D16000/cryptsp.dll


BIN
dnsapi.dll/4CE7B7E644000/dnsapi.dll


BIN
gdi32.dll/4CE7BA5390000/gdi32.dll


BIN
imm32.dll/4CE7BA5360000/imm32.dll


BIN
kernel32.dll/4CE7BAF9110000/kernel32.dll


BIN
lpk.dll/4A5BDB3Ba000/lpk.dll


BIN
msctf.dll/4A5BDA69cc000/msctf.dll


BIN
msvcrt.dll/4A5BDA6Fac000/msvcrt.dll


BIN
mswsock.dll/4CE7B8E83c000/mswsock.dll


BIN
nlaapi.dll/4CE7B90F10000/nlaapi.dll


BIN
nsi.dll/4A5BDAD96000/nsi.dll


BIN
ntdll.dll/4CE7BA58180000/ntdll.dll


BIN
ole32.dll/4CE7B96F15c000/ole32.dll


BIN
oleaut32.dll/4CE7B9728f000/oleaut32.dll


+ 0 - 0
pingme.txt


BIN
rasadhlp.dll/4A5BDAD66000/rasadhlp.dll


BIN
resource.h


BIN
rpcrt4.dll/4CE7BA59f0000/rpcrt4.dll


BIN
rsaenh.dll/4A5BDAE03b000/rsaenh.dll


BIN
sechost.dll/4A5BDB0419000/sechost.dll


BIN
secur32.dll/4CE7B9D18000/secur32.dll


BIN
shell32.dll/4CE7B9DEc4a000/shell32.dll


BIN
shlwapi.dll/4CE7B9E257000/shlwapi.dll


BIN
sspicli.dll/4CE7BA5960000/sspicli.dll


BIN
user32.dll/4CE7BA59100000/user32.dll


BIN
usp10.dll/4CE7BA299d000/usp10.dll


BIN
uxtheme.dll/4A5BDB3C80000/uxtheme.dll


BIN
winmm.dll/4CE7BA4232000/winmm.dll


BIN
winnsi.dll/4A5BDB437000/winnsi.dll


BIN
winrnr.dll/4A5BDB448000/winrnr.dll


BIN
ws2_32.dll/4CE7BA6835000/ws2_32.dll


BIN
wship6.dll/4A5BDB566000/wship6.dll