Преглед изворни кода

新增U盘切换器接口;

scbc пре 5 година
родитељ
комит
823622b510
2 измењених фајлова са 76 додато и 88 уклоњено
  1. 70 88
      TestWizard/TestWizard/TestWizard.cpp
  2. 6 0
      TestWizard/TestWizard/TestWizard.h

+ 70 - 88
TestWizard/TestWizard/TestWizard.cpp

@@ -19,6 +19,7 @@ bool g_bEnableLoad = false;
 std::string g_strXMLPath;
 std::vector<KeyItem> g_vtKeyItem;
 CSynSerial g_synSerial;
+CSynSerial g_usbSwitch;
 CSerialPort g_serialPort;
 
 
@@ -47,29 +48,35 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
 	{
 		std::string a = tolower("FFDFDFfdfdfdDDA");
 		// TODO: 在此处为应用程序的行为编写代码。
-		if ( OpenDevice(7, 115200, 8, 0, 0) )
+		if ( OpenDevice(16, 115200, 8, 0, 0) )
 		{
-			OpenXML("D:\\SAT\\resource\\RCU\\TW\\demo.xml");
-			std::string data = GetSignalsName();
+			//OpenXML("D:\\SAT\\resource\\RCU\\TW\\demo.xml");
+			//std::string data = GetSignalsName();
 			
 			int time = 200;
 			//SendKey("POWER");
 			//Sleep(time);
-			SendKey("SETTING");
-			Sleep(time);
-			SendKey("OK");
-			Sleep(time);
-			SendKey("DOWN");
-			Sleep(time);
-			SendKey("DOWN");
-			Sleep(time);
-			SendKey("UP");
+			//SendKey("SETTING");
+			//Sleep(time);
+			//SendKey("OK");
+			//Sleep(time);
+			//SendKey("DOWN");
+			//Sleep(time);
+			//SendKey("DOWN");
+			//Sleep(time);
+			//SendKey("UP");
+			//Sleep(time);
+			//SendKey("LEFT");
+			//Sleep(time);
+			//SendKey("RIGHT");
+			//Sleep(time);
+			sendCmd("*INPUT BLEKEY 07004F");
+			sendCmd("*INPUT BLEKEY 07004F");
 			Sleep(time);
-			SendKey("LEFT");
+			sendCmd("*INPUT BLEKEY 070050");
 			Sleep(time);
-			SendKey("RIGHT");
+			sendCmd("*INPUT BLEKEY 0C0223");
 			Sleep(time);
-
 			CloseDevice();
 		}
 	}
@@ -388,7 +395,6 @@ TESTWIZARD_API int Save2XML(LPCTSTR lpXMLPath)
 // 打开串口;
 TESTWIZARD_API BOOL OpenDevice(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE Parity, BYTE StopBits)
 {
-#if 1
 	// 关闭打开的;
 	if ( g_synSerial.IsOpen() )
 		g_synSerial.CloseSerialPort();
@@ -396,50 +402,32 @@ TESTWIZARD_API BOOL OpenDevice(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE
 	g_synSerial.OpenSerialPort(nPort, dwBaudrate, ByteSize, Parity, StopBits, 0, 1000);
 
 	return g_synSerial.IsOpen();
-#else
-	if ( g_serialPort.IsOpen())
-		g_serialPort.Close();
-
-	g_serialPort.Open(nPort, dwBaudrate, static_cast<CSerialPort::Parity>(Parity), ByteSize, static_cast<CSerialPort::StopBits>(StopBits));
-
-	return g_serialPort.IsOpen();
-#endif
 }
 
 // 关闭串口;
 TESTWIZARD_API void CloseDevice()
 {
-#if 1
 	if ( g_synSerial.IsOpen() )
 		g_synSerial.CloseSerialPort();
-#else
-	if ( g_serialPort.IsOpen() )
-		g_serialPort.Close();
-#endif
 }
 
-TESTWIZARD_API bool SendKey(LPCTSTR lpKeyName)
+TESTWIZARD_API bool sendCmd(LPCTSTR cmdStr) 
 {
-#if 1
-	if ( !g_synSerial.IsOpen() )
-		return false;
-
-	KeyItem *pkeyItem = FindItem(lpKeyName);
-	if ( pkeyItem == NULL )
-		return false;
-
 	// 封装发送包;
 	byte szSendData[MAX_PATH] = {0};
-	_stprintf_s((TCHAR*)szSendData, MAX_PATH, _T("*INPUT %s %s\r"), pkeyItem->keyType.c_str(), pkeyItem->keyCode.c_str());
+	_stprintf_s((TCHAR*)szSendData, MAX_PATH, _T("%s\r"), cmdStr);
 
 	DWORD dwNumberOfBytesWritten = g_synSerial.WriteComm(szSendData, _tcslen((TCHAR*)szSendData));
-	if ( dwNumberOfBytesWritten != _tcslen((TCHAR*)szSendData) )
-		return false;
+	//if ( dwNumberOfBytesWritten != _tcslen((TCHAR*)szSendData) )
+		//return false;
 
 	DWORD dwNumberOfBytesRead = g_synSerial.ReadComm(szSendData, MAX_PATH);
-	return dwNumberOfBytesRead ? true : false;
-#else
-	if ( !g_serialPort.IsOpen() )
+	return true;
+}
+
+TESTWIZARD_API bool SendKey(LPCTSTR lpKeyName)
+{
+	if ( !g_synSerial.IsOpen() )
 		return false;
 
 	KeyItem *pkeyItem = FindItem(lpKeyName);
@@ -450,18 +438,16 @@ TESTWIZARD_API bool SendKey(LPCTSTR lpKeyName)
 	byte szSendData[MAX_PATH] = {0};
 	_stprintf_s((TCHAR*)szSendData, MAX_PATH, _T("*INPUT %s %s\r"), pkeyItem->keyType.c_str(), pkeyItem->keyCode.c_str());
 
-	DWORD dwNumberOfBytesWritten = g_serialPort.Write(szSendData, _tcslen((TCHAR*)szSendData));
+	DWORD dwNumberOfBytesWritten = g_synSerial.WriteComm(szSendData, _tcslen((TCHAR*)szSendData));
 	if ( dwNumberOfBytesWritten != _tcslen((TCHAR*)szSendData) )
 		return false;
 
-	DWORD dwNumberOfBytesRead = g_serialPort.Read(szSendData, MAX_PATH);
+	DWORD dwNumberOfBytesRead = g_synSerial.ReadComm(szSendData, MAX_PATH);
 	return dwNumberOfBytesRead ? true : false;
-#endif
 }
 
 TESTWIZARD_API bool ReadKey()
 {
-#if 1
 	if ( !g_synSerial.IsOpen() )
 		return false;
 
@@ -496,46 +482,6 @@ TESTWIZARD_API bool ReadKey()
 	keyItem.keyCode.append((char*)(&szKeyData[pos+1]), dwNumberOfBytesRead-pos-4);
 
 	return true;
-#else
-	if ( !g_serialPort.IsOpen() )
-		return false;
-
-	byte szKeyData[MAX_PATH] = {0};
-	COMMTIMEOUTS Timeouts;
-	Timeouts.WriteTotalTimeoutMultiplier = 100;
-	Timeouts.WriteTotalTimeoutConstant = 15000;
-	g_serialPort.SetTimeouts(Timeouts);
-	DWORD dwNumberOfBytesRead = g_serialPort.Read(szKeyData, MAX_PATH);
-	if ( dwNumberOfBytesRead <= 0 )
-		return false;
-
-	// 如果是C++11,使用std正则;[码类型]<码内容>0D 0A;
-	// 不是 "[" 开头;
-	if ( szKeyData[0] != 0x5B )
-		return false;
-
-	// 查找 "]" 的位置;
-	int pos = 0;
-	byte *p = szKeyData;
-	while ( p++, pos++ )
-		if (*p == 0x5D)
-			break;
-
-	// 不在有效范围内;
-	if ( pos >= dwNumberOfBytesRead - 2 )
-		return false;
-
-
-	// 不是0d 0a结束;
-	if ( szKeyData[dwNumberOfBytesRead-2] != 0x0D &&  szKeyData[dwNumberOfBytesRead-1] != 0x0A)
-		return false;
-
-	KeyItem keyItem;
-	keyItem.keyType.append((char*)(&szKeyData[1]), pos-2);
-	keyItem.keyCode.append((char*)(&szKeyData[pos+1]), dwNumberOfBytesRead-pos-4);
-
-	return true;
-#endif
 }
 
 
@@ -551,4 +497,40 @@ TESTWIZARD_API LPCTSTR GetSignalsName()
 	return signals.c_str();
 }
 
+//////////////////////////////////////////////////////////////////////////
+TESTWIZARD_API BOOL OpenUsbSwitch(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE Parity, BYTE StopBits)
+{
+	// 关闭打开的;
+	if ( g_usbSwitch.IsOpen() )
+		g_usbSwitch.CloseSerialPort();
+
+	g_usbSwitch.OpenSerialPort(nPort, dwBaudrate, ByteSize, Parity, StopBits, 0, 1000);
+
+	return g_usbSwitch.IsOpen();
+}
+
+TESTWIZARD_API bool SendSwitch(int nIndex /*=0*/)
+{
+	if ( !g_usbSwitch.IsOpen() )
+		return false;
+
+	// 封装发送包;
+	byte szSendData[MAX_PATH] = {0};
+	_stprintf_s((TCHAR*)szSendData, MAX_PATH, _T("*SET PORT %c\r"), nIndex == 0 ? 'A' : 'B');
+
+	DWORD dwNumberOfBytesWritten = g_usbSwitch.WriteComm(szSendData, _tcslen((TCHAR*)szSendData));
+	if ( dwNumberOfBytesWritten != _tcslen((TCHAR*)szSendData) )
+		return false;
+
+	DWORD dwNumberOfBytesRead = g_usbSwitch.ReadComm(szSendData, MAX_PATH);
+	return dwNumberOfBytesRead ? true : false;
+}
+
+// 关闭串口;
+TESTWIZARD_API void CloseUsbSwitch()
+{
+	if ( g_usbSwitch.IsOpen() )
+		g_usbSwitch.CloseSerialPort();
+}
+
 #endif

+ 6 - 0
TestWizard/TestWizard/TestWizard.h

@@ -34,4 +34,10 @@ extern "C" TESTWIZARD_API bool SendKey(LPCTSTR lpKeyName);
 // 读取学习按键;
 extern "C" TESTWIZARD_API bool ReadKey();
 extern "C" TESTWIZARD_API LPCTSTR GetSignalsName();
+//发送测试精灵指令,没有格式限制
+extern "C" TESTWIZARD_API bool  sendCmd(LPCTSTR cmdStr);
+// 打开usb切换器设备;
+extern "C" TESTWIZARD_API BOOL OpenUsbSwitch(int nPort, DWORD dwBaudrate, BYTE ByteSize, BYTE Parity, BYTE StopBits);
+extern "C" TESTWIZARD_API bool SendSwitch(int nIndex = 0);
+extern "C" TESTWIZARD_API void CloseUsbSwitch();
 #endif