so7_config新增脚踏开关使能设置。

This commit is contained in:
TAO Cheng
2014-05-09 11:05:52 +08:00
parent 5aec9f2552
commit 4f6272ff92
14 changed files with 468 additions and 168 deletions
+228 -97
View File
@@ -13,10 +13,13 @@ CART_PCI8622::CART_PCI8622()
m_AD_LSB_HALF=0.0; m_AD_LSB_HALF=0.0;
m_AD_LSB_RANGE=65536; m_AD_LSB_RANGE=65536;
m_InputRange=0; m_InputRange=0;
m_StopedCapture=TRUE; m_StopedSample=TRUE;
m_EnStartCapture=FALSE; m_EnStartSample=FALSE;
m_EnGetData=FALSE; m_EnGetData=FALSE;
m_iCaptureMode=0; m_iSampleMode=0;
m_iReadDataSize=100;
m_iFirstChannel=1;
m_iLastChannel=2;
} }
CART_PCI8622::~CART_PCI8622() CART_PCI8622::~CART_PCI8622()
@@ -28,8 +31,11 @@ BOOL CART_PCI8622::Init()
{ {
BOOL rStatus(TRUE); BOOL rStatus(TRUE);
#ifdef _RELEASE_FULL_VERSION #ifdef _RELEASE_FULL_VERSION
int DeviceLgcID(0); if(m_hDevice == INVALID_HANDLE_VALUE)
m_hDevice = PCI8622_CreateDevice(DeviceLgcID); // 创建设备对象 {
int DeviceLgcID(0);
m_hDevice = PCI8622_CreateDevice(DeviceLgcID); // 创建设备对象
}
if(m_hDevice == INVALID_HANDLE_VALUE) if(m_hDevice == INVALID_HANDLE_VALUE)
{ {
rStatus=FALSE; rStatus=FALSE;
@@ -42,9 +48,9 @@ BOOL CART_PCI8622::Exit()
{ {
BOOL rStatus(TRUE); BOOL rStatus(TRUE);
#ifdef _RELEASE_FULL_VERSION #ifdef _RELEASE_FULL_VERSION
if (!m_StopedCapture) if (!m_StopedSample)
{ {
rStatus=StopCaptureData(); rStatus=StopSampleData();
} }
rStatus=PCI8622_ReleaseDevice(m_hDevice); // 释放设备对象 rStatus=PCI8622_ReleaseDevice(m_hDevice); // 释放设备对象
m_hDevice=INVALID_HANDLE_VALUE; 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); BOOL rStatus(TRUE);
m_iSampleMode=_Mode;
m_iReadDataSize=_ReadDataSize;
#ifdef _RELEASE_FULL_VERSION #ifdef _RELEASE_FULL_VERSION
m_iCaptureMode=_Mode; memset(&ADBuffer, 0x00, sizeof(ADBuffer));
memset(&m_ADPara, 0x00, sizeof(m_ADPara)); // 将各项参数复位至确定值0(强烈建议) memset(&m_ADPara, 0x00, sizeof(m_ADPara)); // 将各项参数复位至确定值0(强烈建议)
switch(_Mode) switch(_Mode)
{ {
case E_ART_PCI8622_CAPTURE_DMA_SEQ: case E_ART_PCI8622_SAMPLE_DMA_SEQ:
case E_ART_PCI8622_CAPTURE_NPT_SEQ: case E_ART_PCI8622_SAMPLE_NPT_SEQ:
case E_ART_PCI8622_SAMPLE_HALF_SEQ:
{ {
// 预置硬件参数 // 预置硬件参数
m_ADPara.ADMode = PCI8622_ADMODE_SEQUENCE; // AD模式为连续模式 m_ADPara.ADMode = PCI8622_ADMODE_SEQUENCE; // AD模式为连续模式
m_ADPara.FirstChannel = 1; // 首通道 m_ADPara.FirstChannel = m_iFirstChannel; // 首通道
m_ADPara.LastChannel = 2; // 末通道 m_ADPara.LastChannel = m_iLastChannel; // 末通道
m_ADPara.Frequency = 10000; // 采样频率(Hz) m_ADPara.Frequency = 25000; // 采样频率(Hz)
m_ADPara.GroupInterval = 50; // 组间间隔(uS) m_ADPara.GroupInterval = 50; // 组间间隔(uS)
m_ADPara.LoopsOfGroup = 1; // 组内各通道点数 m_ADPara.LoopsOfGroup = 1; // 组内各通道点数
m_ADPara.Gains = PCI8622_GAINS_1MULT; m_ADPara.Gains = PCI8622_GAINS_1MULT;
@@ -85,13 +94,14 @@ BOOL CART_PCI8622::SetCaptureMode(int _Mode)
m_ADPara.TimeoutForNpt = 10; // 在非空方式下,设置超时时间为10秒钟(只在非空查询方式下有效) m_ADPara.TimeoutForNpt = 10; // 在非空方式下,设置超时时间为10秒钟(只在非空查询方式下有效)
break; break;
} }
case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK:
case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK:
case E_ART_PCI8622_SAMPLE_HALF_TRIGCLK:
{ {
// 预置硬件参数 // 预置硬件参数
m_ADPara.ADMode = PCI8622_ADMODE_GROUP; // AD模式为连续模式 m_ADPara.ADMode = PCI8622_ADMODE_GROUP; // AD模式为连续模式
m_ADPara.FirstChannel = 1; // 首通道 m_ADPara.FirstChannel = m_iFirstChannel; // 首通道
m_ADPara.LastChannel = 2; // 末通道 m_ADPara.LastChannel = m_iLastChannel; // 末通道
m_ADPara.Frequency = 10000; // 采样频率(Hz) m_ADPara.Frequency = 10000; // 采样频率(Hz)
m_ADPara.GroupInterval = 50; // 组间间隔(uS) m_ADPara.GroupInterval = 50; // 组间间隔(uS)
m_ADPara.LoopsOfGroup = 1; // 组内各通道点数 m_ADPara.LoopsOfGroup = 1; // 组内各通道点数
@@ -162,34 +172,50 @@ BOOL CART_PCI8622::SetCaptureMode(int _Mode)
} }
switch(_Mode) switch(_Mode)
{ {
case E_ART_PCI8622_CAPTURE_DMA: case E_ART_PCI8622_SAMPLE_DMA:
case E_ART_PCI8622_CAPTURE_DMA_SEQ: case E_ART_PCI8622_SAMPLE_DMA_SEQ:
case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK:
{ {
m_hDmaEvent = PCI8622_CreateSystemEvent(); 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; rStatus=FALSE;
StopCaptureData(); StopSampleData();
} }
break; break;
} }
case E_ART_PCI8622_CAPTURE_NPT: case E_ART_PCI8622_SAMPLE_NPT:
case E_ART_PCI8622_CAPTURE_NPT_SEQ: case E_ART_PCI8622_SAMPLE_NPT_SEQ:
case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: case E_ART_PCI8622_SAMPLE_NPT_TRIGCLK:
{ {
if (!PCI8622_InitDeviceProAD(m_hDevice, &m_ADPara)) if (!PCI8622_InitDeviceProAD(m_hDevice, &m_ADPara))
{ {
rStatus=FALSE; rStatus=FALSE;
StopCaptureData(); StopSampleData();
} }
break; 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) if (rStatus)
{ {
m_StopedCapture=FALSE; m_StopedSample=FALSE;
m_EnStartCapture=TRUE; m_EnStartSample=TRUE;
} }
@@ -197,25 +223,81 @@ BOOL CART_PCI8622::SetCaptureMode(int _Mode)
return rStatus; return rStatus;
} }
//======================================== //========================================
BOOL CART_PCI8622::StartCaptureData() BOOL CART_PCI8622::StartSampleData()
{ {
BOOL rStatus(TRUE); BOOL rStatus(TRUE);
#ifdef _RELEASE_FULL_VERSION #ifdef _RELEASE_FULL_VERSION
rStatus=PCI8622_StartDeviceDmaAD(m_hDevice); // 启动设备 switch(m_iSampleMode)
m_StopedCapture=FALSE; {
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; m_EnGetData=TRUE;
#endif //_RELEASE_FULL_VERSION #endif //_RELEASE_FULL_VERSION
return rStatus; return rStatus;
} }
//======================================== //========================================
BOOL CART_PCI8622::StopCaptureData() BOOL CART_PCI8622::StopSampleData()
{ {
BOOL rStatus(TRUE); BOOL rStatus(TRUE);
#ifdef _RELEASE_FULL_VERSION #ifdef _RELEASE_FULL_VERSION
rStatus=PCI8622_ReleaseDeviceDmaAD(m_hDevice); // 释放AD switch(m_iSampleMode)
rStatus=PCI8622_ReleaseSystemEvent(m_hDmaEvent); {
m_EnStartCapture=FALSE; case E_ART_PCI8622_SAMPLE_DMA:
m_StopedCapture=TRUE; 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; m_EnGetData=FALSE;
#endif //_RELEASE_FULL_VERSION #endif //_RELEASE_FULL_VERSION
return rStatus; return rStatus;
@@ -233,69 +315,111 @@ BOOL CART_PCI8622::GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber)
WORD ADData(0); WORD ADData(0);
double dVolt(0); double dVolt(0);
int Index(0); int Index(0);
switch(m_iCaptureMode) switch(m_iSampleMode)
{ {
case E_ART_PCI8622_CAPTURE_DMA: case E_ART_PCI8622_SAMPLE_DMA:
case E_ART_PCI8622_CAPTURE_DMA_SEQ: case E_ART_PCI8622_SAMPLE_DMA_SEQ:
case E_ART_PCI8622_CAPTURE_DMA_TRIGCLK: case E_ART_PCI8622_SAMPLE_DMA_TRIGCLK:
{
PCI8622_STATUS_DMA DMAStatus; // DMA状态参数
PCI8622_GetDevStatusDmaAD(m_hDevice, &DMAStatus);
bool bWait(true);
while(bWait) // 查询当前物理缓冲区数据是否已准备就绪
{ {
if(WaitForSingleObject (m_hDmaEvent, 100)==WAIT_OBJECT_0)
bool bWait(true); bWait=false; // 等待DMA事件
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<SEGMENT_COUNT; m_SegmentID++)
{
if(DMAStatus.bSegmentSts[m_SegmentID])
{
nADChannel = m_ADPara.FirstChannel;
for(Index=0; Index<64; Index++)
{
ADData = ((ADBuffer[m_SegmentID][Index]));
// 将原码转换为电压值
dVolt = static_cast<double>(((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: if(!PCI8622_GetDevStatusDmaAD(m_hDevice, &DMAStatus))
case E_ART_PCI8622_CAPTURE_NPT_SEQ: {
case E_ART_PCI8622_CAPTURE_NPT_TRIGCLK: rStatus=FALSE;
StopSampleData();
}
if(DMAStatus.bBufferOverflow)
{
rStatus=FALSE;
}
for(m_SegmentID=0; m_SegmentID<SEGMENT_COUNT; m_SegmentID++)
{
if(DMAStatus.bSegmentSts[m_SegmentID])
{
TRACE1("[PCI8622_GetDevStatusDmaAD] m_SegmentID:%d.\r\n",m_SegmentID);
nADChannel = m_ADPara.FirstChannel;
for(Index=0; Index<m_iReadDataSize; Index++)
{
ADData = ((ADBuffer[m_SegmentID][Index]));
// 将原码转换为电压值
dVolt = static_cast<double>(((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<nReadSizeWords; Index++)
{
ADData = ((ADBuffer[m_SegmentID][Index]));
// 将原码转换为电压值
dVolt = static_cast<double>(((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; nADChannel = m_ADPara.FirstChannel;
TRACE1("[PCI8622_ReadDeviceProAD_Npt] Retsize:%d.\r\n",nRetSizeWords); TRACE1("[PCI8622_ReadDeviceProAD_Half] Retsize:%d.\r\n",nRetSizeWords);
for(Index=0; Index<nRetSizeWords; Index++) for(Index=0; Index<64; Index++)
{ {
ADData = ((ADBuffer[m_SegmentID][Index])); ADData = ((ADBuffer[m_SegmentID][Index]));
// 将原码转换为电压值 // 将原码转换为电压值
@@ -308,11 +432,18 @@ BOOL CART_PCI8622::GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber)
nADChannel = m_ADPara.FirstChannel; nADChannel = m_ADPara.FirstChannel;
} }
} }
break;
} }
}
default:
{
break;
}
} }
m_StopedCapture=FALSE; m_StopedSample=FALSE;
#else
UNREFERENCED_PARAMETER(_Data);
UNREFERENCED_PARAMETER(_DataNumber);
#endif //_RELEASE_FULL_VERSION #endif //_RELEASE_FULL_VERSION
return rStatus; return rStatus;
+20 -15
View File
@@ -11,17 +11,19 @@
#define MAX_AD_CHANNELS 4 #define MAX_AD_CHANNELS 4
#define SEGMENT_COUNT 32 #define SEGMENT_COUNT 32
#define HALF_SIZE_WORDS 4096 #define HALF_SIZE_WORDS 4096
enum E_ART_PCI8622_CAPTURE_MODE enum E_ART_PCI8622_SAMPLE_MODE
{ {
E_ART_PCI8622_CAPTURE_DMA=0, E_ART_PCI8622_SAMPLE_DMA=0,
E_ART_PCI8622_CAPTURE_DMA_SEQ, E_ART_PCI8622_SAMPLE_DMA_SEQ,
E_ART_PCI8622_CAPTURE_DMA_TRIGCLK, E_ART_PCI8622_SAMPLE_DMA_TRIGCLK,
E_ART_PCI8622_CAPTURE_NPT=10, E_ART_PCI8622_SAMPLE_NPT=10,
E_ART_PCI8622_CAPTURE_NPT_SEQ, E_ART_PCI8622_SAMPLE_NPT_SEQ,
E_ART_PCI8622_CAPTURE_NPT_TRIGCLK, E_ART_PCI8622_SAMPLE_NPT_TRIGCLK,
E_ART_PCI8622_CAPTURE_HALF=20, E_ART_PCI8622_SAMPLE_HALF=20,
E_ART_PCI8622_SAMPLE_HALF_SEQ,
E_ART_PCI8622_SAMPLE_HALF_TRIGCLK,
E_ART_PCI8622_CAPTURE_TOTAL=255 E_ART_PCI8622_SAMPLE_TOTAL=255
}; };
//====================================================================================== //======================================================================================
class CART_PCI8622 class CART_PCI8622
@@ -36,19 +38,22 @@ protected:
double m_AD_LSB_MAX; double m_AD_LSB_MAX;
double m_AD_LSB_HALF; double m_AD_LSB_HALF;
double m_AD_LSB_RANGE; double m_AD_LSB_RANGE;
BOOL m_StopedCapture; BOOL m_StopedSample;
BOOL m_EnStartCapture; BOOL m_EnStartSample;
BOOL m_EnGetData; BOOL m_EnGetData;
int m_iCaptureMode; int m_iSampleMode;
int m_iReadDataSize;
int m_iFirstChannel;
int m_iLastChannel;
public: public:
CART_PCI8622(); CART_PCI8622();
~CART_PCI8622(); ~CART_PCI8622();
BOOL Init(); BOOL Init();
BOOL Exit(); BOOL Exit();
BOOL SetCaptureMode(int _Mode=0); BOOL SetSamplePara(int _Mode,int _ReadDataSize);
BOOL StartCaptureData(); BOOL StartSampleData();
BOOL StopCaptureData(); BOOL StopSampleData();
BOOL GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber); BOOL GetData(double (*_Data)[HALF_SIZE_WORDS],int* _DataNumber);
}; };
@@ -1146,7 +1146,7 @@ SSI_STATUS CMv_Proto::mv_motion_startup(double dScaleResolutionX, double dScaleR
g_machine.s_machine_config.z_axis._scale_resolution = dScaleResolutionZ; g_machine.s_machine_config.z_axis._scale_resolution = dScaleResolutionZ;
_start_machine(); _start_machine();
mv_motion_Dcc_Home(); mv_motion_Dcc_Home();
_replay_capture(_T("Replay_Capture")); _replay_capture(_T("Replay_Sample"));
return SSI_STATUS_NORMAL; return SSI_STATUS_NORMAL;
}; };
@@ -605,6 +605,7 @@ SSI_STATUS_MOTION CSO7_Proto::so7_config_para_set_default()
g_machine.s_machine_config.motion.m_CNC_Deadlock_Solution=1; g_machine.s_machine_config.motion.m_CNC_Deadlock_Solution=1;
g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts=6; g_machine.s_machine_config.motion.m_CNC_Deadlock_JudgeMaxCnts=6;
g_machine.s_machine_config.motion.m_TouchProbeEnable=0; g_machine.s_machine_config.motion.m_TouchProbeEnable=0;
g_machine.s_machine_config.motion.m_FootSwitchEnable=0;
g_machine.s_machine_config.motion.m_JoyStickEnable=0; g_machine.s_machine_config.motion.m_JoyStickEnable=0;
g_machine.s_machine_config.motion.m_DebugOutputEnable=0; g_machine.s_machine_config.motion.m_DebugOutputEnable=0;
@@ -2243,6 +2244,10 @@ SSI_STATUS_MOTION CSO7_Proto::Save_So7_Config()
fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_TouchProbeEnable); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_TouchProbeEnable);
fprintf(m_pOutFile, "\n"); fprintf(m_pOutFile, "\n");
outBuff="FOOT_SWITCH_ENABLE=";
fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_FootSwitchEnable);
fprintf(m_pOutFile, "\n");
outBuff="JOYSTICK_ENABLE="; outBuff="JOYSTICK_ENABLE=";
fprintf(m_pOutFile,"%s", outBuff); fprintf(m_pOutFile,"%s", outBuff);
fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_JoyStickEnable); fprintf(m_pOutFile,"%d", g_machine.s_machine_config.motion.m_JoyStickEnable);
@@ -2552,6 +2557,15 @@ SSI_STATUS_MOTION CSO7_Proto::Load_So7_Config()
g_machine.s_machine_config.motion.m_TouchProbeEnable=atoi(cTemp); g_machine.s_machine_config.motion.m_TouchProbeEnable=atoi(cTemp);
} }
} }
else if (!_stricmp(token,"FOOT_SWITCH_ENABLE"))
{
token = strtok( NULL, seps);
if (token)
{
strcpy(cTemp,token);
g_machine.s_machine_config.motion.m_FootSwitchEnable=atoi(cTemp);
}
}
else if (!_stricmp(token,"JOYSTICK_ENABLE")) else if (!_stricmp(token,"JOYSTICK_ENABLE"))
{ {
token = strtok( NULL, seps); token = strtok( NULL, seps);
@@ -2900,6 +2914,7 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb()
} }
else if (usb_set_configuration(g_dev, MY_CONFIG) < 0) else if (usb_set_configuration(g_dev, MY_CONFIG) < 0)
{ {
g_dev=NULL;
MessageBox(NULL, _T("Unable to SET CONFIGURATION"), _T("Message"), MB_OK|MB_ICONERROR); MessageBox(NULL, _T("Unable to SET CONFIGURATION"), _T("Message"), MB_OK|MB_ICONERROR);
g_machine.IsOffline=TRUE; g_machine.IsOffline=TRUE;
rStatus=SSI_STATUS_MOTION_DATALINK_ERROR; rStatus=SSI_STATUS_MOTION_DATALINK_ERROR;
@@ -2907,6 +2922,7 @@ SSI_STATUS_MOTION CSO7_Proto::Init_SO7Usb()
else if (usb_claim_interface(g_dev, 0) < 0) else if (usb_claim_interface(g_dev, 0) < 0)
{ {
usb_close(g_dev); usb_close(g_dev);
g_dev=NULL;
MessageBox(NULL, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK|MB_ICONERROR); MessageBox(NULL, _T("Unable to CLAIM DEVICE"), _T("Message"), MB_OK|MB_ICONERROR);
g_machine.IsOffline=TRUE; g_machine.IsOffline=TRUE;
rStatus=SSI_STATUS_MOTION_DATALINK_ERROR; rStatus=SSI_STATUS_MOTION_DATALINK_ERROR;
@@ -188,6 +188,7 @@ struct s_so7_machine_interface_config
INT m_CNC_Deadlock_Solution; INT m_CNC_Deadlock_Solution;
INT m_CNC_Deadlock_JudgeMaxCnts; INT m_CNC_Deadlock_JudgeMaxCnts;
INT m_TouchProbeEnable; INT m_TouchProbeEnable;
INT m_FootSwitchEnable;
INT m_JoyStickEnable; INT m_JoyStickEnable;
INT m_DebugOutputEnable; INT m_DebugOutputEnable;
INT m_SDK3000_CntThreadSleepVal; INT m_SDK3000_CntThreadSleepVal;
@@ -4562,3 +4562,6 @@ Init:Open device succeed .
_start_machine _start_machine
Exit: Exit_SO7Usb Exit: Exit_SO7Usb
Destruct Cso7_Proto. Destruct Cso7_Proto.
Usb Port Initialized.
Usb Port Initialized.
Usb Port Initialized.
@@ -1,4 +1,16 @@
[HARDWARE] [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_BASE_X1=0
SPEED_MAX_X1=0 SPEED_MAX_X1=0
SPEED_START_X1=0 SPEED_START_X1=0
@@ -111,4 +123,5 @@ Z_NEG_WORKING_LIMIT=0.000
X_POS_WORKING_LIMIT=400.000 X_POS_WORKING_LIMIT=400.000
Y_POS_WORKING_LIMIT=300.000 Y_POS_WORKING_LIMIT=300.000
Z_POS_WORKING_LIMIT=200.000 Z_POS_WORKING_LIMIT=200.000
ROTARY_CIR_DIS=100.000
; ;
@@ -1,11 +1,23 @@
[7OCEANAUTOZOOM]
ZOOM_PRODUCT_ID=So7123456
ZOOM_COM_PORT=1
ZOOM_START_DEG=0.000000
ZOOM_END_DEG=0.000000
ZOOM_ORG_DEG=0.000000
ZOOM_DEADBAND_DEG=0.100000
ZOOM_PULSE_PER_DEG=25.134736064968621
ZOOM_READING_INTERVAL_TIME=60
ZOOM_MOTOR_SPEED_FAST=2000
ZOOM_MOTOR_SPEED_SLOW=800
;
[CONTROLLER] [CONTROLLER]
CLOSE_LOOP_ENABLED=0
MOTION_RETRY_TIMES=0
SHIFT_POSITION_X=0.000000
SHIFT_POSITION_Y=0.000000
SHIFT_POSITION_Z=0.000000
GET_USB_MESSAGE_METHOD=1 GET_USB_MESSAGE_METHOD=1
WRITE_DATA_SLEEP_TIME=0 WRITE_DATA_SLEEP_TIME=0
TOUCH_PROBE_ENABLE=0
JOYSTICK_ENABLE=0
DEBUG_LOG_ENABLE=0
;
[Motion]
ACCURA_ERROR_PULSE_X=1 ACCURA_ERROR_PULSE_X=1
ACCURA_ERROR_PULSE_Y=1 ACCURA_ERROR_PULSE_Y=1
ACCURA_ERROR_PULSE_Z=1 ACCURA_ERROR_PULSE_Z=1
@@ -14,8 +26,19 @@ EQUIDISTANCE_PULSE_Y=0
EQUIDISTANCE_PULSE_Z=0 EQUIDISTANCE_PULSE_Z=0
CNC_DEADLOCK_SOLUTION=1 CNC_DEADLOCK_SOLUTION=1
CNC_DEADLOCK_MAX_CNTS=6 CNC_DEADLOCK_MAX_CNTS=6
X_SCALE_RESOLUTION=0.500 TOUCH_PROBE_ENABLE=0
Y_SCALE_RESOLUTION=0.500 FOOT_SWITCH_ENABLE=0
Z_SCALE_RESOLUTION=0.500 JOYSTICK_ENABLE=0
ROTARY_AXIS_NUMBER=2 DEBUG_LOG_ENABLE=0
ROTARY_CIR_DIS=7.2 ;
[VIDEOCARD]
SDK3000_SLEEP_COUNT=550000
SV4000E_DENOISE_PARA_CHANNEL1=70
SV4000E_DENOISE_PARA_CHANNEL2=70
SV4000E_DENOISE_PARA_CHANNEL3=70
SV4000E_DENOISE_PARA_CHANNEL4=70
;
[HSI]
MACHINE_CONTROLLER_TYPE=0
MACHINE_VIDEOCARD_TYPE=0
;
@@ -395,32 +395,32 @@ BEGIN
EDITTEXT IDC_EDIT_ZOOM_TIME,14,159,112,112,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL EDITTEXT IDC_EDIT_ZOOM_TIME,14,159,112,112,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
END END
IDD_SO7_OPTION_DIALOG DIALOGEX 0, 0, 317, 169 IDD_SO7_OPTION_DIALOG DIALOGEX 0, 0, 290, 163
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Utility for SO7" CAPTION "Utility for SO7"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
CONTROL "SDK3000视频卡",IDC_RADIO_VIDEOCARD_SDK3000,"Button",BS_AUTORADIOBUTTON | WS_GROUP,34,39,69,10 CONTROL "SDK3000视频卡",IDC_RADIO_VIDEOCARD_SDK3000,"Button",BS_AUTORADIOBUTTON | WS_GROUP,24,32,69,10
CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,34,55,69,10 CONTROL "SV2000E视频卡",IDC_RADIO_VIDEOCARD_SV2000E,"Button",BS_AUTORADIOBUTTON,24,48,69,10
CONTROL "SV4000E视频卡",IDC_RADIO_VIDEOCARD_SV4000E,"Button",BS_AUTORADIOBUTTON,34,71,68,10 CONTROL "SV4000E视频卡",IDC_RADIO_VIDEOCARD_SV4000E,"Button",BS_AUTORADIOBUTTON,24,64,68,10
CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,34,87,69,10 CONTROL "TC4000视频卡",IDC_RADIO_VIDEOCARD_TC4000,"Button",BS_AUTORADIOBUTTON,24,80,69,10
CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON,34,103,62,10 CONTROL "IP Camera",IDC_RADIO_SO7_IP_CAMERA,"Button",BS_AUTORADIOBUTTON,24,96,62,10
CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON,34,119,62,10 CONTROL "USB Camera",IDC_RADIO_SO7_USB_CAMERA,"Button",BS_AUTORADIOBUTTON,24,112,62,10
CONTROL "控制器(USB",IDC_RADIO_CONTROLLER,"Button",BS_AUTORADIOBUTTON,211,38,69,10 CONTROL "控制器(USB",IDC_RADIO_CONTROLLER,"Button",BS_AUTORADIOBUTTON,195,31,69,10
CONTROL "控制器(RS232",IDC_RADIO__SO7_RS232,"Button",BS_AUTORADIOBUTTON,211,70,77,10 CONTROL "控制器(RS232",IDC_RADIO__SO7_RS232,"Button",BS_AUTORADIOBUTTON,195,63,77,10
CONTROL "LK_G激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,114,39,76,10 CONTROL "LK_G激光",IDC_RADIO_KEYENCE_LASER,"Button",BS_AUTORADIOBUTTON,100,32,76,10
CONTROL "LK_H激光(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,114,55,76,10 CONTROL "LK_H激光(USB)",IDC_RADIO_KEYENCE_LASER_LK_H,"Button",BS_AUTORADIOBUTTON,100,48,76,10
CONTROL "LK_H¼¤¹â(ETHERNET)",IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET, CONTROL "LK_H¼¤¹â(ETHERNET)",IDC_RADIO_KEYENCE_LASER_LKH_ETHERNET,
"Button",BS_AUTORADIOBUTTON,114,71,85,10 "Button",BS_AUTORADIOBUTTON,100,64,85,10
CONTROL "LJ_G激光",IDC_RADIO_KEYENCE_LASER3,"Button",BS_AUTORADIOBUTTON,114,87,76,10 CONTROL "LJ_G激光",IDC_RADIO_KEYENCE_LASER3,"Button",BS_AUTORADIOBUTTON,100,80,76,10
CONTROL "Verifcation algorithm",IDC_RADIO_SO7_VERIFICATION_ALGORITHM, CONTROL "Verifcation algorithm",IDC_RADIO_SO7_VERIFICATION_ALGORITHM,
"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,8,152,81,10 "Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,8,139,81,10
CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,152,45,10 CONTROL "Image.dll",IDC_RADIO_TEST_IMAGE_DLL,"Button",BS_AUTORADIOBUTTON | NOT WS_VISIBLE,7,139,45,10
DEFPUSHBUTTON "OK",IDOK,191,148,50,14 DEFPUSHBUTTON "OK",IDOK,145,142,50,14
PUSHBUTTON "Cancel",IDCANCEL,260,148,50,14 PUSHBUTTON "Cancel",IDCANCEL,225,142,50,14
GROUPBOX "测试选项",IDC_STATIC,20,15,280,123 GROUPBOX "测试选项",IDC_STATIC,10,8,265,123
CONTROL "控制器(USB R",IDC_RADIO_CONTROLLER2,"Button",BS_AUTORADIOBUTTON,211,54,75,10 CONTROL "控制器(USB R",IDC_RADIO_CONTROLLER2,"Button",BS_AUTORADIOBUTTON,195,47,75,10
CONTROL "ART PCI8822",IDC_RADIO_ART_PCI8622,"Button",BS_AUTORADIOBUTTON,114,103,76,10 CONTROL "ART PCI8822",IDC_RADIO_ART_PCI8622,"Button",BS_AUTORADIOBUTTON,100,96,76,10
END END
IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316 IDD_SO7_VIDEOCARD_SDK3000 DIALOGEX 0, 0, 488, 316
@@ -947,14 +947,25 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM
CAPTION "ART PCI8622" CAPTION "ART PCI8622"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
CONTROL "DMA SEQ",IDC_RADIO_ART_PCI8622_MODE_DMASEQ,"Button",BS_AUTORADIOBUTTON | WS_GROUP,30,29,46,10
CONTROL "NPT SEQ",IDC_RADIO_ART_PCI8622_MODE_NPTSEQ,"Button",BS_AUTORADIOBUTTON,87,29,44,10
CONTROL "HALF SEQ",IDC_RADIO_ART_PCI8622_MODE_HALFSEQ,"Button",BS_AUTORADIOBUTTON,144,29,48,10
CONTROL "DMA TRIG",IDC_RADIO_ART_PCI8622_MODE_DMATRIG,"Button",BS_AUTORADIOBUTTON,30,45,49,10
CONTROL "NPT TRIG",IDC_RADIO_ART_PCI8622_MODE_NPTTRIG,"Button",BS_AUTORADIOBUTTON,87,45,47,10
CONTROL "HALF TRIG",IDC_RADIO_ART_PCI8622_MODE_HALFTRIG,"Button",BS_AUTORADIOBUTTON,144,45,51,10
PUSHBUTTON "Set",IDC_BUTTON_ART_PCI8622_SET_MODE,147,62,50,14
PUSHBUTTON "Start",IDC_BUTTON_ART_PCI8622_START,213,62,34,14
PUSHBUTTON "Read Once",IDC_BUTTON_ART_PCI8622_READ_DATA,291,62,47,14
PUSHBUTTON "Stop",IDC_BUTTON_ART_PCI8622_STOP,253,62,34,14
PUSHBUTTON "Clear all",IDC_BUTTON_ART_PCI8622_CLEAR_LOG,351,163,38,14
PUSHBUTTON "Exit",IDCANCEL,347,264,50,14 PUSHBUTTON "Exit",IDCANCEL,347,264,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 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 GROUPBOX "PCI Sample Mode",IDC_STATIC,20,15,187,65
PUSHBUTTON "Read",IDC_BUTTON_ART_PCI8622_READ_DATA,267,41,50,14 GROUPBOX "PCI Sample Operate",IDC_STATIC,209,15,136,65
GROUPBOX "Machine",-1,20,15,325,65 EDITTEXT IDC_EDIT_ART_PCI8622_READ_TIMES,271,33,40,14,ES_AUTOHSCROLL
PUSHBUTTON "Set",IDC_BUTTON_ART_PCI8622_SET_MODE,65,43,50,14 LTEXT "Read Times",IDC_STATIC,219,36,38,8
LTEXT "Data Number",IDC_STATIC,33,64,43,8
EDITTEXT IDC_EDIT_ART_PCI8622_GET_DATA_NUMBER,87,62,40,14,ES_AUTOHSCROLL
END END
@@ -992,9 +1003,9 @@ BEGIN
IDD_SO7_OPTION_DIALOG, DIALOG IDD_SO7_OPTION_DIALOG, DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 310 RIGHTMARGIN, 275
TOPMARGIN, 6 TOPMARGIN, 6
BOTTOMMARGIN, 162 BOTTOMMARGIN, 156
END END
IDD_SO7_VIDEOCARD_SDK3000, DIALOG IDD_SO7_VIDEOCARD_SDK3000, DIALOG
@@ -61,8 +61,8 @@ BOOL CSetSo7MotionConfig::OnInitDialog()
} }
UpdateLabelName(); UpdateLabelName();
UpdateDataValue(); UpdateDataValue();
m_ConfigList.SetEditableItemRange(0,22,2,2); m_ConfigList.SetEditableItemRange(0,23,2,2);
m_ConfigList.SetColorStyleItemRange(0,24,0,3); m_ConfigList.SetColorStyleItemRange(0,25,0,3);
return TRUE; return TRUE;
} }
@@ -167,6 +167,12 @@ void CSetSo7MotionConfig::UpdateLabelName()
m_ConfigList.SetItemText(iRow,iCol+2,cStr); m_ConfigList.SetItemText(iRow,iCol+2,cStr);
iRow++; iRow++;
cStr=L"FOOT_SWITCH_ENABLE";
m_ConfigList.SetItemText(iRow,iCol,cStr);
cStr=L"脚踏开关功能(接探针口);0:禁用,1:使能;默认值:0";
m_ConfigList.SetItemText(iRow,iCol+2,cStr);
iRow++;
cStr=L"JOYSTICK_ENABLE"; cStr=L"JOYSTICK_ENABLE";
m_ConfigList.SetItemText(iRow,iCol,cStr); m_ConfigList.SetItemText(iRow,iCol,cStr);
cStr=L"摇杆功能;0:禁用,1:使能;默认值:0"; cStr=L"摇杆功能;0:禁用,1:使能;默认值:0";
@@ -258,6 +264,8 @@ void CSetSo7MotionConfig::UpdateDataValue()
m_ConfigList.SetItemText(iRow++,iCol,cStr); m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_TouchProbeEnable); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_TouchProbeEnable);
m_ConfigList.SetItemText(iRow++,iCol,cStr); 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); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable);
m_ConfigList.SetItemText(iRow++,iCol,cStr); m_ConfigList.SetItemText(iRow++,iCol,cStr);
cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable); cStr.Format(_T("%d"),m_pSO7_Proto->g_machine.s_machine_config.motion.m_DebugOutputEnable);
@@ -355,6 +363,10 @@ void CSetSo7MotionConfig::SaveDataValue()
iRow++; iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol); cStr=m_ConfigList.GetItemText(iRow,iCol);
cTemp=T2A(cStr); 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); m_pSO7_Proto->g_machine.s_machine_config.motion.m_JoyStickEnable=atoi(cTemp);
iRow++; iRow++;
cStr=m_ConfigList.GetItemText(iRow,iCol); cStr=m_ConfigList.GetItemText(iRow,iCol);
@@ -18,6 +18,8 @@ IMPLEMENT_DYNAMIC(CSo7_Art_PCI8622, CDialog)
: CDialog(CSo7_Art_PCI8622::IDD, pParent) : CDialog(CSo7_Art_PCI8622::IDD, pParent)
{ {
m_MsgCnts=0; m_MsgCnts=0;
m_iReadTimes=0;
m_iReadTimesCnts=0;
} }
CSo7_Art_PCI8622::~CSo7_Art_PCI8622() CSo7_Art_PCI8622::~CSo7_Art_PCI8622()
@@ -68,7 +70,9 @@ BOOL CSo7_Art_PCI8622::OnInitDialog()
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 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(); m_pART_PCI8622->Init();
return TRUE; // return TRUE unless you set the focus to a control 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() 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() 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() 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() void CSo7_Art_PCI8622::OnBnClickedButtonArtPci8622Stop()
{ {
KillTimer(1); 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) void CSo7_Art_PCI8622::GetData(BOOL _BShow)
@@ -155,19 +229,21 @@ void CSo7_Art_PCI8622::OnTimer(UINT_PTR nIDEvent)
{ {
case 1: case 1:
{ {
bool bExit(false); m_iReadTimesCnts++;
if (bExit) if (m_iReadTimesCnts>m_iReadTimes)
{ {
KillTimer(1); KillTimer(1);
m_pART_PCI8622->StopSampleData();
GetDlgItem(IDC_BUTTON_ART_PCI8622_START)->EnableWindow(TRUE);
}
else
{
GetData();
} }
GetData();
break; break;
} }
} }
CDialog::OnTimer(nIDEvent); CDialog::OnTimer(nIDEvent);
} }
//===================================================================================== //=====================================================================================
@@ -23,6 +23,8 @@ protected:
CString m_csMsg; CString m_csMsg;
CEdit m_edMSG; CEdit m_edMSG;
int m_MsgCnts; int m_MsgCnts;
int m_iReadTimes;
int m_iReadTimesCnts;
void GetData(BOOL _BShow=FALSE); void GetData(BOOL _BShow=FALSE);
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput); void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
public: public:
@@ -597,6 +597,7 @@
#define IDC_RADIO_MOVE_TO_ABSOLUTE 1489 #define IDC_RADIO_MOVE_TO_ABSOLUTE 1489
#define IDC_RADIO6 1490 #define IDC_RADIO6 1490
#define IDC_RADIO_MOVE_TO_RELATIVE 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_MOVING_X 1493
#define IDC_BUTTON_STATUS_HOME_X 1494 #define IDC_BUTTON_STATUS_HOME_X 1494
#define IDC_BUTTON_STATUS_MOVING_Y 1495 #define IDC_BUTTON_STATUS_MOVING_Y 1495
@@ -899,6 +900,7 @@
#define IDC_RADIO2 1805 #define IDC_RADIO2 1805
#define IDC_RADIO_READ_OUTPUT_PORT 1805 #define IDC_RADIO_READ_OUTPUT_PORT 1805
#define IDC_RADIO_SO7_MOVE_SPEED_GEAR2 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_MACHINE_TESASTARE 1806
#define IDC_RADIO_READ_OUTPUT_PORT2 1806 #define IDC_RADIO_READ_OUTPUT_PORT2 1806
#define IDC_EDIT_MOVETO_DEG 1807 #define IDC_EDIT_MOVETO_DEG 1807
@@ -973,8 +975,13 @@
#define IDC_EDIT_ART_PCI8622_LOG 1846 #define IDC_EDIT_ART_PCI8622_LOG 1846
#define IDC_EDIT_R1_CURRENT_POSITION 1847 #define IDC_EDIT_R1_CURRENT_POSITION 1847
#define IDC_BUTTON_ART_PCI8622_CLEAR_LOG 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_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 IDC_BUTTON_DIY_EXIT_BUTTON 32740
#define ID_EDIT_SO7_CONFIG_MOTION 32741 #define ID_EDIT_SO7_CONFIG_MOTION 32741
@@ -984,7 +991,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 191 #define _APS_NEXT_RESOURCE_VALUE 191
#define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1848 #define _APS_NEXT_CONTROL_VALUE 1854
#define _APS_NEXT_SYMED_VALUE 104 #define _APS_NEXT_SYMED_VALUE 104
#endif #endif
#endif #endif