From 4f6272ff92673c2f01e41ebbf9dd7520aeb498a8 Mon Sep 17 00:00:00 2001 From: TAO Cheng Date: Fri, 9 May 2014 11:05:52 +0800 Subject: [PATCH] =?UTF-8?q?so7=5Fconfig=E6=96=B0=E5=A2=9E=E8=84=9A?= =?UTF-8?q?=E8=B8=8F=E5=BC=80=E5=85=B3=E4=BD=BF=E8=83=BD=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp | 325 ++++++++++++------ .../Base/Interfac/Msi/Hsi/ART/ART_PCI8622.h | 35 +- .../Interfac/Msi/Hsi/MicroVu/Mv_Proto.cpp | 2 +- .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.cpp | 16 + .../Interfac/Msi/Hsi/SevenOcean/SO7_Proto.h | 1 + .../Tools/UsbUtility/Debug/UtilityDebug.Log | 3 + .../Tools/UsbUtility/Debug/Utility_Config.ini | 13 + .../Hsi/Tools/UsbUtility/Debug/so7_config.ini | 43 ++- .../Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc | 67 ++-- .../UsbUtility/UsbUtil/SetSo7MotionConfig.cpp | 16 +- .../UsbUtility/UsbUtil/So7_Art_PCI8622.cpp | 102 +++++- .../UsbUtility/UsbUtil/So7_Art_PCI8622.h | 2 + .../Hsi/Tools/UsbUtility/UsbUtil/resource.h | 11 +- .../Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo | Bin 115200 -> 121856 bytes 14 files changed, 468 insertions(+), 168 deletions(-) diff --git a/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp b/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp index c20d469..0e5644b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp @@ -13,10 +13,13 @@ CART_PCI8622::CART_PCI8622() m_AD_LSB_HALF=0.0; m_AD_LSB_RANGE=65536; m_InputRange=0; - m_StopedCapture=TRUE; - m_EnStartCapture=FALSE; + m_StopedSample=TRUE; + m_EnStartSample=FALSE; m_EnGetData=FALSE; - m_iCaptureMode=0; + m_iSampleMode=0; + m_iReadDataSize=100; + m_iFirstChannel=1; + m_iLastChannel=2; } CART_PCI8622::~CART_PCI8622() @@ -28,8 +31,11 @@ BOOL CART_PCI8622::Init() { BOOL rStatus(TRUE); #ifdef _RELEASE_FULL_VERSION - int DeviceLgcID(0); - m_hDevice = PCI8622_CreateDevice(DeviceLgcID); // 创建设备对象 + if(m_hDevice == INVALID_HANDLE_VALUE) + { + int DeviceLgcID(0); + m_hDevice = PCI8622_CreateDevice(DeviceLgcID); // 创建设备对象 + } if(m_hDevice == INVALID_HANDLE_VALUE) { rStatus=FALSE; @@ -42,9 +48,9 @@ BOOL CART_PCI8622::Exit() { BOOL rStatus(TRUE); #ifdef _RELEASE_FULL_VERSION - if (!m_StopedCapture) + if (!m_StopedSample) { - rStatus=StopCaptureData(); + rStatus=StopSampleData(); } rStatus=PCI8622_ReleaseDevice(m_hDevice); // 释放设备对象 m_hDevice=INVALID_HANDLE_VALUE; @@ -53,22 +59,25 @@ BOOL CART_PCI8622::Exit() } //======================================== -BOOL CART_PCI8622::SetCaptureMode(int _Mode) +BOOL CART_PCI8622::SetSamplePara(int _Mode,int _ReadDataSize) { BOOL rStatus(TRUE); + m_iSampleMode=_Mode; + m_iReadDataSize=_ReadDataSize; #ifdef _RELEASE_FULL_VERSION - m_iCaptureMode=_Mode; + memset(&ADBuffer, 0x00, sizeof(ADBuffer)); memset(&m_ADPara, 0x00, sizeof(m_ADPara)); // 将各项参数复位至确定值0(强烈建议) switch(_Mode) { - case E_ART_PCI8622_CAPTURE_DMA_SEQ: - case E_ART_PCI8622_CAPTURE_NPT_SEQ: + case E_ART_PCI8622_SAMPLE_DMA_SEQ: + case E_ART_PCI8622_SAMPLE_NPT_SEQ: + case E_ART_PCI8622_SAMPLE_HALF_SEQ: { // 预置硬件参数 m_ADPara.ADMode = PCI8622_ADMODE_SEQUENCE; // AD模式为连续模式 - m_ADPara.FirstChannel = 1; // 首通道 - m_ADPara.LastChannel = 2; // 末通道 - m_ADPara.Frequency = 10000; // 采样频率(Hz) + m_ADPara.FirstChannel = m_iFirstChannel; // 首通道 + m_ADPara.LastChannel = m_iLastChannel; // 末通道 + m_ADPara.Frequency = 25000; // 采样频率(Hz) m_ADPara.GroupInterval = 50; // 组间间隔(uS) m_ADPara.LoopsOfGroup = 1; // 组内各通道点数 m_ADPara.Gains = PCI8622_GAINS_1MULT; @@ -85,13 +94,14 @@ BOOL CART_PCI8622::SetCaptureMode(int _Mode) m_ADPara.TimeoutForNpt = 10; // 在非空方式下,设置超时时间为10秒钟(只在非空查询方式下有效) break; } - case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: - case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: + case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK: + case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK: + case E_ART_PCI8622_SAMPLE_HALF_TRIGCLK: { // 预置硬件参数 m_ADPara.ADMode = PCI8622_ADMODE_GROUP; // AD模式为连续模式 - m_ADPara.FirstChannel = 1; // 首通道 - m_ADPara.LastChannel = 2; // 末通道 + m_ADPara.FirstChannel = m_iFirstChannel; // 首通道 + m_ADPara.LastChannel = m_iLastChannel; // 末通道 m_ADPara.Frequency = 10000; // 采样频率(Hz) m_ADPara.GroupInterval = 50; // 组间间隔(uS) m_ADPara.LoopsOfGroup = 1; // 组内各通道点数 @@ -162,34 +172,50 @@ BOOL CART_PCI8622::SetCaptureMode(int _Mode) } switch(_Mode) { - case E_ART_PCI8622_CAPTURE_DMA: - case E_ART_PCI8622_CAPTURE_DMA_SEQ: - case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: + case E_ART_PCI8622_SAMPLE_DMA: + case E_ART_PCI8622_SAMPLE_DMA_SEQ: + case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK: { m_hDmaEvent = PCI8622_CreateSystemEvent(); - if (!PCI8622_InitDeviceDmaAD(m_hDevice, m_hDmaEvent, &ADBuffer[0][0], 4096, SEGMENT_COUNT, HALF_SIZE_WORDS, &m_ADPara)) // 初始化硬件 + //if (!PCI8622_InitDeviceDmaAD(m_hDevice, m_hDmaEvent, &ADBuffer[0][0], 4096, SEGMENT_COUNT, HALF_SIZE_WORDS, &m_ADPara)) // 初始化硬件 + if (!PCI8622_InitDeviceDmaAD(m_hDevice, m_hDmaEvent, &ADBuffer[0][0], m_iReadDataSize, SEGMENT_COUNT, HALF_SIZE_WORDS, &m_ADPara)) // 初始化硬件 { rStatus=FALSE; - StopCaptureData(); + StopSampleData(); } break; } - case E_ART_PCI8622_CAPTURE_NPT: - case E_ART_PCI8622_CAPTURE_NPT_SEQ: - case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: + case E_ART_PCI8622_SAMPLE_NPT: + case E_ART_PCI8622_SAMPLE_NPT_SEQ: + case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK: { if (!PCI8622_InitDeviceProAD(m_hDevice, &m_ADPara)) { rStatus=FALSE; - StopCaptureData(); + StopSampleData(); } break; } + case E_ART_PCI8622_SAMPLE_HALF: + case E_ART_PCI8622_SAMPLE_HALF_SEQ: + case E_ART_PCI8622_SAMPLE_HALF_TRIGCLK: + { + if (!PCI8622_InitDeviceProAD(m_hDevice, &m_ADPara)) + { + rStatus=FALSE; + StopSampleData(); + } + break; + } + default: + { + break; + } } if (rStatus) { - m_StopedCapture=FALSE; - m_EnStartCapture=TRUE; + m_StopedSample=FALSE; + m_EnStartSample=TRUE; } @@ -197,25 +223,81 @@ BOOL CART_PCI8622::SetCaptureMode(int _Mode) return rStatus; } //======================================== -BOOL CART_PCI8622::StartCaptureData() +BOOL CART_PCI8622::StartSampleData() { BOOL rStatus(TRUE); #ifdef _RELEASE_FULL_VERSION - rStatus=PCI8622_StartDeviceDmaAD(m_hDevice); // 启动设备 - m_StopedCapture=FALSE; + switch(m_iSampleMode) + { + case E_ART_PCI8622_SAMPLE_DMA: + case E_ART_PCI8622_SAMPLE_DMA_SEQ: + case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK: + { + rStatus=PCI8622_StartDeviceDmaAD(m_hDevice); // 启动设备 + break; + } + case E_ART_PCI8622_SAMPLE_NPT: + case E_ART_PCI8622_SAMPLE_NPT_SEQ: + case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK: + { + rStatus=PCI8622_StartDeviceProAD(m_hDevice); + break; + } + case E_ART_PCI8622_SAMPLE_HALF: + case E_ART_PCI8622_SAMPLE_HALF_SEQ: + case E_ART_PCI8622_SAMPLE_HALF_TRIGCLK: + { + rStatus=PCI8622_StartDeviceProAD(m_hDevice); + break; + } + default: + { + break; + } + } + m_StopedSample=FALSE; m_EnGetData=TRUE; #endif //_RELEASE_FULL_VERSION return rStatus; } //======================================== -BOOL CART_PCI8622::StopCaptureData() +BOOL CART_PCI8622::StopSampleData() { BOOL rStatus(TRUE); #ifdef _RELEASE_FULL_VERSION - rStatus=PCI8622_ReleaseDeviceDmaAD(m_hDevice); // 释放AD - rStatus=PCI8622_ReleaseSystemEvent(m_hDmaEvent); - m_EnStartCapture=FALSE; - m_StopedCapture=TRUE; + switch(m_iSampleMode) + { + case E_ART_PCI8622_SAMPLE_DMA: + case E_ART_PCI8622_SAMPLE_DMA_SEQ: + case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK: + { + rStatus=PCI8622_ReleaseDeviceDmaAD(m_hDevice); // 释放AD + rStatus=PCI8622_ReleaseSystemEvent(m_hDmaEvent); + break; + } + case E_ART_PCI8622_SAMPLE_NPT: + case E_ART_PCI8622_SAMPLE_NPT_SEQ: + case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK: + { + rStatus=PCI8622_ReleaseDeviceProAD(m_hDevice); // 释放AD + //rStatus=PCI8622_ReleaseDevice(m_hDevice); // 释放设备对象 + break; + } + case E_ART_PCI8622_SAMPLE_HALF: + case E_ART_PCI8622_SAMPLE_HALF_SEQ: + case E_ART_PCI8622_SAMPLE_HALF_TRIGCLK: + { + rStatus=PCI8622_ReleaseDeviceProAD(m_hDevice); // 释放AD + //rStatus=PCI8622_ReleaseDevice(m_hDevice); // 释放设备对象 + break; + } + default: + { + break; + } + } + m_EnStartSample=FALSE; + m_StopedSample=TRUE; m_EnGetData=FALSE; #endif //_RELEASE_FULL_VERSION return rStatus; @@ -233,69 +315,111 @@ BOOL CART_PCI8622::GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber) WORD ADData(0); double dVolt(0); int Index(0); - switch(m_iCaptureMode) + switch(m_iSampleMode) { - case E_ART_PCI8622_CAPTURE_DMA: - case E_ART_PCI8622_CAPTURE_DMA_SEQ: - case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: + case E_ART_PCI8622_SAMPLE_DMA: + case E_ART_PCI8622_SAMPLE_DMA_SEQ: + case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK: + { + PCI8622_STATUS_DMA DMAStatus; // DMA状态参数 + PCI8622_GetDevStatusDmaAD(m_hDevice, &DMAStatus); + bool bWait(true); + while(bWait) // 查询当前物理缓冲区数据是否已准备就绪 { - - bool bWait(true); - while(bWait) // 查询当前物理缓冲区数据是否已准备就绪 - { - if(WaitForSingleObject (m_hDmaEvent, 100)==WAIT_OBJECT_0) - bWait=false; // 等待DMA事件 - } - PCI8622_STATUS_DMA DMAStatus; // DMA状态参数 - if(!PCI8622_GetDevStatusDmaAD(m_hDevice, &DMAStatus)) - { - rStatus=FALSE; - StopCaptureData(); - } - if(DMAStatus.bBufferOverflow) - { - rStatus=FALSE; - } - - for(m_SegmentID=0; m_SegmentID(((m_AD_LSB_MAX/m_AD_LSB_RANGE) * ADData - m_AD_LSB_HALF)); - _Data[nADChannel][_DataNumber[nADChannel]]=dVolt; - _DataNumber[nADChannel]+=1; - nADChannel++; - if(nADChannel > m_ADPara.LastChannel) - { - nADChannel = m_ADPara.FirstChannel; - } - } - } - if(!PCI8622_SetDevStatusDmaAD(m_hDevice, m_SegmentID)) - { - rStatus=FALSE; - StopCaptureData(); - } - } - - break; + if(WaitForSingleObject (m_hDmaEvent, 100)==WAIT_OBJECT_0) + bWait=false; // 等待DMA事件 } - case E_ART_PCI8622_CAPTURE_NPT: - case E_ART_PCI8622_CAPTURE_NPT_SEQ: - case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: + if(!PCI8622_GetDevStatusDmaAD(m_hDevice, &DMAStatus)) + { + rStatus=FALSE; + StopSampleData(); + } + if(DMAStatus.bBufferOverflow) + { + rStatus=FALSE; + } + + for(m_SegmentID=0; m_SegmentID(((m_AD_LSB_MAX/m_AD_LSB_RANGE) * ADData - m_AD_LSB_HALF)); + _Data[nADChannel][_DataNumber[nADChannel]]=dVolt; + _DataNumber[nADChannel]+=1; + nADChannel++; + if(nADChannel > m_ADPara.LastChannel) + { + nADChannel = m_ADPara.FirstChannel; + } + } + } + if(!PCI8622_SetDevStatusDmaAD(m_hDevice, m_SegmentID)) + { + rStatus=FALSE; + StopSampleData(); + } + } + + break; + } + case E_ART_PCI8622_SAMPLE_NPT: + case E_ART_PCI8622_SAMPLE_NPT_SEQ: + case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK: + { + m_SegmentID=0; + LONG nReadSizeWords = m_iReadDataSize; + LONG nRetSizeWords(0); + PCI8622_ReadDeviceProAD_Npt(m_hDevice, ADBuffer[m_SegmentID], nReadSizeWords, &nRetSizeWords); + nADChannel = m_ADPara.FirstChannel; + TRACE1("[PCI8622_ReadDeviceProAD_Npt] Retsize:%d.\r\n",nRetSizeWords); + for(Index=0; Index(((m_AD_LSB_MAX/m_AD_LSB_RANGE) * ADData - m_AD_LSB_HALF)); + _Data[nADChannel][_DataNumber[nADChannel]]=dVolt; + _DataNumber[nADChannel]+=1; + nADChannel++; + if(nADChannel > m_ADPara.LastChannel) + { + nADChannel = m_ADPara.FirstChannel; + } + } + break; + } + case E_ART_PCI8622_SAMPLE_HALF: + case E_ART_PCI8622_SAMPLE_HALF_SEQ: + case E_ART_PCI8622_SAMPLE_HALF_TRIGCLK: + { + PCI8622_STATUS_AD ADStatus; + LONG nReadSizeWords = 4096; + LONG nRetSizeWords(0); + m_SegmentID=0; + if(!PCI8622_GetDevStatusProAD(m_hDevice, &ADStatus)) + { + rStatus=FALSE; + StopSampleData(); + } + if(ADStatus.bHalf) + { + break; // 若板载FIFO存储器数据量达到半满以上,则退出状态查询,开始读取半满数据 + } + if(!PCI8622_ReadDeviceProAD_Half(m_hDevice, ADBuffer[m_SegmentID], nReadSizeWords, &nRetSizeWords)) + { + rStatus=FALSE; + StopSampleData(); + } + else { - m_SegmentID=0; - LONG nReadSizeWords = 4096; - LONG nRetSizeWords(0); - PCI8622_ReadDeviceProAD_Npt(m_hDevice, ADBuffer[0], nReadSizeWords, &nRetSizeWords); nADChannel = m_ADPara.FirstChannel; - TRACE1("[PCI8622_ReadDeviceProAD_Npt] Retsize:%d.\r\n",nRetSizeWords); - for(Index=0; Indexg_machine.s_machine_config.motion.m_TouchProbeEnable); m_ConfigList.SetItemText(iRow++,iCol,cStr); + cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_FootSwitchEnable); + m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable); m_ConfigList.SetItemText(iRow++,iCol,cStr); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable); @@ -355,6 +363,10 @@ void CSetSo7MotionConfig::SaveDataValue() iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); cTemp=T2A(cStr); + m_pSO7_Proto->g_machine.s_machine_config.motion.m_FootSwitchEnable=atoi(cTemp); + iRow++; + cStr=m_ConfigList.GetItemText(iRow,iCol); + cTemp=T2A(cStr); m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable=atoi(cTemp); iRow++; cStr=m_ConfigList.GetItemText(iRow,iCol); diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.cpp b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.cpp index 991b04c..6ee0799 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.cpp @@ -18,6 +18,8 @@ IMPLEMENT_DYNAMIC(CSo7_Art_PCI8622, CDialog) : CDialog(CSo7_Art_PCI8622::IDD, pParent) { m_MsgCnts=0; + m_iReadTimes=0; + m_iReadTimesCnts=0; } CSo7_Art_PCI8622::~CSo7_Art_PCI8622() @@ -68,7 +70,9 @@ BOOL CSo7_Art_PCI8622::OnInitDialog() pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } - + GetDlgItem(IDC_EDIT_ART_PCI8622_GET_DATA_NUMBER)->SetWindowTextW(_T("4096")); + GetDlgItem(IDC_EDIT_ART_PCI8622_READ_TIMES)->SetWindowTextW(_T("1")); + ((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_DMATRIG))->SetCheck(TRUE); m_pART_PCI8622->Init(); return TRUE; // return TRUE unless you set the focus to a control @@ -76,14 +80,61 @@ BOOL CSo7_Art_PCI8622::OnInitDialog() void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622SetMode() { - m_pART_PCI8622->SetCaptureMode(E_ART_PCI8622_CAPTURE_NPT_TRIGCLK); + USES_CONVERSION; + CString csDataNumber(""); + GetDlgItem(IDC_EDIT_ART_PCI8622_GET_DATA_NUMBER)->GetWindowText(csDataNumber); + const char* cDataNumber=T2A(csDataNumber); + int iDataNumber = atoi(cDataNumber); + int iMode(0); + if (((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_DMASEQ))->GetCheck()) + { + iMode=E_ART_PCI8622_SAMPLE_DMA_SEQ; + } + else if (((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_DMATRIG))->GetCheck()) + { + iMode=E_ART_PCI8622_SAMPLE_DMA_TRIGCLK; + } + else if (((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_NPTSEQ))->GetCheck()) + { + iMode=E_ART_PCI8622_SAMPLE_NPT_SEQ; + } + else if (((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_NPTTRIG))->GetCheck()) + { + iMode=E_ART_PCI8622_SAMPLE_NPT_TRIGCLK; + } + else if (((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_HALFSEQ))->GetCheck()) + { + iMode=E_ART_PCI8622_SAMPLE_HALF_SEQ; + } + else if (((CButton *)GetDlgItem(IDC_RADIO_ART_PCI8622_MODE_HALFTRIG))->GetCheck()) + { + iMode=E_ART_PCI8622_SAMPLE_HALF_TRIGCLK; + } + BOOL BStatus=m_pART_PCI8622->SetSamplePara(iMode,iDataNumber); + if (!BStatus) + { + m_csMsg=_T("Failed to setup."); + OutputWithScroll(m_csMsg,m_edMSG); + m_pART_PCI8622->Exit(); + m_pART_PCI8622->Init(); + BStatus=m_pART_PCI8622->SetSamplePara(iMode,iDataNumber); + if (!BStatus) + { + m_csMsg=_T("Failed to setup."); + OutputWithScroll(m_csMsg,m_edMSG); + } + else + { + m_csMsg=_T("Setup successful."); + OutputWithScroll(m_csMsg,m_edMSG); + } + } } void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622ReadData() { - SetTimer(1,200,NULL); - //GetData(TRUE); + GetData(TRUE); } @@ -103,15 +154,38 @@ void CSo7_Art_PCI8622::OnBnClickedCancel() void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Start() { - m_pART_PCI8622->StartCaptureData(); - + GetDlgItem(IDC_BUTTON_ART_PCI8622_START)->EnableWindow(FALSE); + USES_CONVERSION; + CString csReadTimes(""); + GetDlgItem(IDC_EDIT_ART_PCI8622_READ_TIMES)->GetWindowText(csReadTimes); + const char* cReadTimes=T2A(csReadTimes); + m_iReadTimes = atoi(cReadTimes); + + m_pART_PCI8622->Init(); + BOOL BStatus=m_pART_PCI8622->StartSampleData(); + if (!BStatus) + { + m_csMsg=_T("Failed to start."); + OutputWithScroll(m_csMsg,m_edMSG); + } + m_iReadTimesCnts=0; + if (m_iReadTimes>0) + { + SetTimer(1,200,NULL); + } } void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Stop() { KillTimer(1); - m_pART_PCI8622->StopCaptureData(); + BOOL BStatus=m_pART_PCI8622->StopSampleData(); + if (!BStatus) + { + m_csMsg=_T("Failed to stop."); + OutputWithScroll(m_csMsg,m_edMSG); + } + GetDlgItem(IDC_BUTTON_ART_PCI8622_START)->EnableWindow(TRUE); } //=================================================== void CSo7_Art_PCI8622::GetData(BOOL _BShow) @@ -155,19 +229,21 @@ void CSo7_Art_PCI8622::OnTimer(UINT_PTR nIDEvent) { case 1: { - bool bExit(false); - if (bExit) + m_iReadTimesCnts++; + if (m_iReadTimesCnts>m_iReadTimes) { KillTimer(1); + m_pART_PCI8622->StopSampleData(); + GetDlgItem(IDC_BUTTON_ART_PCI8622_START)->EnableWindow(TRUE); + } + else + { + GetData(); } - GetData(); break; } - } - CDialog::OnTimer(nIDEvent); - } //===================================================================================== diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.h index a296756..a031367 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/So7_Art_PCI8622.h @@ -23,6 +23,8 @@ protected: CString m_csMsg; CEdit m_edMSG; int m_MsgCnts; + int m_iReadTimes; + int m_iReadTimesCnts; void GetData(BOOL _BShow=FALSE); void OutputWithScroll(const CString &strNewText,CEdit &edtOutput); public: diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h index 995ab1b..05918e4 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -597,6 +597,7 @@ #define IDC_RADIO_MOVE_TO_ABSOLUTE 1489 #define IDC_RADIO6 1490 #define IDC_RADIO_MOVE_TO_RELATIVE 1490 +#define IDC_RADIO_ART_PCI8622_MODE_HALFTRIG 1490 #define IDC_BUTTON_STATUS_MOVING_X 1493 #define IDC_BUTTON_STATUS_HOME_X 1494 #define IDC_BUTTON_STATUS_MOVING_Y 1495 @@ -899,6 +900,7 @@ #define IDC_RADIO2 1805 #define IDC_RADIO_READ_OUTPUT_PORT 1805 #define IDC_RADIO_SO7_MOVE_SPEED_GEAR2 1805 +#define IDC_RADIO_ART_PCI8622_MODE_NPTSEQ 1805 #define IDC_RADIO_MACHINE_TESASTARE 1806 #define IDC_RADIO_READ_OUTPUT_PORT2 1806 #define IDC_EDIT_MOVETO_DEG 1807 @@ -973,8 +975,13 @@ #define IDC_EDIT_ART_PCI8622_LOG 1846 #define IDC_EDIT_R1_CURRENT_POSITION 1847 #define IDC_BUTTON_ART_PCI8622_CLEAR_LOG 1847 -#define IDC_BUTTON_ART_PCI8622_START2 1848 #define IDC_BUTTON_ART_PCI8622_SET_MODE 1848 +#define IDC_RADIO_ART_PCI8622_MODE_DMASEQ 1849 +#define IDC_RADIO_ART_PCI8622_MODE_HALFSEQ 1850 +#define IDC_RADIO_ART_PCI8622_MODE_DMATRIG 1851 +#define IDC_RADIO_ART_PCI8622_MODE_NPTTRIG 1852 +#define IDC_EDIT_ART_PCI8622_READ_TIMES 1853 +#define IDC_EDIT_ART_PCI8622_GET_DATA_NUMBER 1854 #define IDC_BUTTON_DIY_EXIT_BUTTON 32740 #define ID_EDIT_SO7_CONFIG_MOTION 32741 @@ -984,7 +991,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 191 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1848 +#define _APS_NEXT_CONTROL_VALUE 1854 #define _APS_NEXT_SYMED_VALUE 104 #endif #endif diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo index 6422e954e6b9de57d2e173890ebe74e05276f3a3..6ff4169109e0da3ff58912cb66666e427c12c35d 100644 GIT binary patch delta 5240 zcmcIodsvfK(tjrjAzX?95fK3q5pM(&2m}-`gn$YnD9Wm3RRmO!n;5BF6tGI`6=a0d zx@}jfTHPuFuNrH;pxAn8>nc@iZN1c0+qFJjw-4J|+se)f36Jd`-}ayH)D)_O-F>2>#IpWQFq^M|H^d4?!5}Ob7SbbL)D=Xy6`xiHg@HQ zq`nbbXDM;aurY9#xZSQfrnDkma*-*ws4%XmaAEEuJQWxOA6Yc-%-6$tD>VR{D@M71 z08WB`PVI%9{4M&v*+>1M*+&S5z8)hYo1nxGFXwE+H~D zEL3gOg{(BZjhDm6;rGLrU|#xdF(c3ws&;{KoSJ?Wk($T^O{6YNl@OuU!{ZIH#<-Q0X~raDPC-#{Y1WG3lA^rI_;DHc54?AOXVZgqcz@$sV|;ST z{kruJnqGOZfCTw_>i*!%yo&@umOrCB98Ifbd2g@rl!xT9hWY(%9#3KNrt$fu-CoESeH z+agr>LQ;k-IWuc9D(3~mCYy#67v&b_1m_m!V!`TB&};rV#V)MiE$|tToSRirl)gM8 zDW@!_Fe_(XYDtl)2*x+A?0M5Y)!wb@$%9jycC{|l_P!dyAkKxgG~}U9#{k{ zQzt3-h4!-DCwV`jun?cB6J`Bv7Ya?9HHwcF#8N>`+A+L3`YC=~5scGE9S~Ory$sko zdN>Xbd5USHu0S*SUp%^uABwf1x5Z20E)sD<+88NLNNW-MhaCfnvCpHmf9MYMPTcnw zm9y`91c8nB?l?}gKe5LD<8tEd3=a>Ltq;`^1Rmv#zqzXxwU+19P7uu_j!b2O$^KqZMf5N{`%<@fD`Kt; z|B~c@p8C}o6}KpBQvl%LWwEUA7kQ#58xCy{3w9R1u6a21UZP%*2!@7?Nw|H! zzG*k z6XUXux?sjc2OORGy7=qTDw)$KN46()W~J!`5b$yN7mm?kjcvze*?K|F+-HJDlvfUw zIvw3xadPb0B0Z%wJh3)XTvByfg7ufvG0&%oMNI-P^s4=kBK4_;{dlKQIUA3;wX^?$b(D^1)=YmpnU!N+)ou9bjcJFd5?s8$(aS#X%V&*0%fY(H5aCm{~ z)4*G*q)WAT+fW#fNq>Ff0267Lfdor_L(}$Dg`7B^=XxdG+fy8b0mS;*MDoc*Im)nn z$7JmEjBamE2i&@IANp-_$E|k*Sw{`%vAD6Ash2{kbcRrb6Luxzqg@JA%M{LKUhS!` zoLiN$&UMu|*5L!5V#h9p1d6fEOV_aH3B|&n_FTZu9UAQ3`vCv8&5v$P9u~Zj0?}AE zcCdx3c{9Z>T9_{6h$r7&Cz0_`(VL#<5j6|TS`r<|aDu?2i**+*DSS-%B$Di0hUEun z=`xz)zyf&CcLFWla<(Q30$>Y{Z5)8g_ct;>ksdbQZBL;2poC3tfPL5@>QQ|@9E&%& zp&yfpQx2b#q2cmo@#$u{6z@Dr6cdlR48oAc7QTNk_9OvZ@X{%TT@y{c4Zo_b;HM+r zy}HL9PdA2R)FywNb$28#c)OW*Fk<#jFRcE@8OyV2h;0M%85DG6AeP^&x5HnKuM*vE zt&n0#?R4B%=a0b;Jc$%Ik1+Y(?dbc6;wvHjUpz+#VdtiR>Q zN@Wn`4rF}W#-gn>b9aMtmb{k7zH)<3Z>~^8jroKELZMZ0CDp8>KWLq}Mip_@Aeh@^ zkOHV~Rbc%qa^|9dorgW(j>I+9GyAL3;ONc2_Ro7WxOU2Uf&JSPQhYu9=-LX@-%{T4 z6NDehxoteF9}MpOcFg=-H}{9=f*bN}dtP7k4Y$Ebv)&7`!8K(-QDR=ceQeG3bBQp1 z`u>0|)B3Y>gCPQ^U-wY)_pyO4%tT?bFqLRtloS#j=snzbCvK5XfB z!EHyBc8#=@H!$_+wV2y=u1wn5WWD3`X=PER##U>^^HK(aKkmcnZ_ zD@uVeFQyZjW{JsZnDP;74C7$wHBkO>IHX$tZY{R(4-{NTarL zl8vHKP3$KTqTe|h1(K%e6iY9zAMK&+H|f#xd&47_-J4yd??2~f{#xqkVR|{};SxXU z;hMGKI@O;OZdmy*slLhnoeyXhOo3=BTU^P%7c{b1IR?jX1 zXOMPToM$C;Sk8lWB|&pvbW)NNdH}MeQ(zr7uPZhen?M1smsBnPDw|ew`BKWVL;ek6 zL4NF%Kj_RI%R%BydD9VR?F_Qma-J|lcnxDe&0=~P__E4mSi_1N=myj-2Gi~}AjkH` z7>F}ZSWgF~|KBf>pVR+Qa(g@~-|RPPa>fbe2JV2ixYE<}PW1+m$a{HAts4jT_?9MM z^TTld>~M#N)}ZUgs*6E}UF$~zW3jn#64gzPO?x1K`Hu!~){zcc=aXbeM*=UrsnH+2 zQQu#tC?SD~V6ma|8B+0jPL25o@DY4LrdUo&EBX}AlhR${c;Vxr|F4#r6tXgsSO#-? zmvnxxXb8Bpv5Jgu$?^WK&=X--^Y?$beo!(0v!47m`w`sWK5TS51VOjuLh%>b_&@$4 zJJE2~{@Lxkv%#m1d5&89=wbjLa2Qk10%s=*q}Fnb551u;%v-LhAg*_?QVrsMLw}beIipE(Cba6Vcl&onj6#?7o6K{zAy{I z!E)}+zgYZ8_7d;H1C{fqwD@Pl@zSeu&*DN_r_ZRx>JY3)1H&K;huZmA+_03CeF(jt z^EbZ#UK{i&-uK~tsC8IHa{51uAhb<809%S@P+;(9{zqV_WtpZUP;D1M&9~T3M<9{K zwE;!f_b9poKdL<26wa@b&IRIlF&|BZiNIh6gxgy`Ls-lVsKnN1yKD9};Yw!c zi(bKH`fsy-t;?2L9G22>;cp(Aa@Rc(UqlO~rBMMPey_|Me8m;`6Jh`wwyt7FXTWTU zRKSaC-e7lTf?rcT{1cYpj;?`b|IM%wn0zW^Fo>pXn_Lg!tS*YElr0d>OtNTA0i(bn5J8hcNrWQW7blkLVgwGhk-FPD>~)JB*M!{52eC9ry>Wr zhJ?6v9fV-t5VLY5^+rgX?f?ivi;G#Qrk=|nN9c1&RXD>VYR-c^w0M}6N!0Ti-?IjZvSwwR$Cj zGmIjM;RO5P97hwCj;pv#FVIr@Nit776LbZZ?HW$7&>WiH=Yk3k3E_$ykedTiTvRn z&|=K&VNNeCEy*n{&zELF-Ns}zYo@uxr=>3#oSi0c0|rVq=U(~p(h1G_KiY?UCQJA; z=9s3SCa_2-dfFW@b#fm1gx*1O@C*!|=z{8?Nx(@P zpf$`Qb9|fP$K#7r7Bhk{8HT>ToSZ~m)rGS6j)HZ21V+e-djXTot z|4k#r=1tO))<3-yTwffYt7ncZ;TT2AG}KR-fF|QqT(I~&?oL{X^OF+n7Opb}+QT{t zyJP3!-L=C}yZ9N`j+f@Y*ZjqLJsZao==jNKUAi9m>izigyg2Nc?vH1a<7Ek7O3t$D z^)HDPZWf+&!|19vg{u{J9O?>h;G<+`nUV?jQ=S7ji8^zx5TADx@WYfqxHhQCv)%wD z7FX(UTlx?@H*uT``)2)J)9vZf)`e@80S-e<|H^o+J#memjl`fOI^o$3AIf;oX;ARc z^WZIxi3WoMHswx0#fB)nm+#EoQo#omuUrt0S8tNRQH1yR;F)jTh1)e|2ZxI+pYN-J zUD$oe3-z1S*ttC#HQToeThAyQV4DDS&O_0>?g)<|Y#v<7y`qr^fmSCqR5~ZV$ zfoX|~w~xgWrKL|iA(2hS8GC0uiuk8JciDgPsw*BCFZs4IVq6~=Z6AL>cD%tzzw@w<>>K49-iM3 zfv&XynAsbIvIA2+2O9tp!a4Gy*Ft6x)Tj9TE#=kdyEMcw`(17?N0%`CJ;P@ zwjXQ`SXGmT`ga3R->ncTzWV^AGYOXaHGowYtA&R@${f(`io4+c@ILUe3t;6|Ib0M2 zln?@S{jd89blM|?!-P)4`-EczX+do6A1k*L*ZQNmwirAy=$ElNi8I))k?7wDUl6Vn zz9f83xIwr{xJ78(K6}Id|H?4DTg~&FVK?eG2lE9Zz)MVU2Uj=_R+(xdMKOEqJ7%Zx zowuG6kIP^tV6U$UAKne(ohpdt%}wwInl>qUgC{g$Z?zt-^L90yYjgtOrV*5cd%B{; zs02`x;s;C6dRHNq41qdFOlvLVClZ04w9{mSWcb(7wl3)eKXQjY7I-%tJt>mUxXTX6rHT1|-TNb+A z>^!nB?eCwKui9Ci*(Brt_JUMs=CBxE;~)FMSkf76P;Ol-Qz`I646bASf@UVQCgqnlyQpsd*1}ayU zQQ7h$l`^Z)|Hfgy#1As%OXl~F!vzPuoCd_Oz1pvSG<0BxS4{mF=)x{}h}bs(AcEh``?d|bJzl&BKkwI&!~LeqTEoOE>9a8RS+2!s@3Lbb0_O`TJ5uu zJSPtJHkv`!mJUW})PoFV52D0^nXnVkeR~*IwQS;}mw-FQ{$s3o$^b?Oe$@mE#hOg8 z0B`Pu(IO4^0(MtV!py6Mj={89E4H-d@|!ClpsflNP;a6w-sZ3zDzV{GGHyNN#ornQ zQc>{Mz|o{%cfR*ScxGw@k*QR>rBiw+rgTxxf>;JiVJ6~aF*ALqF%6BUP%@cDCd((< z!p4)9frVK2;h(gaYGqdHPqFg*p~ydL5jZ2T)3?Y8EPo53aeS}efPUFg^xCGJ}=J71HpmUU4TuPeNWD7 zH$WNI9*vNmH^mB?WhZ-LDSl=fOrca5#={EXDvmzjGmZq9FPlTwTSKPuPp-&UsVj%+smx= zCD5syPctu+W|#hR@V*lGL|!`B75hplUEvSC7StYe1)G$2DzSG&vKV_5P5_qIl!;{) zP=acfYvY6O8w+z5n|!aNEI0;&A zX^}#zfJXd&8*PDL)XH7O<_<7{xau-g%j-`-qB9heOyLtb%L%YLuA@zS#vh!3>5oJ7 aB-kHsr)uI~q~#yYf;9sN{L`mUrT8D=Qso2y