📄 running.cpp
字号:
m=m/2;
m_ind_j++;
}
if(error>0)
{
// StopRun();
// WriteLines(m_ind_i);
OK=FALSE;
}
return OK;
}
*/
BOOL CRunning::ByteToMapCheck(BYTE data)// old version, not used now
{
BOOL OK=TRUE;
int bit;
int m=0x80;
int error=0;
for(int i=0;i<8;i++)
{
bit=data&m;
if(bit!=0)
bit=1;
BitToMap(bit);
// int bit_i=GetBit(0); // check latch_register data
int bit_i=GetBit(1); // check shift_register data
if(bit_i!=bit) // methord 1: solftware compare
{
error++;
m_ErrorRecord=m_WritePointer.j._int;
}
// if(GetError()==0) // methord 2: hardware compare
// error++;
m=m/2;
m_ind_j++;
}
if(error>3) //0
{
// StopRun();
// WriteLines(m_ind_i);
OK=FALSE;
}
return OK;
}
BOOL CRunning::ByteToMapCheck(BYTE data,int byte_index)
{
int bit;
int m=0x80;
BYTE data_return=0;
for(int i=0;i<8;i++) // send data byte and get return data, bit by bit,
{
data_return<<1;
bit=data&m;
if(bit!=0)
bit=1;
BitToMap(bit);
int bit_i=GetBit(0); // check latch_register data
// int bit_i=GetBit(1); // check shift_register data
data_return|=bit_i;
m>>1;
}
if(data_return!=data)
{
// m_data_error[byte_index]=1;
m_ErrorRecord=byte_index;
return FALSE;
}
return TRUE;
}
BOOL CRunning::ByteToMapCheckLast(BYTE data,int byte_index)
{
int bit;
int m=0x80;
BYTE data_return=0;
for(int i=0;i<8;i++) // send data byte and get return data, bit by bit,
{
data_return<<1;
bit=data&m;
if(bit!=0)
bit=1;
BitToMap(bit);
int bit_i=GetBit(0); // check latch_register data
// int bit_i=GetBit(1); // check shift_register data
data_return|=bit_i;
m>>1;
}
if(data_return!=m_data_last[byte_index])
{
// m_data_error[byte_index]=1;
m_ErrorRecord=byte_index;
m_data_last[byte_index]=data;
return FALSE;
}
m_data_last[byte_index]=data;
return TRUE;
}
void CRunning::BitToMap(int bit)
{
if(bit!=0)
bit=1;
int p=MAP_O;
MAPO map;
// map._bit.sdata=1;
map._bit.sclk=0;
map._bit.latch=1;
_outp(p,map._byte); //sclk=0
map._bit.sdata=bit;
_outp(p,map._byte); //sdata=bit
Delay1u();
map._bit.sclk=1;
_outp(p,map._byte); //sclk=1
Delay1u();
Delay1u();
Delay1u();
// Delay1u();
}
void CRunning::LatchToMap()
{
int p=MAP_O;
MAPO map;
map._bit.sdata=1;
map._bit.sclk=1;
map._bit.latch=0;
_outp(p,map._byte);
// for(int i=0;i<40;i++)
// Delay1u();
Delay();
map._bit.latch=1;
_outp(p,map._byte);
_outp(p,map._byte);
}
void CRunning::Delay1u() //0.5us
{
for(int i=0;i<100;i++)
{
}
}
void CRunning::InitialMap()
{
int p=MAP_O;
MAPO map;
map._bit.sdata=1;
map._bit.sclk=1;
map._bit.latch=1;
_outp(p,map._byte);
_outp(p,map._byte);
}
void CRunning::SendControl(int CurrentBackward,int CurrentShutle)
{
if(m_pWeaData==NULL)
return;
if(CurrentBackward==1) // 快车、慢车
{
m_bFisrtBackward=1;
SendControl(0);
return;
}
else // 退纬
{
if(m_bFisrtBackward==1) // 第1次退纬
{
m_bFisrtBackward=0;
if(CurrentShutle==0) // 第1次退纬,平中
{
SendControl(1);
return;
}
else // 第1次退纬,不平中
{
SendControl(2);
return;
}
}
else // 第2、3、4...次退纬
{
SendControl(1);
return;
}
}
}
void CRunning::SendControlBit(int i)
{
int p=ABB_O;
BYTE abb,k1,ls,control;
abb=m_pWeaData->Abb[i][0]&0x0f;
k1=m_pWeaData->ContInfo[i][2]&0x10; //k1
// ls=m_pWeaData->ContInfo[i][3]&0x10; //ls old ccjb format
// ls=ls*2;
ls=m_pWeaData->ContInfo[i][2]&0x08; //ls new ccjb format
ls=ls*4;
control=abb|k1|ls;
_outp(p,control);
}
void CRunning::SendControl(int nWeft)
{
int i;
switch(nWeft)
{
case 0:
i=m_WritePointer.i._int;
SendControlBit(i);
break;
case 1:
Forward1();
i=m_WritePointer.i._int;
SendControlBit(i);
Backward1();
break;
case 2:
Forward1();
Forward1();
i=m_WritePointer.i._int;
SendControlBit(i);
Backward1();
Backward1();
}
}
void CRunning::StopRun()
{
m_weao._bit.ready=0;
_outp(WEAVER_O,m_weao._byte);
// SendControl();
}
void CRunning::StopRun(int num)
{
m_weao._bit.ready=0;
_outp(WEAVER_O,m_weao._byte);
m_StopNum.Add(num);
}
void CRunning::StartRun()
{
m_weao._bit.ready=1;
_outp(WEAVER_O,m_weao._byte);
_outp(PC_CLEAR_FPGALOCK_O,1);
_outp(PC_CLEAR_FPGALOCK_O,1);
}
void CRunning::InitialWriterPointer()
{
m_WritePointer.i._int=m_WritePointer.j._int=0;
m_WritePointer.JobRepeat._int=m_WritePointer.WeaRepeat._int=0;
m_WritePointer.WeaIndex._int=0;
}
void CRunning::DelayMs(int nMs)
{
for(int i=0;i<2*nMs;i++)
Delay();
}
void CRunning::DelayUs(int nUs)
{
for(int i=0;i<2*nUs;i++)
Delay1u();
}
int CRunning::GetBit(BOOL bInvert)
{
int p=MAP_I;
MAPI mapi;
int bit;
mapi._byte=_inp(p);
bit=mapi._bit.sdata_i;
if(bInvert!=0)
bit=1-bit;
return bit;
}
BOOL CRunning::GetError()
{
int p=MAP_I;
MAPI mapi;
BOOL error;
mapi._byte=_inp(p);
error=mapi._bit.error;
return error;
}
void CRunning::GetRecord()
{
int p=PC_MEM_START_O;
m_WritePointer.WeaIndex._byte._l=_inp(p);
// m_WritePointer.WeaIndex._byte._l=0; //==============
p++;
m_WritePointer.WeaIndex._byte._h=_inp(p);
// m_WritePointer.WeaIndex._byte._h=0; //==============
p++;
m_WritePointer.i._byte._l=_inp(p);
// m_WritePointer.i._byte._l=0; //===============
p++;
m_WritePointer.i._byte._h=_inp(p);
// m_WritePointer.i._byte._h=0; //================
p++;
m_WritePointer.WeaRepeat._byte._l=_inp(p);
p++;
m_WritePointer.WeaRepeat._byte._h=_inp(p);
p++;
m_WritePointer.JobRepeat._byte._l=_inp(p);
p++;
m_WritePointer.JobRepeat._byte._h=_inp(p);
}
void CRunning::WriteError()
{
return;
/* CString fn;
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
LPCTSTR lpszFilter = ".txt Files(*..txt)|*.txt|All files(*.*)|*.*||";
CFileDialog dlg(FALSE,NULL,NULL,dwFlags,lpszFilter,NULL);
if(dlg.DoModal() == IDOK)
{
fn=dlg.GetPathName();
}
else
return;
CStdioFile file;
CFileException fe;
if (!file.Open(fn, CFile::modeCreate| CFile::modeWrite , &fe))
{
AfxMessageBox("File create error");
return;
}
CString buff_o,buff_i,temp1,temp2;
int k=0;
for(int i=0;i<2688/32;i++)
{
buff_o.Format("output, MaP %d:",i+1);
buff_i.Format("return, MaP %d:",i+1);
int errorline=0;
for(int j=0;j<32;j++)
{
temp1.Format("%d",m_data_o[k]);
int error=1-(m_data_i[k]^m_data_o[k]);
temp2.Format("%d",error);
if(error==1)
errorline=1;
buff_o=buff_o+temp1;
buff_i=buff_i+temp2;
k++;
}
if(errorline==1)
buff_i=buff_i+CString(" error");
buff_o=buff_o+CString("\n");
buff_i=buff_i+CString("\n");
file.WriteString(buff_o);
file.WriteString(buff_i);
}
file.Close();
*/}
void CRunning::Record()
{
int p=PC_MEM_START_O;
BYTE d=m_WritePointer.WeaIndex._byte._l;
_outp(p,d);
p++;
d=m_WritePointer.WeaIndex._byte._h;
_outp(p,d);
p++;
d=m_WritePointer.i._byte._l;
_outp(p,d);
p++;
d=m_WritePointer.i._byte._h;
_outp(p,d);
p++;
d=m_WritePointer.WeaRepeat._byte._l;
_outp(p,d);
p++;
d=m_WritePointer.WeaRepeat._byte._h;
_outp(p,d);
p++;
d=m_WritePointer.JobRepeat._byte._l;
_outp(p,d);
p++;
d=m_WritePointer.JobRepeat._byte._h;
_outp(p,d);
}
void POINTER::ClearPointer()
{
i._int=0;
j._int=0;
WeaIndex._int=0;
WeaRepeat._int=0;
JobRepeat._int=0;
}
POINTER& POINTER::operator=(const POINTER& pointer)
{
this->i._int=pointer.i._int;
this->j._int=pointer.j._int;
this->WeaIndex._int=pointer.WeaIndex._int;
this->WeaRepeat._int=pointer.WeaRepeat._int;
this->JobRepeat._int=pointer.JobRepeat._int;
return *this;
}
void CRunning::WriteLines()
{
if(m_data_o==NULL)
return;
if(m_data_i==NULL)
return;
CString fn;
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
LPCTSTR lpszFilter = ".txt Files(*..txt)|*.txt|All files(*.*)|*.*||";
CFileDialog dlg(FALSE,NULL,NULL,dwFlags,lpszFilter,NULL);
if(dlg.DoModal() == IDOK)
{
fn=dlg.GetPathName();
}
else
return;
CStdioFile file;
CFileException fe;
if (!file.Open(fn, CFile::modeCreate| CFile::modeWrite , &fe))
{
AfxMessageBox(IDS_OPEN_ERROR+g_language);
return;
}
CString buff_o,buff_i,temp1,temp2;
for(int line=0;line<SAVED_LINES;line++)
{
int k=0;
for(int i=0;i<2688/32;i++)
{
buff_i.Format("%d ",line);
buff_o.Format("%d ",line);
temp1.Format("output, MaP %d:",84-i);
temp2.Format("return, MaP %d:",84-i);
buff_o+=temp1;
buff_i+=temp2;
int errorline=0;
for(int j=0;j<32;j++)
{
BYTE bit_o=m_data_o[line][k];
if(bit_o>1)
bit_o=1;
// AfxMessageBox("bit_o>1!");
temp1.Format("%d",bit_o);
BYTE bit_i=m_data_i[line][k];
if(bit_i>1)
bit_i=1;
// AfxMessageBox("bit_i>1!");
int error=(bit_i^bit_o);
temp2.Format("%d",bit_i);
if(error==1)
errorline=1;
buff_o=buff_o+temp1;
buff_i=buff_i+temp2;
k++;
}
if(errorline==1)
buff_i=buff_i+CString(" error");
buff_o=buff_o+CString("\n");
buff_i=buff_i+CString("\n");
file.WriteString(buff_o);
file.WriteString(buff_i);
}
}
file.Close();
m_ind_i=0;
for(int i=0;i<SAVED_LINES;i++)
for(int j=0;j<2688;j++)
{
m_data_i[i][j]=0;
m_data_o[i][j]=0;
}
}
void CRunning::WriteLines(int nLine)
{
CString fn;
DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT;
LPCTSTR lpszFilter = ".txt Files(*..txt)|*.txt|All files(*.*)|*.*||";
CFileDialog dlg(FALSE,NULL,NULL,dwFlags,lpszFilter,NULL);
if(dlg.DoModal() == IDOK)
{
fn=dlg.GetPathName();
}
else
return;
CStdioFile file;
CFileException fe;
if (!file.Open(fn, CFile::modeCreate| CFile::modeWrite , &fe))
{
AfxMessageBox(IDS_OPEN_ERROR+g_language);
return;
}
CString buff_o,buff_i,temp1,temp2;
int line=nLine;
{
int k=0;
for(int i=0;i<2688/32;i++)
{
buff_i.Format("%d ",line);
buff_o.Format("%d ",line);
temp1.Format("output, MaP %d:",84-i);
temp2.Format("return, MaP %d:",84-i);
buff_o+=temp1;
buff_i+=temp2;
int errorline=0;
for(int j=0;j<32;j++)
{
BYTE bit_o=m_data_o[line][k];
if(bit_o>1)
bit_o=1;
temp1.Format("%d",bit_o);
BYTE bit_i=m_data_i[line][k];
if(bit_i>1)
bit_i=1;
// AfxMessageBox("bit_i>1!");
int error=(bit_i^bit_o);
temp2.Format("%d",bit_i);
if(error==1)
errorline=1;
buff_o=buff_o+temp1;
buff_i=buff_i+temp2;
k++;
}
if(errorline==1)
buff_i=buff_i+CString(" error");
buff_o=buff_o+CString("\n");
buff_i=buff_i+CString("\n");
file.WriteString(buff_o);
file.WriteString(buff_i);
}
}
file.Close();
/* m_ind_i=0;
for(int i=0;i<SAVED_LINES;i++)
for(int j=0;j<2688;j++)
{
m_data_i[i][j]=0;
m_data_o[i][j]=0;
}
*/}
/*int CRunning::GetErrorMap(int ErrorLine)// old version, not used now
{
int* rec;
int nErrMap=0;
rec=new int[84];
int line=ErrorLine;
int k=0;
for(int i=0;i<84;i++)
{
int errorline=0;
for(int j=0;j<32;j++)
{
BYTE bit_o=m_data_o[line][k];
if(bit_o>1)
bit_o=1;
BYTE bit_i=m_data_i[line][k];
if(bit_i>1)
bit_i=1;
int error=(bit_i^bit_o);
if(error==1)
errorline=1;
k++;
}
if(errorline==1) //save result in inverse order
rec[84-i-1]=1; // Map Error
else
rec[84-i-1]=0; // Map OK
}
for(i=0;i<84;i++)
{
if(rec[i]==1)
{
nErrMap=i+1;
break;
}
}
delete rec;
return nErrMap;
}
*/
int CRunning::GetErrorMap()
{
int nErrMap=(m_nLineByte-m_ErrorRecord-1)/4+1;
m_ErrorRecord=m_nLineByte;
return nErrMap;
/*
int nErrMap=0;
for(int i=m_nLineByte;i>0;i--)
{
if(m_data_error[i-1]!=0)
{
nErrMap=(m_nLineByte-i)/4+1;
for(int j=i;j>0;j--)
{
m_data_error[i-1]=0;
}
return nErrMap;
break;
}
}
return 0;
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -