|
@@ -143,11 +143,13 @@ CTestWizardToolDlg::CTestWizardToolDlg(CWnd* pParent /*=NULL*/)
|
|
|
void CTestWizardToolDlg::DoDataExchange(CDataExchange* pDX)
|
|
|
{
|
|
|
CDialog::DoDataExchange(pDX);
|
|
|
- DDX_Control(pDX, COMBO_COM, m_cbCOM);
|
|
|
+ DDX_Control(pDX, COMBO_COM, m_cbCOMTW);
|
|
|
DDX_Control(pDX, COMBO_SINGALS, m_cbSignals);
|
|
|
- DDX_Control(pDX, BTN_OPEN_COM, m_btnOpen);
|
|
|
+ DDX_Control(pDX, BTN_OPEN_COM, m_btnOpenTW);
|
|
|
DDX_Control(pDX, BTN_RELOAD_SIGNAL, m_btnReload);
|
|
|
DDX_Control(pDX, IDC_STATIC_GROUP, m_stGroup);
|
|
|
+ DDX_Control(pDX, BTN_OPEN_COM2, m_btnOpenUSB);
|
|
|
+ DDX_Control(pDX, COMBO_COM2, m_cbUSBPort);
|
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CTestWizardToolDlg, CDialog)
|
|
@@ -165,6 +167,8 @@ BEGIN_MESSAGE_MAP(CTestWizardToolDlg, CDialog)
|
|
|
ON_CBN_SELCHANGE(COMBO_SINGALS, &CTestWizardToolDlg::OnCbnSelchangeSingals)
|
|
|
ON_BN_CLICKED(BTN_RELOAD_SIGNAL, &CTestWizardToolDlg::OnBnClickedReloadSignal)
|
|
|
ON_WM_DESTROY()
|
|
|
+ ON_WM_TIMER()
|
|
|
+ ON_BN_CLICKED(BTN_OPEN_COM2, &CTestWizardToolDlg::OnBnClickedOpenCom2)
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
@@ -204,13 +208,12 @@ BOOL CTestWizardToolDlg::OnInitDialog()
|
|
|
m_stGroup.GetWindowRect(m_rcGroup);
|
|
|
ScreenToClient(m_rcGroup);
|
|
|
|
|
|
- GetSysSerialPort(m_vtPorts);
|
|
|
- InitSerialCombobox();
|
|
|
- m_cbCOM.SelectString(0, Global::g_Config.twPort.c_str());
|
|
|
LoadSignals();
|
|
|
m_cbSignals.SelectString(0, Global::g_Config.twUseSignal.c_str());
|
|
|
LoadKeyInfo(m_vtKeyInfo, Global::g_Config.twSignaldir + _T("\\") + Global::g_Config.twUseSignal + _T(".xml"));
|
|
|
|
|
|
+ SetTimer(0, 100, NULL);
|
|
|
+
|
|
|
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
|
|
|
}
|
|
|
|
|
@@ -271,22 +274,22 @@ BOOL CTestWizardToolDlg::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
|
if ( pbdp && _tcsstr(pbdp->dbcp_name, _T("COM")) )
|
|
|
{
|
|
|
// 查找是否有添加过该项;
|
|
|
- int nIndex = m_cbCOM.FindString(0, pbdp->dbcp_name);
|
|
|
+ int nIndex = m_cbCOMTW.FindString(0, pbdp->dbcp_name);
|
|
|
// 删除和新增前,先获取当前选中的项;
|
|
|
CString strCurCOM = _T("");
|
|
|
- int nCurIndex = m_cbCOM.GetCurSel();
|
|
|
+ int nCurIndex = m_cbCOMTW.GetCurSel();
|
|
|
if ( nCurIndex != CB_ERR )
|
|
|
- m_cbCOM.GetLBText(nCurIndex, strCurCOM);
|
|
|
+ m_cbCOMTW.GetLBText(nCurIndex, strCurCOM);
|
|
|
|
|
|
if ( nEventType == DBT_DEVICEREMOVECOMPLETE )
|
|
|
{// 串口拨掉;
|
|
|
TRACE(_T("串口拨掉\n"));
|
|
|
if ( nIndex != CB_ERR )
|
|
|
{
|
|
|
- m_cbCOM.DeleteString(nIndex);
|
|
|
+ m_cbCOMTW.DeleteString(nIndex);
|
|
|
// 删除后, 由于索引变化了,要重新设置选中项;
|
|
|
if ( nCurIndex != CB_ERR )
|
|
|
- m_cbCOM.SelectString(0, strCurCOM);
|
|
|
+ m_cbCOMTW.SelectString(0, strCurCOM);
|
|
|
}
|
|
|
}
|
|
|
else if ( nEventType == DBT_DEVICEARRIVAL )
|
|
@@ -294,10 +297,15 @@ BOOL CTestWizardToolDlg::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
|
TRACE(_T("串口插入\n"));
|
|
|
if ( nIndex == CB_ERR )
|
|
|
{
|
|
|
- m_cbCOM.AddString(pbdp->dbcp_name);
|
|
|
+ m_cbCOMTW.AddString(pbdp->dbcp_name);
|
|
|
// 新增后,由于索引变化了,要重新设置选中项;
|
|
|
if ( nCurIndex != CB_ERR )
|
|
|
- m_cbCOM.SelectString(0, strCurCOM);
|
|
|
+ m_cbCOMTW.SelectString(0, strCurCOM);
|
|
|
+ else
|
|
|
+ {
|
|
|
+ IsTestWizardPort(pbdp->dbcp_name);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -309,14 +317,10 @@ BOOL CTestWizardToolDlg::OnDeviceChange(UINT nEventType, DWORD_PTR dwData)
|
|
|
|
|
|
void CTestWizardToolDlg::InitSerialCombobox()
|
|
|
{
|
|
|
- m_cbCOM.ResetContent();
|
|
|
+ m_cbCOMTW.ResetContent();
|
|
|
for (std::vector<std::string>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
{
|
|
|
- m_cbCOM.AddString(it->c_str());
|
|
|
- if ( !m_bFindTestWizardPort )
|
|
|
- {
|
|
|
- m_bFindTestWizardPort = IsTestWizardPort(it->c_str());
|
|
|
- }
|
|
|
+ m_cbCOMTW.AddString(it->c_str());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -752,17 +756,17 @@ void CTestWizardToolDlg::OnSignalBtnClick(UINT uId) //
|
|
|
pWnd->GetWindowText(text);
|
|
|
KeyInfo *pKey = m_map_key.find(id)->second;
|
|
|
|
|
|
- if ( m_Serial.IsOpen() ){
|
|
|
- m_Serial.SetTimeouts();
|
|
|
+ if ( m_SerialTW.IsOpen() ){
|
|
|
+ m_SerialTW.SetTimeouts();
|
|
|
// 封装发送包;
|
|
|
byte szSendData[MAX_PATH] = {0};
|
|
|
_stprintf_s((TCHAR*)szSendData, MAX_PATH, _T("*INPUT %s %s\r"), pKey->strType.c_str(), pKey->strValue.c_str());
|
|
|
|
|
|
// 发送单信号;
|
|
|
- if ( m_Serial.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
|
|
|
+ if ( m_SerialTW.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
|
|
|
{
|
|
|
memset(szSendData, 0, MAX_PATH);
|
|
|
- m_Serial.ReadSync(szSendData, MAX_PATH);
|
|
|
+ m_SerialTW.ReadSync(szSendData, MAX_PATH);
|
|
|
TRACE("发送单信号成功\n");
|
|
|
}
|
|
|
else
|
|
@@ -784,26 +788,26 @@ void CTestWizardToolDlg::OnBnClickedOpenCom() //
|
|
|
GetDlgItemText(BTN_OPEN_COM, strText);
|
|
|
if ( strText == _T("Open") )
|
|
|
{
|
|
|
- int nCurSel = m_cbCOM.GetCurSel();
|
|
|
+ int nCurSel = m_cbCOMTW.GetCurSel();
|
|
|
if ( nCurSel != CB_ERR )
|
|
|
{
|
|
|
- m_Serial.SetIOMode();
|
|
|
- m_cbCOM.GetLBText(nCurSel,strText);
|
|
|
- if ( m_Serial.Open(atol(strText.Mid(3).GetString()), 115200) )
|
|
|
+ m_SerialTW.SetIOMode();
|
|
|
+ m_cbCOMTW.GetLBText(nCurSel,strText);
|
|
|
+ if ( m_SerialTW.Open(atol(strText.Mid(3).GetString()), 115200) )
|
|
|
{
|
|
|
SetDlgItemText(BTN_OPEN_COM, _T("Close"));
|
|
|
- m_cbCOM.EnableWindow(FALSE);
|
|
|
- m_Serial.SetBufferSize(1024,1024);
|
|
|
+ m_cbCOMTW.EnableWindow(FALSE);
|
|
|
+ m_SerialTW.SetBufferSize(1024,1024);
|
|
|
WritePrivateProfileString("TestWizard", "Com", strText.GetString(), Global::g_szConfig);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- m_cbCOM.EnableWindow();
|
|
|
+ m_cbCOMTW.EnableWindow();
|
|
|
SetDlgItemText(BTN_OPEN_COM, _T("Open"));
|
|
|
- if ( m_Serial.IsOpen() )
|
|
|
- m_Serial.Close();
|
|
|
+ if ( m_SerialTW.IsOpen() )
|
|
|
+ m_SerialTW.Close();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -851,19 +855,19 @@ void CTestWizardToolDlg::OnOK()
|
|
|
void CTestWizardToolDlg::InitBtnStyle()
|
|
|
{
|
|
|
// 设置透明false以显示背景色
|
|
|
- m_btnOpen.m_bTransparent = FALSE;
|
|
|
+ m_btnOpenTW.m_bTransparent = FALSE;
|
|
|
//m_btnOpen.m_bDontUseWinXPTheme = TRUE;
|
|
|
// 消除单击时黑色内圈;
|
|
|
- m_btnOpen.m_bDrawFocus = FALSE;
|
|
|
+ m_btnOpenTW.m_bDrawFocus = FALSE;
|
|
|
// 设置按钮扁平样式;
|
|
|
//m_btnOpen.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
|
|
|
// 设置鼠标形状;
|
|
|
- m_btnOpen.SetMouseCursorHand();
|
|
|
+ m_btnOpenTW.SetMouseCursorHand();
|
|
|
// 设置背景色;
|
|
|
- m_btnOpen.SetFaceColor(RGB(250,80,80), TRUE);
|
|
|
+ m_btnOpenTW.SetFaceColor(RGB(250,80,80), TRUE);
|
|
|
// 显示窗口;
|
|
|
- m_btnOpen.ShowWindow(SW_SHOW);
|
|
|
- m_btnOpen.SetTooltip(_T("Open the serial port"));
|
|
|
+ m_btnOpenTW.ShowWindow(SW_SHOW);
|
|
|
+ m_btnOpenTW.SetTooltip(_T("Open the serial port"));
|
|
|
|
|
|
// 设置透明false以显示背景色
|
|
|
m_btnReload.m_bTransparent = FALSE;
|
|
@@ -879,6 +883,21 @@ void CTestWizardToolDlg::InitBtnStyle()
|
|
|
// 显示窗口;
|
|
|
m_btnReload.ShowWindow(SW_SHOW);
|
|
|
m_btnReload.SetTooltip(_T("Reload the signal file"));
|
|
|
+
|
|
|
+ // 设置透明false以显示背景色
|
|
|
+ m_btnOpenUSB.m_bTransparent = FALSE;
|
|
|
+ //m_btnOpen.m_bDontUseWinXPTheme = TRUE;
|
|
|
+ // 消除单击时黑色内圈;
|
|
|
+ m_btnOpenUSB.m_bDrawFocus = FALSE;
|
|
|
+ // 设置按钮扁平样式;
|
|
|
+ //m_btnOpen.m_nFlatStyle = CMFCButton::FlatStyle::BUTTONSTYLE_FLAT;
|
|
|
+ // 设置鼠标形状;
|
|
|
+ m_btnOpenUSB.SetMouseCursorHand();
|
|
|
+ // 设置背景色;
|
|
|
+ m_btnOpenUSB.SetFaceColor(RGB(230,100,80), TRUE);
|
|
|
+ // 显示窗口;
|
|
|
+ m_btnOpenUSB.ShowWindow(SW_SHOW);
|
|
|
+ m_btnOpenUSB.SetTooltip(_T("Open the usbmodel port"));
|
|
|
}
|
|
|
|
|
|
BOOL CTestWizardToolDlg::PreTranslateMessage(MSG* pMsg)
|
|
@@ -958,8 +977,11 @@ bool CTestWizardToolDlg::IsTestWizardPort(CString strCOMPort)
|
|
|
}
|
|
|
|
|
|
/*
|
|
|
- 发送:*about
|
|
|
+ 发送:
|
|
|
+ *about
|
|
|
返回:
|
|
|
+ *about
|
|
|
+
|
|
|
Product name: Test Wizard
|
|
|
Firmware version: v3.6.210811
|
|
|
SN: 30FF6B064243393036140457
|
|
@@ -968,27 +990,27 @@ bool CTestWizardToolDlg::IsTestWizardPort(CString strCOMPort)
|
|
|
Developer: sun shengpeng
|
|
|
Email: sunsp@tcl.com
|
|
|
*/
|
|
|
- m_Serial.SetIOMode();
|
|
|
- if ( m_Serial.Open(atol(strCOMPort.Mid(3).GetString()), 115200) )
|
|
|
+ m_SerialTW.SetIOMode();
|
|
|
+ if ( m_SerialTW.Open(atol(strCOMPort.Mid(3).GetString()), 115200) )
|
|
|
{
|
|
|
// 快速响应读写,不需要设置过长的超时;
|
|
|
- m_Serial.SetTimeouts(0,1,20,1,150);
|
|
|
+ m_SerialTW.SetTimeouts(0,1,20,1,150);
|
|
|
// 封装发送包;
|
|
|
byte szSendData[MAX_PATH] = _T("*about\r");
|
|
|
- if ( m_Serial.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
|
|
|
+ if ( m_SerialTW.WriteSync(szSendData, _tcslen((TCHAR*)szSendData)) )
|
|
|
{
|
|
|
memset(szSendData, 0, MAX_PATH);
|
|
|
- m_Serial.ReadSync(szSendData, MAX_PATH);
|
|
|
+ m_SerialTW.ReadSync(szSendData, MAX_PATH);
|
|
|
if ( _tcsstr((TCHAR*)szSendData, _T("Product name: Test Wizard\r")) )
|
|
|
{
|
|
|
// 设置当前串口为选中状态;
|
|
|
- m_cbCOM.SelectString(0, strCOMPort);
|
|
|
+ m_cbCOMTW.SelectString(0, strCOMPort);
|
|
|
Global::g_Config.twPort = strCOMPort;
|
|
|
WritePrivateProfileString("TestWizard", "Com", strCOMPort.GetString(), Global::g_szConfig);
|
|
|
// SetDlgItemText(BTN_OPEN_COM, _T("Close"));
|
|
|
// m_cbCOM.EnableWindow(FALSE);
|
|
|
// 关闭后,重新打开在设置超时值;
|
|
|
- m_Serial.Close();
|
|
|
+ m_SerialTW.Close();
|
|
|
return true;
|
|
|
}
|
|
|
TRACE("发送单信号成功\n");
|
|
@@ -998,8 +1020,39 @@ bool CTestWizardToolDlg::IsTestWizardPort(CString strCOMPort)
|
|
|
TRACE("发送单信号失败\n");
|
|
|
}
|
|
|
|
|
|
- m_Serial.Close();
|
|
|
+ m_SerialTW.Close();
|
|
|
}
|
|
|
|
|
|
return false;
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+void CTestWizardToolDlg::OnTimer(UINT_PTR nIDEvent)
|
|
|
+{
|
|
|
+ // TODO: 在此添加消息处理程序代码和/或调用默认值
|
|
|
+ if ( nIDEvent == 0 )
|
|
|
+ {
|
|
|
+ KillTimer(nIDEvent);
|
|
|
+ GetSysSerialPort(m_vtPorts);
|
|
|
+ InitSerialCombobox();
|
|
|
+ if ( CB_ERR == m_cbCOMTW.SelectString(0, Global::g_Config.twPort.c_str()) )
|
|
|
+ {
|
|
|
+ for (std::vector<std::string>::iterator it = m_vtPorts.begin(); it != m_vtPorts.end(); it++)
|
|
|
+ {
|
|
|
+ if ( !m_bFindTestWizardPort )
|
|
|
+ {
|
|
|
+ m_bFindTestWizardPort = IsTestWizardPort(it->c_str());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( !m_bFindTestWizardPort )
|
|
|
+ MessageBox(_T("No Test Wizard found"), _T("Prompt"), MB_OK);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ CDialog::OnTimer(nIDEvent);
|
|
|
+}
|
|
|
+
|
|
|
+void CTestWizardToolDlg::OnBnClickedOpenCom2() // 打开USB模块串口;
|
|
|
+{
|
|
|
+ // TODO: 在此添加控件通知处理程序代码
|
|
|
+}
|