📄 zrsmsdkexampledlg.cpp
字号:
m_listDev.DeleteAllItems();
m_cbCOM.GetLBText( m_cbCOM.GetCurSel(), m_searchInfo.sComName );
m_searchInfo.iStartAddr = m_spinAddr.GetPos();
m_cbBaudrate.GetLBText( m_cbBaudrate.GetCurSel(), s );
m_searchInfo.BaudRate = atoi( (LPCTSTR)s );
m_cbDatabits.GetLBText( m_cbDatabits.GetCurSel(), s );
m_searchInfo.DataBits = atoi( (LPCTSTR)s );
m_searchInfo.Parity = m_cbParity.GetCurSel();
m_searchInfo.StopBits = m_cbStopbits.GetCurSel();
m_edTimeOut.GetWindowText( s );
m_searchInfo.iTimeOut = atoi( (LPCTSTR)s );
UpdateData(TRUE);
m_searchInfo.iTransProtocol = m_iProtocol;
iStartAddr = m_searchInfo.iStartAddr;
SetTimer( TIMER_SEARCH, m_searchInfo.iTimeOut + 100, 0 );
}
else
{
KillTimer( TIMER_SEARCH );
TRACE( "Stop device searching! \n" );
}
((CWnd*)GetDlgItem( IDC_BTN_SEARCH ))->SetWindowText( (m_bSearch?"开始搜索":"停止搜索") );
m_bSearch = !m_bSearch;
m_listDev.EnableWindow( !m_bSearch );
}
void CZRSMSdkExampleDlg::SetCmdBtnEnable(BOOL bEnable)
{
GetDlgItem(IDC_BUTTON_DATA_GET)->EnableWindow(bEnable);
GetDlgItem(IDC_BUTTON_DATA_SET)->EnableWindow(bEnable);
GetDlgItem(IDC_BUTTON_ITEM_GET)->EnableWindow(bEnable);
GetDlgItem(IDC_BUTTON_ITEM_SET)->EnableWindow(bEnable);
}
void CZRSMSdkExampleDlg::OnClickListDev(NMHDR* pNMHDR, LRESULT* pResult)
{
if( m_hdl != 0 )
{
ZR_UnOperateDev( m_hdl );
m_hdl = 0;
}
POSITION pos = m_listDev.GetFirstSelectedItemPosition();
int index = m_listDev.GetNextSelectedItem( pos );
if( index > -1 )
{
// 从信息列表中获取出设备信息
CString s = m_listDev.GetItemText(index, 0);
CString s1 = m_listDev.GetItemText(index, 1); // 设备ID
s += "-" + s1;
map<CString, DEVINFO>::iterator itr = m_mapDevInfo.find(s);
if (itr != m_mapDevInfo.end() )
{
DEVINFO dev = itr->second;
// 启动设备
m_hdl = ZR_RSSetOperateDev( atoi( (LPCTSTR)s1 ), dev.nDevType, dev.nDevMode,
m_iProtocol, (char*)(LPCTSTR)m_searchInfo.sComName, m_searchInfo.BaudRate, m_searchInfo.DataBits,
m_searchInfo.Parity, m_searchInfo.StopBits, 0, 0, 0, 0, m_searchInfo.iTimeOut );
if( m_hdl == 0 )
{
AfxMessageBox( "设备启动失败!" );
return;
}
s.Format( "%04X", dev.nDevType );
m_edType.SetWindowText( (LPCTSTR)s );
s.Format( "%04X", dev.nDevMode );
m_edMdl.SetWindowText( (LPCTSTR)s );
s.Format( "%04X", dev.nFirmVer );
m_edVender.SetWindowText( (LPCTSTR)s );
s.Format( "%04X", dev.nHardVer );
m_edVerHW.SetWindowText( (LPCTSTR)s );
s.Format( "%04X", dev.nSoftVer );
m_edVerSW.SetWindowText( (LPCTSTR)s );
s.Format("%02X-%02X-%02X%02X", dev.pSn[0], dev.pSn[1], dev.pSn[2], dev.pSn[3]);
m_edSN.SetWindowText( (LPCTSTR)s );
}
SetCmdBtnEnable( TRUE );
}
else SetCmdBtnEnable( FALSE );
*pResult = 0;
}
void CZRSMSdkExampleDlg::OnTimer(UINT nIDEvent)
{
if( nIDEvent == TIMER_SEARCH)
{
HANDLE hdl = 0;
long r = 0;
if( iStartAddr < 247 )
{
int nFirmVer, nDevType, nDevMode, nHardVer, nSoftVer;
BYTE nID, pSn[4];
// 开始搜索设备,发送搜索命令
r = ZR_RSSearchByID( iStartAddr, m_searchInfo.iTransProtocol,
(char*)(LPCTSTR)m_searchInfo.sComName, m_searchInfo.BaudRate,
m_searchInfo.DataBits, m_searchInfo.Parity, m_searchInfo.StopBits,
0, 0, 0, 0, m_searchInfo.iTimeOut );
if( r == 0 ) // 命令发送成功
{
// 获取设备基本信息
r = ZR_RSGetSearch( &nID, &nFirmVer, &nDevType, &nDevMode, &nHardVer, &nSoftVer, pSn );
if( r == 0 ) // 获取设备基本信息成功
{
DEVINFO devInfo;
devInfo.nDevMode = nDevMode;
devInfo.nDevType = nDevType;
devInfo.nFirmVer = nFirmVer;
devInfo.nHardVer = nHardVer;
devInfo.nID = nHardVer;
devInfo.nSoftVer = nSoftVer;
for( int i = 0; i < 4; i ++)
devInfo.pSn[i] = pSn[i];
CString s;
s.Format( "%04X", nDevType );
int index = m_listDev.InsertItem( m_listDev.GetItemCount(), (LPCTSTR)s );
s.Format( "%d", nID );
m_listDev.SetItemText( index, 1, (LPCTSTR)s );
s.Format( "%04X", nDevMode );
m_listDev.SetItemText( index, 2, (LPCTSTR)s );
// 建立并保存设备与基本信息映射表
s.Format("%04x-%d", nDevType, iStartAddr);
m_mapDevInfo.insert( std::make_pair(s, devInfo) );
}
}
else
{
KillTimer( TIMER_SEARCH );
AfxMessageBox("无法搜索当前端口,请检查端口是否被占用!");
((CWnd*)GetDlgItem( IDC_BTN_SEARCH ))->SetWindowText( (m_bSearch?"开始搜索":"停止搜索") );
m_bSearch = !m_bSearch;
}
++ iStartAddr;
}
else
{
KillTimer( TIMER_SEARCH );
((CWnd*)GetDlgItem( IDC_BTN_SEARCH ))->SetWindowText( (m_bSearch?"开始搜索":"停止搜索") );
m_bSearch = !m_bSearch;
}
}
CDialog::OnTimer(nIDEvent);
}
void CZRSMSdkExampleDlg::OnButtonItemGet()
{
ASSERT( m_hdl );
long r = 0;
char buf[256];
r = ZR_ReadDevProperty( m_hdl );
if( r != 0 )
{
AfxMessageBox( "读设备属性失败!" );
return;
}
CString s;
m_edItemNameGet.GetWindowText( s );
r = ZR_GetDevProperty( m_hdl, (char*)(LPCTSTR)s, buf );
if( r != 0 )
{
AfxMessageBox( "获取设备属性失败!" );
return;
}
m_edItemGet.SetWindowText( buf );
}
void CZRSMSdkExampleDlg::OnButtonItemSet()
{
ASSERT( m_hdl );
long r = 0;
r = ZR_ResetDevProperty( m_hdl );
CString sName, sData;
m_edItemNameSet.GetWindowText( sName );
m_edItemSet.GetWindowText( sData );
// 修改、保存属性信息
r = ZR_ModifyDevProperty(m_hdl, (char*)(LPCTSTR)sName, (char*)(LPCTSTR)sData);
if( r != 0 )
{
AfxMessageBox( "保存属性信息失败!" );
return;
}
// 提交属性信息,使用默认密码:88888
r = ZR_SubmitDevProperty( m_hdl, "88888" );
if( r != 0 )
{
AfxMessageBox( "设置属性信息失败!" );
return;
}
else
AfxMessageBox( "设置属性信息成功!" );
}
void CZRSMSdkExampleDlg::OnButtonDataGet()
{
ASSERT( m_hdl );
long r = 0;
char buf[256];
r = ZR_ReadDevData( m_hdl );
if( r != 0 )
{
AfxMessageBox( "读采集数据失败!" );
return;
}
CString s;
m_edDataNameGet.GetWindowText( s );
r = ZR_GetDevData( m_hdl, (char*)(LPCTSTR)s, buf );
if( r != 0 )
{
AfxMessageBox( "获取采集数据失败!" );
return;
}
m_edDataGet.SetWindowText( buf );
}
void CZRSMSdkExampleDlg::OnButtonDataSet()
{
ASSERT( m_hdl );
long r = 0;
// 先读取设备数据
r = ZR_ReadDevData(m_hdl);
CString sName, sData;
m_edDataNameSet.GetWindowText( sName );
m_edDataSet.GetWindowText( sData );
// 修改、保存要发送数据
r = ZR_ModifyDevData(m_hdl, (char*)(LPCTSTR)sName, (char*)(LPCTSTR)sData);
if( r != 0 )
{
AfxMessageBox( "保存发送数据失败!" );
return;
}
// 发送数据
r = ZR_SubmitDevData( m_hdl );
if( r != 0 )
{
AfxMessageBox( "发送数据失败!" );
return;
}
else
AfxMessageBox( "发送数据成功!" );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -