完善ART PCI8622测试。

This commit is contained in:
TAO Cheng
2014-07-21 14:50:34 +08:00
parent 4bc4d0eb92
commit c1838204f2
14 changed files with 216 additions and 107 deletions
@@ -4812,15 +4812,15 @@ SSI_STATUS_MOTION CSO7_Proto::so7_SetDO(int Channel,BYTE bDOSts)
return SSI_STATUS_MOTION_NORMAL;
}
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_trig_para(char _cAxis,char _TrigMode,short _ParaNumber,short* _ParaData)
SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_trig_para(char _cAxis,char _TrigMode,long _ParaNumber,long* _ParaData)
{
short SetStartIndex(0);
short SetParaNumber(0);
long SetStartIndex(0);
long SetParaNumber(0);
do
{
if ((_ParaNumber-SetStartIndex)>20)
if ((_ParaNumber-SetStartIndex)>15)
{
SetParaNumber=20;
SetParaNumber=15;
}
else
{
@@ -4832,13 +4832,13 @@ SSI_STATUS_MOTION CSO7_Proto::so7_motion_set_trig_para(char _cAxis,char _TrigMod
return SSI_STATUS_MOTION_NORMAL;
}
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_trig_para(short _Index,char& _cAxis,char& _TrigMode,short& _ParaNumber,short& _ParaData)
SSI_STATUS_MOTION CSO7_Proto::so7_motion_get_trig_para(long _Index,char& _cAxis,char& _TrigMode,long& _ParaNumber,long& _ParaData)
{
_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(_Index);
_cAxis=g_machine.TrigPara.TrigPulseActiveAxis;
_TrigMode=g_machine.TrigPara.TrigPulseMethod;
_ParaNumber=static_cast<short>(g_machine.TrigPara.TrigTotalNo._long_);
_ParaData=static_cast<short>(g_machine.TrigPara.TrigReadPara._long_);
_ParaNumber=static_cast<long>(g_machine.TrigPara.TrigTotalNo._long_);
_ParaData=static_cast<long>(g_machine.TrigPara.TrigReadPara._long_);
return SSI_STATUS_MOTION_NORMAL;
}
@@ -6152,7 +6152,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_GET_SEQ_NUMBER()
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaIndex)
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(long ParaIndex)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
@@ -6160,13 +6160,15 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaI
g_machine.TrigPara.TrigReadIndex._long_=ParaIndex;
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_READ_TRIG_PULSE_PARA;
cBuff = (ParaIndex>>8) & 0x0ff;
cBuff = (ParaIndex>>16) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = cBuff;
cBuff = ParaIndex & 0x0ff;
cBuff = (ParaIndex>>8) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = cBuff;
cBuff = ParaIndex & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = cBuff;
ep_buff[EP_02_CMD_IDX]._size = 0x04;
ep_buff[EP_82_DATA_IDX]._size = 0x08;
ep_buff[EP_02_CMD_IDX]._size = 0x05;
ep_buff[EP_82_DATA_IDX]._size = 0x011;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
@@ -6175,41 +6177,62 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaI
return SSI_STATUS_MOTION_NORMAL;
}
//==============================================================
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,short StartIndex,short ParaNumber,short* Para)
SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,long StartIndex,long ParaNumber,long* Para)
{
WaitForSingleObject(g_hEP02_Serial_Mutex, INFINITE);
memset(ep_buff[EP_02_CMD_IDX]._buffer, 0x00, MAX_BUFF_SIZE);
char cBuff(0);
short sPara(0);
long sPara(0);
int index(0);
g_machine.TrigPara.TrigPulseActiveAxis=ActiveAxis;
*(ep_buff[EP_02_CMD_IDX]._buffer) = CT_DATA;
*(ep_buff[EP_02_CMD_IDX]._buffer+1) = CT_WRITE_TRIG_PULSE_PARA;
*(ep_buff[EP_02_CMD_IDX]._buffer+2) = ActiveAxis;
*(ep_buff[EP_02_CMD_IDX]._buffer+3) = TrigMode;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_DATA;
index++;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = CT_WRITE_TRIG_PULSE_PARA;
index++;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = ActiveAxis;
index++;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = TrigMode;
index++;
cBuff = (StartIndex>>16) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = (StartIndex>>8) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+4) = cBuff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = StartIndex & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+5) = cBuff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = (ParaNumber>>16) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = (ParaNumber>>8) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+6) = cBuff;
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
cBuff = ParaNumber & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+7) = cBuff;
int j=8;
for (short i=StartIndex;i<(StartIndex+ParaNumber);i++)
*(ep_buff[EP_02_CMD_IDX]._buffer+index) = cBuff;
index++;
int j=index;
for (long i=StartIndex;i<(StartIndex+ParaNumber);i++)
{
if (Para[i]<0)
{
sPara=-Para[i];
cBuff = (sPara>>8) & 0x0ff;
cBuff = (sPara>>16) & 0x0ff;
cBuff = cBuff | 0x80;
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
j++;
cBuff = (sPara>>8) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
j++;
cBuff = sPara & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
j++;
}
else
{
cBuff = (Para[i]>>16) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
j++;
cBuff = (Para[i]>>8) & 0x0ff;
*(ep_buff[EP_02_CMD_IDX]._buffer+j) = cBuff;
j++;
@@ -6219,7 +6242,7 @@ SSI_STATUS_MOTION CSO7_Proto::_send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char Activ
}
}
ep_buff[EP_02_CMD_IDX]._size = j;
ep_buff[EP_82_DATA_IDX]._size = 0x02;
ep_buff[EP_82_DATA_IDX]._size = 0x03;
g_hEP02_Thread_State=THREAD_RUNNING_STATE1;
g_hEP8x_Thread_State=THREAD_RUNNING_STATE2;
@@ -6691,28 +6714,31 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_TRIG_PULSE_PARA()
index++;
g_machine.TrigPara.TrigPulseMethod=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigTotalNo._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigTotalNo._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigTotalNo._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigTotalNo._char_[2]=0;
g_machine.TrigPara.TrigTotalNo._char_[3]=0;
index++;
g_machine.TrigPara.TrigCurIndex._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigCurIndex._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigCurIndex._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigCurIndex._char_[2]=0;
g_machine.TrigPara.TrigCurIndex._char_[3]=0;
index++;
g_machine.TrigPara.TrigReadPara._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigReadPara._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigReadPara._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigReadPara._char_[2]=0;
g_machine.TrigPara.TrigReadPara._char_[3]=0;
index++;
if (g_machine.TrigPara.TrigReadPara._long_>32768)
if (g_machine.TrigPara.TrigReadPara._char_[2]&0x80)
{
g_machine.TrigPara.TrigReadPara._long_-=32768;
g_machine.TrigPara.TrigReadPara._long_*=-1;
g_machine.TrigPara.TrigReadPara._char_[2]&=0x7f;
g_machine.TrigPara.TrigReadPara._long_ *=-1;
}
return SSI_STATUS_MOTION_NORMAL;
}
@@ -6720,10 +6746,11 @@ SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_READ_TRIG_PULSE_PARA()
SSI_STATUS_MOTION CSO7_Proto::_process_SO7_CMD_WRITE_TRIG_PULSE_PARA()
{
int index(0);
g_machine.TrigPara.TrigTotalNo._char_[2]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigTotalNo._char_[1]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
index++;
g_machine.TrigPara.TrigTotalNo._char_[0]=*(ep_buff[EP_82_DATA_IDX]._buffer+index);
g_machine.TrigPara.TrigTotalNo._char_[2]=0;
g_machine.TrigPara.TrigTotalNo._char_[3]=0;
index++;
return SSI_STATUS_MOTION_NORMAL;
@@ -104,7 +104,8 @@ enum ESO7_WRITE_FPGA_DATA_ADDR
E_WRITE_TRIG_LSB=10,
E_WRITE_ACCURA_ERR=11,
E_WRITE_TRIG_MSB=12,
E_WRITE_TRIG_HOLDTIME=13,
E_WRITE_TRIG_MSBII=13,
E_WRITE_TRIG_HOLDTIME=14,
E_WRITE_TOTAL=16
};
enum ESO7_CONTROLLER_IO_ADDR
@@ -511,8 +512,8 @@ public:
SSI_STATUS_MOTION so7_GetDIO(int Channel,BYTE& bDISts);
SSI_STATUS_MOTION so7_SetDO(int Channel,BYTE bDOSts);
SSI_STATUS_MOTION so7_motion_set_trig_para(char _cAxis,char _TrigMode,short _ParaNumber,short* _ParaData);
SSI_STATUS_MOTION so7_motion_get_trig_para(short _Index,char& _cAxis,char& _TrigMode,short& _ParaNumber,short& _ParaData);
SSI_STATUS_MOTION so7_motion_set_trig_para(char _cAxis,char _TrigMode,long _ParaNumber,long* _ParaData);
SSI_STATUS_MOTION so7_motion_get_trig_para(long _Index,char& _cAxis,char& _TrigMode,long& _ParaNumber,long& _ParaData);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_X(char SpeedGear);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_MOVE_Y(char SpeedGear);
@@ -566,8 +567,8 @@ public:
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_CONSTANT_SPEED(int iSpeed,char axis_type,char xyz_gear);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_SET_SEQ_NUMBER();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_GET_SEQ_NUMBER();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(short ParaIndex);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,short StartIndex,short ParaNumber,short* Para);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_READ_TRIG_PULSE_PARA(long ParaIndex);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_WRITE_TRIG_PULSE_PARA(char ActiveAxis,char TrigMode,long StartIndex,long ParaNumber,long* Para);
SSI_STATUS_MOTION _send_cmd_SO7_CMD_TRIG_PULSE_START();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_TRIG_PULSE_STOP();
SSI_STATUS_MOTION _send_cmd_SO7_CMD_IO_PURPOSE(BOOL _bEnTrigIO);