Pārlūkot izejas kodu

接收设备通讯超时值;

scbc.sat2 5 gadi atpakaļ
vecāks
revīzija
0c521e5fc8

+ 5 - 4
SATHelper/SATHelper/Device.cpp

@@ -27,7 +27,7 @@ bool CDevice::IsOpen()
 	return m_obj.IsOpen();
 }
 
-std::string CDevice::SendCommond(std::string cmd)
+std::string CDevice::SendCommond(std::string cmd, int device_timeout)
 {
 	if ( !m_obj.IsOpen() )
 		return std::string("串口未打开成功");
@@ -36,16 +36,17 @@ std::string CDevice::SendCommond(std::string cmd)
 	if ( dwRet != cmd.size() )
 		return std::string("写串口失败");
 
+	/*
 	// 如果是tim和ptn同时运行;
 	std::string pattern{ "run tim (\\d{1,3});run ptn (\\d{1,3});\r" }; // fixed telephone 
 	std::regex re(pattern);
 	WORD timeout = 300;
 	if (std::regex_match(cmd, re))
-		timeout = 1000;
-	
+		timeout = 2000;
+	*/
 
 	byte szData[1024 * 4] = {0};
-	dwRet = m_obj.ReadComm(szData, 1024 * 4, timeout);
+	dwRet = m_obj.ReadComm(szData, 1024 * 4, device_timeout);
 	if (dwRet == 0 )
 		return std::string("读串口失败");
 

+ 1 - 1
SATHelper/SATHelper/Device.h

@@ -14,7 +14,7 @@ public:
 	bool Open();
 	void Close();
 	bool IsOpen();
-	std::string SendCommond(std::string cmd);
+	std::string SendCommond(std::string cmd, int device_timeout);
 public:
 	int m_iID;						// -- É豸µÄID
 	int m_iPort;					// -- É豸´®¿ÚºÅ

+ 2 - 1
SATHelper/SATHelper/IOCPModel.cpp

@@ -906,6 +906,7 @@ void CIOCPModel::_DeviceProc(PER_IO_CONTEXT* pIoContext, Package* pak)
 	reqj.device_id = cJSON_GetObjectItem(pJson, "device_id") ? cJSON_GetObjectItem(pJson, "device_id")->valueint : 0;
 	reqj.device_name = cJSON_GetObjectItem(pJson, "device_name") ? cJSON_GetObjectItem(pJson, "device_name")->valuestring : "";
 	reqj.device_cmd = cJSON_GetObjectItem(pJson, "device_cmd") ? cJSON_GetObjectItem(pJson, "device_cmd")->valuestring : "";
+	reqj.device_timeout = cJSON_GetObjectItem(pJson, "device_timeout") ? cJSON_GetObjectItem(pJson, "device_timeout")->valueint : 300;
 
 	if ( pJson )
 	{
@@ -921,7 +922,7 @@ void CIOCPModel::_DeviceProc(PER_IO_CONTEXT* pIoContext, Package* pak)
 
 	// Ïò´®¿Ú·¢ËÍÖ¸Áî;
 	auto dev = iter->second;
-	std::string readdata = dev->SendCommond(reqj.device_cmd);
+	std::string readdata = dev->SendCommond(reqj.device_cmd, reqj.device_timeout);
 
 	ResponseJson repj;
 	repj.device_id = reqj.device_id;

+ 1 - 0
SATHelper/SATHelper/IOCPModel.h

@@ -37,6 +37,7 @@ typedef struct _REQUEST_JSON_
 	int			device_id;
 	std::string		device_name;
 	std::string device_cmd;
+	int	device_timeout;
 }RequesJson;
 
 typedef struct _RESPONSE_JSON_

+ 1 - 1
SATHelper/SATHelper/SynSerial.cpp

@@ -275,7 +275,7 @@ DWORD CSynSerial::ReadComm(IN BYTE *pReadBuf, IN CONST DWORD& dwReadSize, WORD t
 	while (true)
 	{// cbInQue表示输入缓冲区的字节数; 
 		Sleep(timeout);
-		if (GetTickCount64() - ulTick > 3000)
+		if (GetTickCount64() - ulTick > 5000)
 			break;
 		ClearCommError(m_hSerialPort, &dwErrorFlags, &ComStat);
 		// 防止读一次没读完,再读一次;二次长度一样表示读完;