diff --git a/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp b/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp index b13f479..c20d469 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp +++ b/PcDmis/Base/Interfac/Msi/Hsi/ART/ART_PCI8622.cpp @@ -3,14 +3,20 @@ #include #include "ART_PCI8622.h" -#define MAX_AD_CHANNELS 4 -#define SEGMENT_COUNT 32 -#define HALF_SIZE_WORDS 4096 CART_PCI8622::CART_PCI8622() { - + m_hDevice=INVALID_HANDLE_VALUE; + m_hDmaEvent=NULL; + m_AD_LSB_MAX=0.0; + m_AD_LSB_HALF=0.0; + m_AD_LSB_RANGE=65536; + m_InputRange=0; + m_StopedCapture=TRUE; + m_EnStartCapture=FALSE; + m_EnGetData=FALSE; + m_iCaptureMode=0; } CART_PCI8622::~CART_PCI8622() @@ -20,139 +26,293 @@ CART_PCI8622::~CART_PCI8622() //======================================== BOOL CART_PCI8622::Init() { - return TRUE; + BOOL rStatus(TRUE); +#ifdef _RELEASE_FULL_VERSION + int DeviceLgcID(0); + m_hDevice = PCI8622_CreateDevice(DeviceLgcID); // 创建设备对象 + if(m_hDevice == INVALID_HANDLE_VALUE) + { + rStatus=FALSE; + } +#endif //_RELEASE_FULL_VERSION + return rStatus; } //======================================== BOOL CART_PCI8622::Exit() { - return TRUE; + BOOL rStatus(TRUE); +#ifdef _RELEASE_FULL_VERSION + if (!m_StopedCapture) + { + rStatus=StopCaptureData(); + } + rStatus=PCI8622_ReleaseDevice(m_hDevice); // 释放设备对象 + m_hDevice=INVALID_HANDLE_VALUE; +#endif //_RELEASE_FULL_VERSION + return rStatus; } + //======================================== -BOOL CART_PCI8622::GetData() +BOOL CART_PCI8622::SetCaptureMode(int _Mode) { BOOL rStatus(TRUE); #ifdef _RELEASE_FULL_VERSION - int InputRange(0); - int SelectInputRange(void); - WORD ADBuffer[SEGMENT_COUNT][HALF_SIZE_WORDS]; // 分配缓冲区(存储原始数据) - ULONG SegmentID = 0; + m_iCaptureMode=_Mode; + memset(&m_ADPara, 0x00, sizeof(m_ADPara)); // 将各项参数复位至确定值0(强烈建议) + switch(_Mode) + { + case E_ART_PCI8622_CAPTURE_DMA_SEQ: + case E_ART_PCI8622_CAPTURE_NPT_SEQ: + { + // 预置硬件参数 + m_ADPara.ADMode = PCI8622_ADMODE_SEQUENCE; // AD模式为连续模式 + m_ADPara.FirstChannel = 1; // 首通道 + m_ADPara.LastChannel = 2; // 末通道 + m_ADPara.Frequency = 10000; // 采样频率(Hz) + m_ADPara.GroupInterval = 50; // 组间间隔(uS) + m_ADPara.LoopsOfGroup = 1; // 组内各通道点数 + m_ADPara.Gains = PCI8622_GAINS_1MULT; + m_ADPara.InputRange = m_InputRange; // 模拟量输入量程范围 - HANDLE hDevice; - int DeviceLgcID; + m_ADPara.TriggerMode = PCI8622_TRIGMODE_SOFT; // 触发模式为软件触发 + m_ADPara.TriggerType = PCI8622_TRIGTYPE_EDGE; // 触发类型为边沿触发 + m_ADPara.TriggerDir = PCI8622_TRIGDIR_NEGATIVE; // 触发方向为负向 + m_ADPara.TrigWindow = 40; // 触发灵敏度 - PCI8622_PARA_AD ADPara; // 硬件参数 - PCI8622_STATUS_DMA DMAStatus; // DMA状态参数 + m_ADPara.ClockSource = PCI8622_CLOCKSRC_IN; // 时钟源选用板内时钟源 + m_ADPara.bClockOutput = FALSE; // 禁止时钟输出 + m_ADPara.GroundingMode = PCI8622_GNDMODE_SE; // 单端方式(SE:Single end) + m_ADPara.TimeoutForNpt = 10; // 在非空方式下,设置超时时间为10秒钟(只在非空查询方式下有效) + break; + } + case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: + case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: + { + // 预置硬件参数 + m_ADPara.ADMode = PCI8622_ADMODE_GROUP; // AD模式为连续模式 + m_ADPara.FirstChannel = 1; // 首通道 + m_ADPara.LastChannel = 2; // 末通道 + m_ADPara.Frequency = 10000; // 采样频率(Hz) + m_ADPara.GroupInterval = 50; // 组间间隔(uS) + m_ADPara.LoopsOfGroup = 1; // 组内各通道点数 + m_ADPara.Gains = PCI8622_GAINS_1MULT; + m_ADPara.InputRange = m_InputRange; // 模拟量输入量程范围 - int Index(0); + m_ADPara.TriggerMode = PCI8622_TRIGMODE_SOFT; // 触发模式为软件触发 + m_ADPara.TriggerType = PCI8622_TRIGTYPE_EDGE; // 触发类型为边沿触发 + m_ADPara.TriggerDir = PCI8622_TRIGDIR_NEGATIVE; // 触发方向为负向 + m_ADPara.TrigWindow = 40; // 触发灵敏度 + m_ADPara.ClockSource = PCI8622_CLOCKSRC_OUT; // 时钟源选用板内时钟源 + m_ADPara.bClockOutput = FALSE; // 禁止时钟输出 + m_ADPara.GroundingMode = PCI8622_GNDMODE_SE; // 单端方式(SE:Single end) + m_ADPara.TimeoutForNpt = 10; // 在非空方式下,设置超时时间为10秒钟(只在非空查询方式下有效) + break; + } + default: + { + break; + } + } + switch(m_InputRange) + { + case PCI8622_INPUT_N10000_P10000mV: // -10V - +10V + { + m_AD_LSB_MAX=20000.0; + m_AD_LSB_HALF=10000.0; + m_AD_LSB_RANGE=65536.0; + break; + } + case PCI8622_INPUT_N5000_P5000mV: // -5V - +5V + { + m_AD_LSB_MAX=10000.0; + m_AD_LSB_HALF=5000.0; + m_AD_LSB_RANGE=65536.0; + break; + } + case PCI8622_INPUT_N2500_P2500mV: // -2.5V - +2.5V. + { + m_AD_LSB_MAX=5000.0; + m_AD_LSB_HALF=2500.0; + m_AD_LSB_RANGE=65536.0; + break; + } + break; + case PCI8622_INPUT_0_P10000mV: // 0V - +10V + { + m_AD_LSB_MAX=10000.0; + m_AD_LSB_HALF=0.0; + m_AD_LSB_RANGE=65536.0; + break; + } + case PCI8622_INPUT_0_P5000mV: // 0V - +5V + { + m_AD_LSB_MAX=5000.0; + m_AD_LSB_HALF=0.0; + m_AD_LSB_RANGE=65536.0; + break; + } + default: + { + m_AD_LSB_MAX=0.0; + m_AD_LSB_HALF=0.0; + m_AD_LSB_RANGE=65536.0; + break; + } + } + switch(_Mode) + { + case E_ART_PCI8622_CAPTURE_DMA: + case E_ART_PCI8622_CAPTURE_DMA_SEQ: + case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: + { + m_hDmaEvent = PCI8622_CreateSystemEvent(); + if (!PCI8622_InitDeviceDmaAD(m_hDevice, m_hDmaEvent, &ADBuffer[0][0], 4096, SEGMENT_COUNT, HALF_SIZE_WORDS, &m_ADPara)) // 初始化硬件 + { + rStatus=FALSE; + StopCaptureData(); + } + break; + } + case E_ART_PCI8622_CAPTURE_NPT: + case E_ART_PCI8622_CAPTURE_NPT_SEQ: + case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: + { + if (!PCI8622_InitDeviceProAD(m_hDevice, &m_ADPara)) + { + rStatus=FALSE; + StopCaptureData(); + } + break; + } + } + if (rStatus) + { + m_StopedCapture=FALSE; + m_EnStartCapture=TRUE; + } + + +#endif //_RELEASE_FULL_VERSION + return rStatus; +} +//======================================== +BOOL CART_PCI8622::StartCaptureData() +{ + BOOL rStatus(TRUE); +#ifdef _RELEASE_FULL_VERSION + rStatus=PCI8622_StartDeviceDmaAD(m_hDevice); // 启动设备 + m_StopedCapture=FALSE; + m_EnGetData=TRUE; +#endif //_RELEASE_FULL_VERSION + return rStatus; +} +//======================================== +BOOL CART_PCI8622::StopCaptureData() +{ + BOOL rStatus(TRUE); +#ifdef _RELEASE_FULL_VERSION + rStatus=PCI8622_ReleaseDeviceDmaAD(m_hDevice); // 释放AD + rStatus=PCI8622_ReleaseSystemEvent(m_hDmaEvent); + m_EnStartCapture=FALSE; + m_StopedCapture=TRUE; + m_EnGetData=FALSE; +#endif //_RELEASE_FULL_VERSION + return rStatus; +} +//======================================== +BOOL CART_PCI8622::GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber) +{ + BOOL rStatus(TRUE); +#ifdef _RELEASE_FULL_VERSION + if(!m_EnGetData) + { + return FALSE; + } int nADChannel = 0; WORD ADData(0); - float fVolt(0); - - DeviceLgcID = 0; - hDevice = PCI8622_CreateDevice(DeviceLgcID); // 创建设备对象 - if(hDevice == INVALID_HANDLE_VALUE) - { - rStatus=FALSE; - return rStatus; // 如果创建设备对象失败,则返回 - } - - memset(&ADPara, 0x00, sizeof(ADPara)); // 将各项参数复位至确定值0(强烈建议) - - // 预置硬件参数 - ADPara.ADMode = PCI8622_ADMODE_SEQUENCE; // AD模式为连续模式 - ADPara.FirstChannel = 1; // 首通道 - ADPara.LastChannel = 2; // 末通道 - ADPara.Frequency = 10000; // 采样频率(Hz) - ADPara.GroupInterval = 50; // 组间间隔(uS) - ADPara.LoopsOfGroup = 1; // 组内各通道点数 - ADPara.Gains = PCI8622_GAINS_1MULT; - ADPara.InputRange = InputRange; // 模拟量输入量程范围 - - ADPara.TriggerMode = PCI8622_TRIGMODE_SOFT; // 触发模式为软件触发 - ADPara.TriggerType = PCI8622_TRIGTYPE_EDGE; // 触发类型为边沿触发 - ADPara.TriggerDir = PCI8622_TRIGDIR_NEGATIVE; // 触发方向为负向 - ADPara.TrigWindow = 40; // 触发灵敏度 - - ADPara.ClockSource = PCI8622_CLOCKSRC_IN; // 时钟源选用板内时钟源 - ADPara.bClockOutput = FALSE; // 禁止时钟输出 - ADPara.GroundingMode = PCI8622_GNDMODE_SE; // 单端方式(SE:Single end) - ADPara.TimeoutForNpt = 10; // 在非空方式下,设置超时时间为10秒钟(只在非空查询方式下有效) - - HANDLE hDmaEvent = PCI8622_CreateSystemEvent(); - if(!PCI8622_InitDeviceDmaAD( hDevice, hDmaEvent, &ADBuffer[0][0], 4096, SEGMENT_COUNT, HALF_SIZE_WORDS, &ADPara)) // 初始化硬件 - { - rStatus=FALSE; - goto ExitRead0; - } - - PCI8622_StartDeviceDmaAD(hDevice); // 启动设备 - bool bWait(true); - while(bWait) // 查询当前物理缓冲区数据是否已准备就绪 - { - if(WaitForSingleObject (hDmaEvent, 100)==WAIT_OBJECT_0) - bWait=false; // 等待DMA事件 - } - - if(!PCI8622_GetDevStatusDmaAD(hDevice, &DMAStatus)) - { - rStatus=FALSE; - goto ExitRead0; - } - - if(DMAStatus.bBufferOverflow) - { - rStatus=FALSE; - } - - for(SegmentID=0; SegmentID ADPara.LastChannel) + PCI8622_STATUS_DMA DMAStatus; // DMA状态参数 + if(!PCI8622_GetDevStatusDmaAD(m_hDevice, &DMAStatus)) { - nADChannel = ADPara.FirstChannel; - } + 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; } - } + case E_ART_PCI8622_CAPTURE_NPT: + case E_ART_PCI8622_CAPTURE_NPT_SEQ: + case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: + { + 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; 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; + } + } - if(!PCI8622_SetDevStatusDmaAD(hDevice, SegmentID)) - { - rStatus=FALSE; - goto ExitRead0; - } - } // end of for(SegmentID=0; SegmentID 1000 #include "PCI8622.h" + +#define MAX_AD_CHANNELS 4 +#define SEGMENT_COUNT 32 +#define HALF_SIZE_WORDS 4096 +enum E_ART_PCI8622_CAPTURE_MODE +{ + E_ART_PCI8622_CAPTURE_DMA=0, + E_ART_PCI8622_CAPTURE_DMA_SEQ, + E_ART_PCI8622_CAPTURE_DMA_TRIGCLK, + E_ART_PCI8622_CAPTURE_NPT=10, + E_ART_PCI8622_CAPTURE_NPT_SEQ, + E_ART_PCI8622_CAPTURE_NPT_TRIGCLK, + E_ART_PCI8622_CAPTURE_HALF=20, + + E_ART_PCI8622_CAPTURE_TOTAL=255 +}; //====================================================================================== class CART_PCI8622 { protected: - + HANDLE m_hDevice; + HANDLE m_hDmaEvent; + int m_InputRange; + WORD ADBuffer[SEGMENT_COUNT][HALF_SIZE_WORDS]; + ULONG m_SegmentID; + PCI8622_PARA_AD m_ADPara; // 硬件参数 + double m_AD_LSB_MAX; + double m_AD_LSB_HALF; + double m_AD_LSB_RANGE; + BOOL m_StopedCapture; + BOOL m_EnStartCapture; + BOOL m_EnGetData; + int m_iCaptureMode; public: CART_PCI8622(); ~CART_PCI8622(); BOOL Init(); BOOL Exit(); - BOOL GetData(); + BOOL SetCaptureMode(int _Mode=0); + BOOL StartCaptureData(); + BOOL StopCaptureData(); + BOOL GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber); }; #endif diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log index 2f93d0b..d48499c 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/UtilityDebug.Log @@ -4541,3 +4541,24 @@ Init:Open device succeed . _start_machine Usb Port Initialized. Usb Port Initialized. +Usb Port Initialized. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. +Construct Cso7_Proto. +Init:Open device succeed . +_start_machine +Exit: Exit_SO7Usb +Destruct Cso7_Proto. diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini index 7b7701f..101a1f3 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/Debug/Utility_Config.ini @@ -1,16 +1,4 @@ [HARDWARE] -MOVETOSPEED_FAST_X=0.00000000 -MOVETOSPEED_SLOW_X=0.00000000 -MOVETOSPEED_SCALE_X=1.00000000 -; -MOVETOSPEED_FAST_Y=0.00000000 -MOVETOSPEED_SLOW_Y=0.00000000 -MOVETOSPEED_SCALE_Y=1.00000000 -; -MOVETOSPEED_FAST_Z=0.00000000 -MOVETOSPEED_SLOW_Z=0.00000000 -MOVETOSPEED_SCALE_Z=1.00000000 -; SPEED_BASE_X1=0 SPEED_MAX_X1=0 SPEED_START_X1=0 @@ -123,5 +111,4 @@ Z_NEG_WORKING_LIMIT=0.000 X_POS_WORKING_LIMIT=400.000 Y_POS_WORKING_LIMIT=300.000 Z_POS_WORKING_LIMIT=200.000 -ROTARY_CIR_DIS=100.000 ; diff --git a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc index bd1ba4d..932e8ba 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/Mv_Util.rc @@ -948,12 +948,13 @@ CAPTION "ART PCI8622" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN PUSHBUTTON "Exit",IDCANCEL,347,264,50,14 - PUSHBUTTON "Start",IDC_BUTTON_ART_PCI8622_START,29,41,50,14 - PUSHBUTTON "Stop",IDC_BUTTON_ART_PCI8622_STOP,98,41,50,14 + PUSHBUTTON "Start",IDC_BUTTON_ART_PCI8622_START,129,41,50,14 + PUSHBUTTON "Stop",IDC_BUTTON_ART_PCI8622_STOP,198,41,50,14 EDITTEXT IDC_EDIT_ART_PCI8622_LOG,20,88,326,161,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL PUSHBUTTON "Clear all",IDC_BUTTON_ART_PCI8622_CLEAR_LOG,351,170,38,14 - PUSHBUTTON "Read",IDC_BUTTON_ART_PCI8622_READ_DATA,167,41,50,14 + PUSHBUTTON "Read",IDC_BUTTON_ART_PCI8622_READ_DATA,267,41,50,14 GROUPBOX "Machine",-1,20,15,325,65 + PUSHBUTTON "Set",IDC_BUTTON_ART_PCI8622_SET_MODE,65,43,50,14 END 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 39fbd4f..991b04c 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 @@ -8,14 +8,16 @@ #include "afxdialogex.h" extern CART_PCI8622* m_pART_PCI8622; +int m_ADDataNumber[32]={0}; +double m_ADData[32][4096]={0}; // CSo7_Art_PCI8622 dialog IMPLEMENT_DYNAMIC(CSo7_Art_PCI8622, CDialog) -CSo7_Art_PCI8622::CSo7_Art_PCI8622(CWnd* pParent /*=NULL*/) - : CDialog(CSo7_Art_PCI8622::IDD, pParent) + CSo7_Art_PCI8622::CSo7_Art_PCI8622(CWnd* pParent /*=NULL*/) + : CDialog(CSo7_Art_PCI8622::IDD, pParent) { - + m_MsgCnts=0; } CSo7_Art_PCI8622::~CSo7_Art_PCI8622() @@ -24,33 +26,168 @@ CSo7_Art_PCI8622::~CSo7_Art_PCI8622() void CSo7_Art_PCI8622::DoDataExchange(CDataExchange* pDX) { - CDialog::DoDataExchange(pDX); + DDX_Control(pDX, IDC_EDIT_ART_PCI8622_LOG,m_edMSG); + CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CSo7_Art_PCI8622, CDialog) + ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON_ART_PCI8622_READ_DATA, &CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622ReadData) ON_BN_CLICKED(IDC_BUTTON_ART_PCI8622_CLEAR_LOG, &CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622ClearLog) ON_BN_CLICKED(IDCANCEL, &CSo7_Art_PCI8622::OnBnClickedCancel) + ON_BN_CLICKED(IDC_BUTTON_ART_PCI8622_START, &CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Start) + ON_BN_CLICKED(IDC_BUTTON_ART_PCI8622_STOP, &CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Stop) + ON_BN_CLICKED(IDC_BUTTON_ART_PCI8622_SET_MODE, &CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622SetMode) END_MESSAGE_MAP() // CSo7_Art_PCI8622 message handlers +//================================== +BOOL CSo7_Art_PCI8622::OnInitDialog() +{ + CDialog::OnInitDialog(); + + // Add "About..." menu item to system menu. + + // IDM_ABOUTBOX must be in the system command range. + ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); + ASSERT(IDM_ABOUTBOX < 0xF000); + + CMenu* pSysMenu = GetSystemMenu(FALSE); + if (pSysMenu != NULL) + { + BOOL bNameValid; + CString strAboutMenu; + bNameValid = strAboutMenu.LoadString(IDS_SO7_ABOUTBOX); + ASSERT(bNameValid); + if (!strAboutMenu.IsEmpty()) + { + pSysMenu->AppendMenu(MF_SEPARATOR); + pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); + } + } + + m_pART_PCI8622->Init(); + + return TRUE; // return TRUE unless you set the focus to a control +} + +void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622SetMode() +{ + m_pART_PCI8622->SetCaptureMode(E_ART_PCI8622_CAPTURE_NPT_TRIGCLK); + +} void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622ReadData() { - m_pART_PCI8622->GetData(); + SetTimer(1,200,NULL); + //GetData(TRUE); } void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622ClearLog() { - // TODO: Add your control notification handler code here + ((CEdit *)GetDlgItem(IDC_EDIT_ART_PCI8622_LOG))->SetWindowTextW(_T("")); + m_MsgCnts=0; } void CSo7_Art_PCI8622::OnBnClickedCancel() { + m_pART_PCI8622->Exit(); CDialog::OnCancel(); } + + +void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Start() +{ + m_pART_PCI8622->StartCaptureData(); + +} + + +void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Stop() +{ + KillTimer(1); + m_pART_PCI8622->StopCaptureData(); +} +//=================================================== +void CSo7_Art_PCI8622::GetData(BOOL _BShow) +{ + memset(m_ADDataNumber,0,sizeof(m_ADDataNumber)); + m_pART_PCI8622->GetData(m_ADData,m_ADDataNumber); + if (_BShow) + { + m_csMsg=_T(""); + CString csTmp(_T("")); + int iDataNumberMax(0); + for (int i=0;i<32;i++) + { + if(m_ADDataNumber[i]>iDataNumberMax) + { + iDataNumberMax=m_ADDataNumber[i]; + } + } + for (int i=0;ii) + { + csTmp.Format(_T("CH%d:%.4f;"),j,m_ADData[j][i]); + m_csMsg+=csTmp; + } + } + OutputWithScroll(m_csMsg,m_edMSG); + m_csMsg=_T(""); + } + } +} + +//=================================================== +void CSo7_Art_PCI8622::OnTimer(UINT_PTR nIDEvent) +{ + switch(nIDEvent) + { + case 1: + { + bool bExit(false); + if (bExit) + { + KillTimer(1); + } + GetData(); + break; + } + + } + + CDialog::OnTimer(nIDEvent); + +} + +//===================================================================================== +//Print message on edit control +void CSo7_Art_PCI8622::OutputWithScroll(const CString &strNewText,CEdit &edtOutput) +{ + CString strOutput; + edtOutput.GetWindowText(strOutput); + strOutput += strNewText; + if ("\r\n" != strOutput.Right(2)) + { + strOutput += "\r\n"; + } + + int iCount = strOutput.GetLength(); + + edtOutput.SetRedraw(FALSE); + edtOutput.SetWindowText(strOutput); + int iLine = edtOutput.GetLineCount(); + edtOutput.LineScroll(iLine, 0); + edtOutput.SetSel(iCount, iCount); + edtOutput.SetRedraw(TRUE); +} \ No newline at end of file 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 e85506d..a296756 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 @@ -16,10 +16,21 @@ public: protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + virtual BOOL OnInitDialog(); DECLARE_MESSAGE_MAP() +protected: + CString m_csMsg; + CEdit m_edMSG; + int m_MsgCnts; + void GetData(BOOL _BShow=FALSE); + void OutputWithScroll(const CString &strNewText,CEdit &edtOutput); public: + afx_msg void OnTimer(UINT_PTR nIDEvent); afx_msg void OnBnClickedButtonArtPci8622ReadData(); afx_msg void OnBnClickedButtonArtPci8622ClearLog(); afx_msg void OnBnClickedCancel(); + afx_msg void OnBnClickedButtonArtPci8622Start(); + afx_msg void OnBnClickedButtonArtPci8622Stop(); + afx_msg void OnBnClickedButtonArtPci8622SetMode(); }; 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 675709d..995ab1b 100644 --- a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h +++ b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil/resource.h @@ -973,6 +973,8 @@ #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_BUTTON_DIY_EXIT_BUTTON 32740 #define ID_EDIT_SO7_CONFIG_MOTION 32741 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 a42d939..6422e95 100644 Binary files a/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo and b/PcDmis/Base/Interfac/Msi/Hsi/Tools/UsbUtility/UsbUtil_VS2010.suo differ