完善Tesa star e测试功能。

This commit is contained in:
TAO Cheng
2013-12-13 08:53:55 +08:00
parent 70611fea3b
commit d060bf56dd
7 changed files with 86 additions and 81 deletions
@@ -56,6 +56,7 @@ CPSerial::CPSerial()
m_TXTimeout = CS_DEFAULT_TX_TIMEOUT;
m_iRecvState=FALSE;
m_iRecvBytes=0;
memset(m_RecvData,0,MAX_RECIEVE_BUFFER_SIZE);
// Everything else set to NULL
m_ThreadHandle = NULL;
//m_TXHead = NULL;
@@ -487,24 +488,38 @@ void CPSerial::OnReceive()
char s[MAX_RECIEVE_BUFFER_SIZE]={0};
s[1]='\0';
CurrentPointer = 0;
int num = ReadPort(s, MAX_RECIEVE_BUFFER_SIZE);
if ((num>0) && (num<MAX_RECIEVE_BUFFER_SIZE))
{
if(m_IsWrtingData)
{
memset(m_RecvData,0,MAX_RECIEVE_BUFFER_SIZE);
m_IsWrtingData=FALSE;
m_iRecvBytes=0;
if (m_HandShake==CS_HANDSHAKE_FOR_TRESASTR_E)
{
int num = ReadPort(s, MAX_RECIEVE_BUFFER_SIZE);
if ((num>0) && (num<MAX_RECIEVE_BUFFER_SIZE))
{
if(m_IsWrtingData)
{
memset(m_RecvData,0,MAX_RECIEVE_BUFFER_SIZE);
m_IsWrtingData=FALSE;
m_iRecvBytes=0;
}
TRACE1("----RECV%d----\r\n",num);
TRACE3("%02X %02X %02X ",s[0],s[1],s[2]);
TRACE3("%02X %02X %02X ",s[3],s[4],s[5]);
TRACE3("%02X %02X %02X\r\n",s[6],s[7],s[8]);
for(int i=0;i<num;i++)
{
m_RecvData[m_iRecvBytes++]=s[i];
}
m_iRecvState=TRUE;
}
TRACE1("----RECV%d----\r\n",num);
TRACE3("%02X %02X %02X ",s[0],s[1],s[2]);
TRACE3("%02X %02X %02X ",s[3],s[4],s[5]);
TRACE3("%02X %02X %02X\r\n",s[6],s[7],s[8]);
for(int i=0;i<num;i++)
}
else
{
int num = ReadPort(s, 252);
if ((num>0) && (num<MAX_RECIEVE_BUFFER_SIZE))
{
m_RecvData[m_iRecvBytes++]=s[i];
memset(m_RecvData,0,m_iRecvBytes);
memcpy(m_RecvData,s, num);
m_iRecvBytes=num;
m_iRecvState=TRUE;
}
m_iRecvState=TRUE;
}
//LineReceive(s, num);
}
+21 -42
View File
@@ -6,64 +6,43 @@ const int MAX_RETRY_CNTS=5;
CTesaStarE::CTesaStarE(void)
{
SerialComPort=1;
m_pSerial=NULL;
_bReading=FALSE;
bEnComm=false;
m_TesaStarEAngle[0]=(double)0.0;
m_TesaStarEAngle[1]=(double)0.0;
memset(m_RecvData,0,sizeof(m_RecvData));
}
//==================================================================
CTesaStarE::~CTesaStarE(void)
{
if (this->m_pSerial)
{
this->m_pSerial->Close();
delete this->m_pSerial;
this->m_pSerial=NULL;
}
}
//==================================================================
BOOL CTesaStarE::Initialization(bool _bInitConfig)
{
BOOL status(FALSE);
if (!m_pSerial)
{
m_pSerial = new CPSerial();
}
if (_bInitConfig)
{
LoadConfig();
}
if (m_pSerial)
m_pSerial.SetPort(SerialComPort,TESASTARE_BAUD,TESASTARE_PARITY,TESASTARE_BITS,TESASTARE_STOPBITS,TESASTARE_HandShake);
if(m_pSerial.Open())
{
m_pSerial->SetPort(SerialComPort,TESASTARE_BAUD,TESASTARE_PARITY,TESASTARE_BITS,TESASTARE_STOPBITS,TESASTARE_HandShake);
if(m_pSerial->Open())
{
bEnComm=TRUE;
status=CheckStatus();
status=SetPassword();
}
else
{
status=FALSE;
bEnComm=FALSE;
delete m_pSerial;
m_pSerial=NULL;
}
bEnComm=TRUE;
status=CheckStatus();
status=SetPassword();
}
else
{
status=FALSE;
bEnComm=FALSE;
}
return status;
}
//==================================================================
BOOL CTesaStarE::Unload()
{
if (m_pSerial)
{
m_pSerial->Close();
delete m_pSerial;
m_pSerial=NULL;
}
m_pSerial.Close();
Sleep(500);
return TRUE;
}
//==================================================================
@@ -434,7 +413,7 @@ BOOL CTesaStarE::_Send_Command(const char* _SendData,DWORD _SendDataLength)
if (bEnComm)
{
DWORD iWriteByte(0);
iWriteByte=m_pSerial->Send(_SendData,_SendDataLength);
iWriteByte=m_pSerial.Send(_SendData,_SendDataLength);
}
return rStatus;
};
@@ -446,26 +425,26 @@ BOOL CTesaStarE::_Receive_Data(char* _SendData,DWORD& _RecvDataLength)
{
INT iRetrys(0);
CString csTemp;
while(!m_pSerial->m_iRecvState && iRetrys<20)
while(!m_pSerial.m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (m_pSerial->m_iRecvState)
if (m_pSerial.m_iRecvState)
{
if(m_pSerial->m_RecvData[0]==0)
if(m_pSerial.m_RecvData[0]==0)
{
m_pSerial->m_iRecvState=FALSE;
m_pSerial.m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSerial->m_iRecvState && iRetrys2<60)
while(!m_pSerial.m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
}
memcpy(_SendData,m_pSerial->m_RecvData,m_pSerial->m_iRecvBytes);
_RecvDataLength=m_pSerial->m_iRecvBytes;
m_pSerial->m_iRecvState=FALSE;
memcpy(_SendData,m_pSerial.m_RecvData,m_pSerial.m_iRecvBytes);
_RecvDataLength=m_pSerial.m_iRecvBytes;
m_pSerial.m_iRecvState=FALSE;
rStatus=TRUE;
}
else
@@ -17,8 +17,8 @@ public:
void LoadConfig();
BOOL SetTesaStarEAngle(const int& _AngleNumber,double* _Angle,bool _bReturnPosInfo=false);
BOOL GetTesaStarEAngle(int& _AngleNumber,double* _Angle);
CPSerial* m_pSerial;
protected:
CPSerial m_pSerial;
private:
BOOL ReadTesaStarEAngle();
BOOL CheckStatus();
BOOL SetPassword();
@@ -2394,3 +2394,8 @@ Unable to open device 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.
@@ -138,3 +138,8 @@ Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
Destruct Cso7_Proto.
@@ -116,6 +116,7 @@ void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
DWORD iSendDataLength(0);
DWORD iWriteByte(0);
CPSerial *pSerial = &(g_pTesaStarE->m_pSerial);
if (m_SendType==0)
{
@@ -126,7 +127,7 @@ void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
{
bSendData[i]=(BYTE)strtol(cSendData+i*3,&stop,16);
}
iWriteByte=g_pTesaStarE->m_pSerial->Send((const char*)bSendData,iSendDataLength);
iWriteByte=pSerial->Send((const char*)bSendData,iSendDataLength);
}
else
{
@@ -134,7 +135,7 @@ void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
csSendData+=_T("\r");
cSendData=T2A(csSendData);
iSendDataLength=csSendData.GetLength();
iWriteByte=g_pTesaStarE->m_pSerial->Send(cSendData,iSendDataLength);
iWriteByte=pSerial->Send(cSendData,iSendDataLength);
}
m_OutMessage=_T("[Send] ")+csSendData;
@@ -150,29 +151,29 @@ void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
do
{
iRetrys=0;
while(!g_pTesaStarE->m_pSerial->m_iRecvState && iRetrys<20)
while(!pSerial->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (g_pTesaStarE->m_pSerial->m_iRecvState)
if (pSerial->m_iRecvState)
{
if(g_pTesaStarE->m_pSerial->m_RecvData[0]==0)
if(pSerial->m_RecvData[0]==0)
{
g_pTesaStarE->m_pSerial->m_iRecvState=FALSE;
pSerial->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!g_pTesaStarE->m_pSerial->m_iRecvState && iRetrys2<60)
while(!pSerial->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
m_OutMessage=_T("[Recv]");
memcpy(m_RecvData,g_pTesaStarE->m_pSerial->m_RecvData, g_pTesaStarE->m_pSerial->m_iRecvBytes);
iRecvBytes=g_pTesaStarE->m_pSerial->m_iRecvBytes;
TRACE1("====RECV%d====\r\n",g_pTesaStarE->m_pSerial->m_iRecvBytes);
TRACE3("%02X %02X %02X ",g_pTesaStarE->m_pSerial->m_RecvData[0],g_pTesaStarE->m_pSerial->m_RecvData[1],g_pTesaStarE->m_pSerial->m_RecvData[2]);
TRACE3("%02X %02X %02X ",g_pTesaStarE->m_pSerial->m_RecvData[3],g_pTesaStarE->m_pSerial->m_RecvData[4],g_pTesaStarE->m_pSerial->m_RecvData[5]);
TRACE3("%02X %02X %02X\r\n",g_pTesaStarE->m_pSerial->m_RecvData[6],g_pTesaStarE->m_pSerial->m_RecvData[7],g_pTesaStarE->m_pSerial->m_RecvData[8]);
memcpy(m_RecvData,pSerial->m_RecvData, pSerial->m_iRecvBytes);
iRecvBytes=pSerial->m_iRecvBytes;
TRACE1("====RECV%d====\r\n",pSerial->m_iRecvBytes);
TRACE3("%02X %02X %02X ",pSerial->m_RecvData[0],pSerial->m_RecvData[1],pSerial->m_RecvData[2]);
TRACE3("%02X %02X %02X ",pSerial->m_RecvData[3],pSerial->m_RecvData[4],pSerial->m_RecvData[5]);
TRACE3("%02X %02X %02X\r\n",pSerial->m_RecvData[6],pSerial->m_RecvData[7],pSerial->m_RecvData[8]);
for (INT i=0;i<iRecvBytes;i++)
{
if((BYTE)m_RecvData[i]>32)
@@ -188,13 +189,13 @@ void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
else
{
m_OutMessage=_T("[Recv]");
memcpy(m_RecvData,g_pTesaStarE->m_pSerial->m_RecvData, g_pTesaStarE->m_pSerial->m_iRecvBytes);
iRecvBytes=g_pTesaStarE->m_pSerial->m_iRecvBytes;
memcpy(m_RecvData,pSerial->m_RecvData, pSerial->m_iRecvBytes);
iRecvBytes=pSerial->m_iRecvBytes;
TRACE1("====RECV%d====\r\n",g_pTesaStarE->m_pSerial->m_iRecvBytes);
TRACE3("%02X %02X %02X ",g_pTesaStarE->m_pSerial->m_RecvData[0],g_pTesaStarE->m_pSerial->m_RecvData[1],g_pTesaStarE->m_pSerial->m_RecvData[2]);
TRACE3("%02X %02X %02X ",g_pTesaStarE->m_pSerial->m_RecvData[3],g_pTesaStarE->m_pSerial->m_RecvData[4],g_pTesaStarE->m_pSerial->m_RecvData[5]);
TRACE3("%02X %02X %02X\r\n",g_pTesaStarE->m_pSerial->m_RecvData[6],g_pTesaStarE->m_pSerial->m_RecvData[7],g_pTesaStarE->m_pSerial->m_RecvData[8]);
TRACE1("====RECV%d====\r\n",pSerial->m_iRecvBytes);
TRACE3("%02X %02X %02X ",pSerial->m_RecvData[0],pSerial->m_RecvData[1],pSerial->m_RecvData[2]);
TRACE3("%02X %02X %02X ",pSerial->m_RecvData[3],pSerial->m_RecvData[4],pSerial->m_RecvData[5]);
TRACE3("%02X %02X %02X\r\n",pSerial->m_RecvData[6],pSerial->m_RecvData[7],pSerial->m_RecvData[8]);
for (INT i=0;i<iRecvBytes;i++)
{
@@ -209,15 +210,15 @@ void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
m_StatusBar.SetText(m_OutMessage, 2, 0);
}
g_pTesaStarE->m_pSerial->m_iRecvState=FALSE;
pSerial->m_iRecvState=FALSE;
}
else
{
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
BYTE bSendData[MAX_OUTPUT_BUFFER_SIZE]={0x0d};
iWriteByte=g_pTesaStarE->m_pSerial->Send((const char*)bSendData,1);
iWriteByte=pSerial->Send((const char*)bSendData,1);
}
iRecvBytes=g_pTesaStarE->m_pSerial->m_iRecvBytes;
iRecvBytes=pSerial->m_iRecvBytes;
if(iRecvBytes<3)
{
iRecvBytes=3;