增加手动机测试,可正常读取数据。

This commit is contained in:
TAO Cheng
2013-06-14 16:29:58 +08:00
parent f769cef71a
commit ce02b9364f
8 changed files with 542 additions and 35 deletions
@@ -57,6 +57,7 @@ CPSerial::CPSerial()
m_iRecvState=FALSE;
m_csRecv=_T("");
m_iRecvByte=0;
m_iReadDataNum=255;
// Everything else set to NULL
m_ThreadHandle = NULL;
//m_TXHead = NULL;
@@ -488,7 +489,7 @@ void CPSerial::OnReceive()
CurrentPointer = 0;
int num=0;
num = ReadPort(s, 255);
num = ReadPort(s, m_iReadDataNum);
//for (int i=0;i<num;i++)
//{
// csTemp
@@ -187,6 +187,7 @@ public:
BOOL m_iRecvState;
CString m_csRecv;
INT m_iRecvByte;
int m_iReadDataNum;
char m_RecvData[255];
};
@@ -1114,3 +1114,48 @@ Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
Construct Cso7_Proto.
Destruct Cso7_Proto.
@@ -587,42 +587,39 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM
CAPTION "Manual Machine"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
CONTROL "CMD1",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,95,30,35,10
CONTROL "CMD2",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD2,"Button",BS_AUTORADIOBUTTON,136,30,35,10
CONTROL "CMD3",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD3,"Button",BS_AUTORADIOBUTTON,177,30,35,10
CONTROL "CMD4",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD4,"Button",BS_AUTORADIOBUTTON,218,30,35,10
CONTROL "HEX",IDC_RADIO_SO7_MANUAL_MACHINE_SEND_DATA_TYPE_HEX,
"Button",BS_AUTORADIOBUTTON | WS_GROUP,271,45,29,10
CONTROL "ANSCII",IDC_RADIO_SO7_MANUAL_MACHINE_SEND_DATA_TYPE_ANSCII,
"Button",BS_AUTORADIOBUTTON,271,57,39,10
PUSHBUTTON "Send",IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA,267,74,50,14
PUSHBUTTON "Exit",IDCANCEL,299,292,50,14
PUSHBUTTON "Start Machine",IDC_BUTTON_SO7_MANUAL_MACHINE_START_MACHINE,24,39,50,14
PUSHBUTTON "Stop Machine",IDC_BUTTON_SO7_MANUAL_MACHINE_STOP_MACHINE,24,65,50,14
GROUPBOX "Position",IDC_STATIC,19,99,310,107
GROUPBOX "Send Data",IDC_STATIC,86,18,243,76
PUSHBUTTON "Send",IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA,267,74,50,14
EDITTEXT IDC_EDIT_SO7_MANUAL_MACHINE_DATA,87,44,173,48,ES_AUTOHSCROLL
CONTROL "HEX",IDC_RADIO_SO7_MANUAL_MACHINE_SEND_DATA_TYPE_HEX,
"Button",BS_AUTORADIOBUTTON | WS_GROUP,271,45,29,10
CONTROL "ANSCII",IDC_RADIO_SO7_MANUAL_MACHINE_SEND_DATA_TYPE_ANSCII,
"Button",BS_AUTORADIOBUTTON,271,57,39,10
CONTROL "CMD1",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD1,"Button",BS_AUTORADIOBUTTON | WS_GROUP,95,30,35,10
CONTROL "CMD2",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD2,"Button",BS_AUTORADIOBUTTON,140,30,35,10
CONTROL "CMD3",IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD3,"Button",BS_AUTORADIOBUTTON,185,30,35,10
GROUPBOX "Machine Control",IDC_STATIC,17,18,62,75
EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,201,137,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,201,155,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,201,173,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_X_SCALE_COEFFICIENT,131,137,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,131,155,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,131,173,54,12,ES_CENTER | ES_AUTOHSCROLL
LTEXT "x",IDC_STATIC,36,138,8,11
LTEXT "y",IDC_STATIC,36,155,8,11
LTEXT "z",IDC_STATIC,36,174,8,11
EDITTEXT IDC_EDIT_X_AXIS,47,137,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Y_AXIS,47,155,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Z_AXIS,47,173,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_X_POSITION_58,122,137,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Y_POSITION_58,122,155,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Z_POSITION_58,122,173,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
LTEXT "Scale Pulse",IDC_STATIC,56,119,36,8
LTEXT "mm",IDC_STATIC,143,119,12,8
LTEXT "Scale resolution",IDC_STATIC,205,119,51,11
EDITTEXT IDC_EDIT_X_POSITION_58,52,137,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Y_POSITION_58,52,155,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Z_POSITION_58,52,173,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
LTEXT "mm",IDC_STATIC,73,119,12,8
LTEXT "Scale resolution",IDC_STATIC,135,119,51,11
PUSHBUTTON "Clear All",IDC_BUTTON_SO7_MANUAL_MACHINE_CLEAR_MSG,280,224,40,17
PUSHBUTTON "Save as...",IDC_BUTTON_SO7_MANUAL_MACHINE_SAVE_MSG,280,249,40,17
EDITTEXT IDC_EDIT_MANUAL_MACHINE_MSG,19,216,254,63,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL
CONTROL "Continuous",IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,271,136,49,10
PUSHBUTTON "Read Pos",IDC_BUTTON_SO7_MANUAL_MACHINEREAD_POS,268,155,50,14
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,220,141,49,10
PUSHBUTTON "Read Pos",IDC_BUTTON_SO7_MANUAL_MACHINEREAD_POS,217,160,50,14
END
IDD_SO7_UTIL_VERIFICATION_ALGORITHM DIALOGEX 0, 0, 617, 254
@@ -32,6 +32,7 @@ void CSo7_Manual_Machine::DoDataExchange(CDataExchange* pDX)
BEGIN_MESSAGE_MAP(CSo7_Manual_Machine, CDialog)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_SO7_MANUAL_MACHINE_START_MACHINE, &CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStartMachine)
ON_BN_CLICKED(IDC_BUTTON_SO7_MANUAL_MACHINE_STOP_MACHINE, &CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStopMachine)
ON_BN_CLICKED(IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD1, &CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd1)
@@ -46,6 +47,9 @@ BEGIN_MESSAGE_MAP(CSo7_Manual_Machine, CDialog)
ON_BN_CLICKED(IDC_BUTTON_SO7_MANUAL_MACHINE_CLEAR_MSG, &CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineClearMsg)
ON_BN_CLICKED(IDC_BUTTON_SO7_MANUAL_MACHINE_SAVE_MSG, &CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSaveMsg)
ON_BN_CLICKED(IDCANCEL, &CSo7_Manual_Machine::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BUTTON_SO7_MANUAL_MACHINEREAD_POS, &CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachinereadPos)
ON_BN_CLICKED(IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE, &CSo7_Manual_Machine::OnBnClickedCheckSo7ManualMachineReadPosContinue)
ON_BN_CLICKED(IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD4, &CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd4)
END_MESSAGE_MAP()
@@ -78,7 +82,9 @@ BOOL CSo7_Manual_Machine::OnInitDialog()
((CButton *)GetDlgItem(IDC_RADIO_SO7_MANUAL_MACHINE_SEND_DATA_TYPE_HEX))->SetCheck(TRUE);
((CButton *)GetDlgItem(IDC_RADIO_SO7_MANUAL_MACHINE_SEND_DATA_TYPE_ANSCII))->SetCheck(FALSE);
m_SendType=HEXADECIMAL;
GetDlgItem(IDC_EDIT_X_SCALE_COEFFICIENT)->SetWindowText(_T("0.5"));
GetDlgItem(IDC_EDIT_Y_SCALE_COEFFICIENT)->SetWindowText(_T("0.5"));
GetDlgItem(IDC_EDIT_Z_SCALE_COEFFICIENT)->SetWindowText(_T("0.5"));
//===============================================================================
// ´´½¨×´Ì¬À¸
m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBS_SIZEGRIP, CRect(0, 0, 0, 0), this, 101);
@@ -127,7 +133,7 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStartMachine()
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_STOP_MACHINE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_START_MACHINE)->EnableWindow(FALSE);
_Send_CMD_InitController();
}
else
{
@@ -146,26 +152,32 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStopMachine()
}
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_START_MACHINE)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_STOP_MACHINE)->EnableWindow(FALSE);
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd1()
{
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("F4 0D"));
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("A6 30 30 31 47 0D"));
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd2()
{
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("F5 0D"));
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("A4 30 30 31 45 0D"));
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd3()
{
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("F6 0D"));
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("A5 30 30 31 46 0D"));
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd4()
{
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("A6 30 30 31 47 0D"));
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineSendDataTypeHex()
{
@@ -190,8 +202,9 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSendData()
DWORD iSendDataLength(0);
DWORD iWriteByte(0);
m_pSO7_PCDSerial->m_iReadDataNum=255;
m_pSO7_PCDSerial->m_csRecv=_T("");
if (true)//m_SendType==HEXADECIMAL)
if (m_SendType==HEXADECIMAL)
{
char* stop;
BYTE bSendData[MAX_OUTPUT_BUFFER_SIZE]={0};
@@ -238,7 +251,7 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSendData()
m_OutMessage=_T("[Recv]");
for (INT i=0;i<m_pSO7_PCDSerial->m_iRecvByte;i++)
{
csTemp.Format(_T("%X "),m_pSO7_PCDSerial->m_RecvData[i]);
csTemp.Format(_T("%X "),(BYTE)m_pSO7_PCDSerial->m_RecvData[i]);
m_OutMessage+=csTemp;
}
OutputWithScroll(m_OutMessage,m_edMSG);
@@ -265,14 +278,430 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSendData()
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
}
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedCheckSo7ManualMachineReadPosContinue()
{
if (!((CButton*)(GetDlgItem(IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE)))->GetCheck())
{
m_pSO7_PCDSerial->m_iReadDataNum=255;
KillTimer(1);
}
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachinereadPos()
{
_Send_CMD_ReadPositionX();
_Send_CMD_ReadPositionY();
_Send_CMD_ReadPositionZ();
UpdatePosDisplay();
if (((CButton*)(GetDlgItem(IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE)))->GetCheck())
{
m_pSO7_PCDSerial->m_iReadDataNum=255;
SetTimer(1,200,NULL);
}
else
{
KillTimer(1);
}
}
//===================================================
BOOL CSo7_Manual_Machine::_Send_Common_CMD(const char* _SendData,DWORD _SendDataLength)
{
BOOL rStatus(FALSE);
DWORD iWriteByte(0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iReadDataNum=255;
iWriteByte=m_pSO7_PCDSerial->Send(_SendData,_SendDataLength);
m_OutMessage.Format(_T("Send(%dByte)"),iWriteByte);
m_StatusBar.SetText(m_OutMessage, 1, 0);
//接受数据
INT iRetrys(0);
CString csTemp;
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (m_pSO7_PCDSerial->m_iRecvState)
{
if(m_pSO7_PCDSerial->m_csRecv==_T(""))
{
m_pSO7_PCDSerial->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
}
m_OutMessage.Format(_T("Recv(%dByte)"),m_pSO7_PCDSerial->m_iRecvByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iRecvState=FALSE;
rStatus=TRUE;
}
else
{
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
}
return rStatus;
};
//===================================================
void CSo7_Manual_Machine::_Send_CMD_InitController()
{
BYTE bSendData1[6]={0xA6,0x30,0x30,0x31,0x47,0x0D};
_Send_Common_CMD((const char*)bSendData1,6);
BYTE bSendData2[6]={0xA4,0x30,0x30,0x31,0x45,0x0D};
_Send_Common_CMD((const char*)bSendData2,6);
BYTE bSendData3[6]={0xA5,0x30,0x30,0x31,0x46,0x0D};
_Send_Common_CMD((const char*)bSendData3,6);
BYTE bSendData4[6]={0xA6,0x30,0x30,0x31,0x47,0x0D};
_Send_Common_CMD((const char*)bSendData4,6);
};
//===================================================
void CSo7_Manual_Machine::_Send_CMD_ReadPositionX()
{
BYTE bSendData[2]={0xF4,0x0D};
DWORD iSendDataLength(2);
DWORD iWriteByte(0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iReadDataNum=255;
iWriteByte=m_pSO7_PCDSerial->Send((const char*)bSendData,iSendDataLength);
m_OutMessage.Format(_T("Send(%dByte)"),iWriteByte);
m_StatusBar.SetText(m_OutMessage, 1, 0);
//接受数据
INT iRetrys(0);
CString csTemp;
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (m_pSO7_PCDSerial->m_iRecvState)
{
if(m_pSO7_PCDSerial->m_csRecv==_T(""))
{
m_pSO7_PCDSerial->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
}
m_pSO7_Proto->g_machine.x._d_cur_pos_=HEXDataToIntScalePosX(&m_pSO7_PCDSerial->m_RecvData[2]);
m_pSO7_Proto->g_machine.x._d_cur_pos_ *= m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution;
m_OutMessage.Format(_T("Recv(%dByte)"),m_pSO7_PCDSerial->m_iRecvByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iRecvState=FALSE;
}
else
{
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
}
};
//===================================================
void CSo7_Manual_Machine::_Send_CMD_ReadPositionY()
{
BYTE bSendData[2]={0xF5,0x0D};
DWORD iSendDataLength(2);
DWORD iWriteByte(0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iReadDataNum=255;
iWriteByte=m_pSO7_PCDSerial->Send((const char*)bSendData,iSendDataLength);
m_OutMessage.Format(_T("Send(%dByte)"),iWriteByte);
m_StatusBar.SetText(m_OutMessage, 1, 0);
//接受数据
INT iRetrys(0);
CString csTemp;
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (m_pSO7_PCDSerial->m_iRecvState)
{
if(m_pSO7_PCDSerial->m_csRecv==_T(""))
{
m_pSO7_PCDSerial->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
}
m_pSO7_Proto->g_machine.y._d_cur_pos_=HEXDataToIntScalePosY(&m_pSO7_PCDSerial->m_RecvData[2]);
m_pSO7_Proto->g_machine.y._d_cur_pos_ *= m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution;
m_OutMessage.Format(_T("Recv(%dByte)"),m_pSO7_PCDSerial->m_iRecvByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iRecvState=FALSE;
}
else
{
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
}
};
//===================================================
void CSo7_Manual_Machine::_Send_CMD_ReadPositionZ()
{
BYTE bSendData[2]={0xF6,0x0D};
DWORD iSendDataLength(2);
DWORD iWriteByte(0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iReadDataNum=255;
iWriteByte=m_pSO7_PCDSerial->Send((const char*)bSendData,iSendDataLength);
m_OutMessage.Format(_T("Send(%dByte)"),iWriteByte);
m_StatusBar.SetText(m_OutMessage, 1, 0);
//接受数据
INT iRetrys(0);
CString csTemp;
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (m_pSO7_PCDSerial->m_iRecvState)
{
if(m_pSO7_PCDSerial->m_csRecv==_T(""))
{
m_pSO7_PCDSerial->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(100);
}
}
m_pSO7_Proto->g_machine.z._d_cur_pos_=HEXDataToIntScalePosZ(&m_pSO7_PCDSerial->m_RecvData[2]);
m_pSO7_Proto->g_machine.z._d_cur_pos_ *= m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution;
m_OutMessage.Format(_T("Recv(%dByte)"),m_pSO7_PCDSerial->m_iRecvByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iRecvState=FALSE;
}
else
{
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
}
};
void CSo7_Manual_Machine::_Process_RecvData()
{
//接受数据
CString csTemp;
if (m_pSO7_PCDSerial->m_iRecvState)
{
if(m_pSO7_PCDSerial->m_csRecv==_T(""))
{
m_pSO7_PCDSerial->m_iRecvState=FALSE;
INT iRetrys2(0);
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys2<60)
{
iRetrys2++;
Sleep(50);
}
}
//m_OutMessage=_T("[Recv]");
//for (INT i=0;i<m_pSO7_PCDSerial->m_iRecvByte;i++)
//{
// csTemp.Format(_T("%X "),(BYTE)m_pSO7_PCDSerial->m_RecvData[i]);
// m_OutMessage+=csTemp;
//}
//OutputWithScroll(m_OutMessage,m_edMSG);
int i=0;
while(i<m_pSO7_PCDSerial->m_iRecvByte)
{
if ((BYTE)m_pSO7_PCDSerial->m_RecvData[i]==0xF4)//x
{
if ((m_pSO7_PCDSerial->m_iRecvByte-i)>=12)
{
m_pSO7_Proto->g_machine.x._d_cur_pos_=HEXDataToIntScalePosX(&m_pSO7_PCDSerial->m_RecvData[i+1]);
m_pSO7_Proto->g_machine.x._d_cur_pos_ *= m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution;
}
i+=12;
}
else if ((BYTE)m_pSO7_PCDSerial->m_RecvData[i]==0xF5)//y
{
if ((m_pSO7_PCDSerial->m_iRecvByte-i)>=12)
{
m_pSO7_Proto->g_machine.y._d_cur_pos_=HEXDataToIntScalePosY(&m_pSO7_PCDSerial->m_RecvData[i+1]);
m_pSO7_Proto->g_machine.y._d_cur_pos_ *= m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution;
}
i+=12;
}
else if ((BYTE)m_pSO7_PCDSerial->m_RecvData[i]==0xF6)//z
{
if ((m_pSO7_PCDSerial->m_iRecvByte-i)>=12)
{
m_pSO7_Proto->g_machine.z._d_cur_pos_=HEXDataToIntScalePosZ(&m_pSO7_PCDSerial->m_RecvData[i+1]);
m_pSO7_Proto->g_machine.z._d_cur_pos_ *= m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution;
}
i+=12;
}
else
{
i++;
}
};
m_OutMessage.Format(_T("Recv(%dByte)"),m_pSO7_PCDSerial->m_iRecvByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
m_pSO7_PCDSerial->m_csRecv=_T("");
m_pSO7_PCDSerial->m_iRecvState=FALSE;
}
else
{
m_StatusBar.SetText(_T("Time Out!"), 2, 0);
}
}
//===================================================
double CSo7_Manual_Machine::HEXDataToIntScalePosX(char* _RecvData)
{
char i=0,pc=0;
char tc=0;
float ine(0.0);
float dResult(0.0);
tc=0;
for(i=0;i<10;i++)
tc+=_RecvData[i];
tc=tc&0x7f;
pc=_RecvData[10]&0x7f;
if(tc==pc)
{
unsigned char tbak;
for(i=1;i<10;i++)
_RecvData[i]=_RecvData[i]-0x30;
tbak=_RecvData[2];
_RecvData[2]=_RecvData[4];
_RecvData[4]=tbak;
tbak=_RecvData[3];
_RecvData[3]=_RecvData[5];
_RecvData[5]=tbak;
for(i=2;i<6;i++)
_RecvData[i]=_RecvData[i]^0x03;
ine=float(0.1),dResult=0.0;
for(i=9;i>0;i--)
{
ine=ine*10;
dResult+=ine*_RecvData[i];
}
dResult=dResult/10000;
if(_RecvData[0]==16)
dResult=-dResult;
}
return static_cast<double>(dResult);
};
//===================================================
double CSo7_Manual_Machine::HEXDataToIntScalePosY(char* _RecvData)
{
char i=0,pc=0;
char tc=0;
float ine(0.0);
float dResult(0.0);
tc=0;
for(i=0;i<10;i++)
tc+=_RecvData[i];
tc=tc&0x7f;
pc=_RecvData[10]&0x7f;
if(tc==pc)
{
unsigned char tbak;
for(i=1;i<10;i++)
_RecvData[i]=_RecvData[i]-0x30;
tbak=_RecvData[3];
_RecvData[3]=_RecvData[5];
_RecvData[5]=tbak;
tbak=_RecvData[4];
_RecvData[4]=_RecvData[6];
_RecvData[6]=tbak;
for(i=3;i<7;i++)
_RecvData[i]=_RecvData[i]^0x05;
ine=float(0.1),dResult=0;
for(i=9;i>0;i--)
{
ine=ine*10;
dResult+=ine*_RecvData[i];
}
dResult = dResult/10000;
if(_RecvData[0]==16)
dResult=-dResult;
}
return static_cast<double>(dResult);
};
//===================================================
double CSo7_Manual_Machine::HEXDataToIntScalePosZ(char* _RecvData)
{
char i=0,pc=0;
char tc=0;
float ine(0.0);
float dResult(0.0);
tc=0;
for(i=0;i<10;i++)
tc+=_RecvData[i];
tc=tc&0x7f;
pc=_RecvData[10]&0x7f;
if(tc==pc)
{
unsigned char tbak;
for(i=1;i<10;i++)
_RecvData[i]=_RecvData[i]-0x30;
tbak=_RecvData[4];
_RecvData[4]=_RecvData[6];
_RecvData[6]=tbak;
tbak=_RecvData[5];
_RecvData[5]=_RecvData[7];
_RecvData[7]=tbak;
for(i=4;i<8;i++)
_RecvData[i]=_RecvData[i]^0x07;
ine=float(0.1),dResult=0;
for(i=9;i>0;i--)
{
ine=ine*10;
dResult+=ine*_RecvData[i];
}
dResult=dResult/10000;
if(_RecvData[0]==16)
dResult=-dResult;
}
return static_cast<double>(dResult);
};
void CSo7_Manual_Machine::UpdatePosDisplay()
{
CString cStr;
cStr.Format(_T("%8.4lf"), m_pSO7_Proto->g_machine.x._d_cur_pos_);
GetDlgItem(IDC_EDIT_X_POSITION_58)->SetWindowText(cStr);
cStr.Format(_T("%8.4lf"), m_pSO7_Proto->g_machine.y._d_cur_pos_);
GetDlgItem(IDC_EDIT_Y_POSITION_58)->SetWindowText(cStr);
cStr.Format(_T("%8.4lf"), m_pSO7_Proto->g_machine.z._d_cur_pos_);
GetDlgItem(IDC_EDIT_Z_POSITION_58)->SetWindowText(cStr);
}
//===================================================
void CSo7_Manual_Machine::OnEnKillfocusEditXScaleCoefficient()
{
UpdateData(TRUE);
USES_CONVERSION;
CString str;
GetDlgItem(IDC_EDIT_X_AXIS)->GetWindowText(str);
GetDlgItem(IDC_EDIT_X_SCALE_COEFFICIENT)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution=atof(cTempValue);
}
@@ -283,7 +712,7 @@ void CSo7_Manual_Machine::OnEnKillfocusEditYScaleCoefficient()
UpdateData(TRUE);
USES_CONVERSION;
CString str;
GetDlgItem(IDC_EDIT_Y_AXIS)->GetWindowText(str);
GetDlgItem(IDC_EDIT_Y_SCALE_COEFFICIENT)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution=atof(cTempValue);
}
@@ -294,7 +723,7 @@ void CSo7_Manual_Machine::OnEnKillfocusEditZScaleCoefficient()
UpdateData(TRUE);
USES_CONVERSION;
CString str;
GetDlgItem(IDC_EDIT_Z_AXIS)->GetWindowText(str);
GetDlgItem(IDC_EDIT_Z_SCALE_COEFFICIENT)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution=atof(cTempValue);
}
@@ -317,6 +746,20 @@ void CSo7_Manual_Machine::OnBnClickedCancel()
OnBnClickedButtonSo7ManualMachineStopMachine();
CDialog::OnCancel();
}
//===================================
void CSo7_Manual_Machine::OnTimer(UINT_PTR nIDEvent)
{
switch(nIDEvent)
{
case 1:
{
_Process_RecvData();
UpdatePosDisplay();
}
break;
}
CDialog::OnTimer(nIDEvent);
}
//=====================================================================================
//Print message on edit control
@@ -339,3 +782,8 @@ void CSo7_Manual_Machine::OutputWithScroll(const CString &strNewText,CEdit &edtO
edtOutput.SetSel(iCount, iCount);
edtOutput.SetRedraw(TRUE);
}
@@ -28,7 +28,18 @@ protected:
CEdit m_edMSG;
public:
void _Send_CMD_InitController();
BOOL _Send_Common_CMD(const char* _SendData,DWORD _SendDataLength);
void _Send_CMD_ReadPositionX();
void _Send_CMD_ReadPositionY();
void _Send_CMD_ReadPositionZ();
void _Process_RecvData();
double HEXDataToIntScalePosX(char* _RecvData);
double HEXDataToIntScalePosY(char* _RecvData);
double HEXDataToIntScalePosZ(char* _RecvData);
void UpdatePosDisplay();
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnBnClickedButtonSo7ManualMachineStartMachine();
afx_msg void OnBnClickedButtonSo7ManualMachineStopMachine();
afx_msg void OnBnClickedRadioSo7ManualMachineCommonCmd1();
@@ -43,4 +54,7 @@ public:
afx_msg void OnBnClickedButtonSo7ManualMachineClearMsg();
afx_msg void OnBnClickedButtonSo7ManualMachineSaveMsg();
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedButtonSo7ManualMachinereadPos();
afx_msg void OnBnClickedCheckSo7ManualMachineReadPosContinue();
afx_msg void OnBnClickedRadioSo7ManualMachineCommonCmd4();
};
@@ -743,8 +743,9 @@
#define IDC_EDIT_IMAGEDLL_2LASER_MEASURED_VALUE9 1610
#define IDC_EDIT_TEST_KEYENCE_SETFOCUS 1650
#define IDC_RADIO_SO7_VERIFICATION_ALGORITHM 1651
#define IDC_BUTTON4 1652
#define IDC_BUTTON_SO7_MANUAL_MACHINEREAD_POS 1652
#define IDC_RADIO1 1653
#define IDC_RADIO_SO7_MANUAL_MACHINE_COMMON_CMD4 1653
// Next default values for new objects
//
@@ -752,7 +753,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 168
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1653
#define _APS_NEXT_CONTROL_VALUE 1654
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif