⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zrsmsdkexampledlg.cpp

📁 周立功4050模块的测试软件
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	    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 + -