增加手动机测试,可正常串口通信。

This commit is contained in:
TAO Cheng
2013-06-14 10:13:05 +08:00
parent 6f04c5fda4
commit f769cef71a
9 changed files with 162 additions and 63 deletions
@@ -482,6 +482,7 @@ void CPSerial::OnReceive()
{
// Dummy OnReceieve if not used
char s[255]={0};
CStringA csTemp;
s[1]='\0';
CurrentPointer = 0;
@@ -496,7 +497,15 @@ void CPSerial::OnReceive()
if (num!=0)
{
csTemp.Format("%s",s);
for (int i=0;i<255;i++)
{
m_RecvData[i]=0;
}
for (int i=0;i<num;i++)
{
m_RecvData[i]=s[i];
}
csTemp.Format("%s",m_RecvData);
m_csRecv=csTemp;
m_iRecvByte=num;
m_iRecvState=TRUE;
@@ -187,6 +187,7 @@ public:
BOOL m_iRecvState;
CString m_csRecv;
INT m_iRecvByte;
char m_RecvData[255];
};
#endif // CMMIO_SERIAL_H
@@ -1108,3 +1108,9 @@ Init:Open device succeed .
Destruct Cso7_Proto.
Construct Cso7_Proto.
Init:Open device succeed .
_start_machine
Exit: Exit_SO7Usb
@@ -590,8 +590,8 @@ BEGIN
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,297,107
GROUPBOX "Send Data",IDC_STATIC,86,18,237,76
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,
@@ -602,24 +602,27 @@ BEGIN
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,205,137,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Y_SCALE_COEFFICIENT,205,155,54,12,ES_CENTER | ES_AUTOHSCROLL
EDITTEXT IDC_EDIT_Z_SCALE_COEFFICIENT,205,173,54,12,ES_CENTER | ES_AUTOHSCROLL
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
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,126,137,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Y_POSITION_58,126,155,54,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
EDITTEXT IDC_EDIT_Z_POSITION_58,126,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,147,119,12,8
LTEXT "Scale resolution",IDC_STATIC,209,119,51,11
LTEXT "mm",IDC_STATIC,143,119,12,8
LTEXT "Scale resolution",IDC_STATIC,205,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
END
IDD_SO7_UTIL_VERIFICATION_ALGORITHM DIALOGEX 0, 0, 617, 254
@@ -3,12 +3,12 @@
#include "stdafx.h"
#include "resource.h"
#include "..\..\..\SevenOcean\Serial.h"
#include "..\..\..\SevenOcean\SO7_Proto.h"
#include "..\..\..\SevenOcean\CMMIO_SERIAL.H"
#include "So7_Manual_Machine.h"
#include "afxdialogex.h"
#define MAX_OUTPUT_BUFFER_SIZE 512
extern CSerial* m_pSO7_Serial;
extern CSO7_Proto* m_pSO7_Proto;
extern CPSerial* m_pSO7_PCDSerial;
// CSo7_Manual_Machine dialog
IMPLEMENT_DYNAMIC(CSo7_Manual_Machine, CDialog)
@@ -24,9 +24,10 @@ CSo7_Manual_Machine::~CSo7_Manual_Machine()
}
void CSo7_Manual_Machine::DoDataExchange(CDataExchange* pDX)
{
DDX_Control(pDX, IDC_EDIT_MANUAL_MACHINE_MSG, m_edMSG);
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_EDIT_MANUAL_MACHINE_MSG, m_edMSG);
}
@@ -76,6 +77,7 @@ 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;
//===============================================================================
// 创建状态栏
@@ -86,7 +88,8 @@ BOOL CSo7_Manual_Machine::OnInitDialog()
m_StatusBar.SetText(_T("System ready."), 0, 0);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_STOP_MACHINE)->EnableWindow(FALSE);
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
}
@@ -95,16 +98,36 @@ BOOL CSo7_Manual_Machine::OnInitDialog()
//===================================================
void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStartMachine()
{
if (m_pSO7_Serial)
if (m_pSO7_PCDSerial)
{
CString Params;
Params =_T("[COM1]Baud=19200,Parity=N,Data=8,Stop=0");
m_pSO7_PCDSerial->SetPort(1,CBR_19200);
CString Param,Params;
int Port;
int Baud;
char Parity;
int Bits;
int StopBits;
int HandShake;
m_pSO7_PCDSerial->GetPortData(&Port,&Baud,&Parity,&Bits,&StopBits,&HandShake);
Params.Format( TEXT("[COM%d]"), Port );
Param.Format( TEXT(" Baud=%d"), Baud );
Params += Param;
Param.Format( TEXT(" Parity=%c"), Parity );
Params += Param;
Param.Format( TEXT(" Data=%d"), Bits );
Params += Param;
Param.Format( TEXT(" Stop=%d"), StopBits );
Params += Param;
m_StatusBar.SetText(Params, 0, 0);
if(m_pSO7_Serial->Open(1,19200))
if(m_pSO7_PCDSerial->Open())
{
m_StatusBar.SetText(_T("成功打开串口"), 1, 0);
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);
}
else
{
@@ -117,29 +140,30 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStartMachine()
//===================================================
void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineStopMachine()
{
if (m_pSO7_Serial)
if (m_pSO7_PCDSerial)
{
m_pSO7_Serial->Close();
m_pSO7_PCDSerial->Close();
}
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA)->EnableWindow(TRUE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_SEND_DATA)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_SO7_MANUAL_MACHINE_START_MACHINE)->EnableWindow(TRUE);
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd1()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("F4 0D"));
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd2()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("F5 0D"));
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedRadioSo7ManualMachineCommonCmd3()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->SetWindowTextW(_T("F6 0D"));
}
//===================================================
@@ -164,30 +188,27 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSendData()
GetDlgItem(IDC_EDIT_SO7_MANUAL_MACHINE_DATA)->GetWindowText(csSendData);
const char* cSendData=T2A(csSendData);
int iSendDataLength(0);
int iWriteByte(0);
int iReadByte(0);
if (m_SendType==HEXADECIMAL)
DWORD iSendDataLength(0);
DWORD iWriteByte(0);
m_pSO7_PCDSerial->m_csRecv=_T("");
if (true)//m_SendType==HEXADECIMAL)
{
char* stop;
BYTE bSendData[MAX_OUTPUT_BUFFER_SIZE]={0};
iSendDataLength=(csSendData.GetLength()+1)/3;
for(int i=0;i<iSendDataLength;i++)
for(DWORD i=0;i<iSendDataLength;i++)
{
bSendData[i]=(BYTE)strtol(cSendData+i*3,&stop,16);
}
iWriteByte=m_pSO7_Serial->SendData((const char*)bSendData,iSendDataLength);
iWriteByte=m_pSO7_PCDSerial->Send((const char*)bSendData,iSendDataLength);
}
else
{
//加上回车换行符
CString csTemp;
csTemp.Format(_T("\r\n"));
csSendData+=csTemp;
csSendData+=_T("\r\n");
cSendData=T2A(csSendData);
iSendDataLength=csSendData.GetLength();
iWriteByte=m_pSO7_Serial->SendData(cSendData,iSendDataLength);
iWriteByte=m_pSO7_PCDSerial->Send(cSendData,iSendDataLength);
}
m_OutMessage=_T("[Send] ")+csSendData;
@@ -197,19 +218,47 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSendData()
m_StatusBar.SetText(m_OutMessage, 1, 0);
//接受数据
INT iRetrys(0);
while(!m_pSO7_Serial->ReadDataWaiting() && iRetrys<20)
CString csTemp;
while(!m_pSO7_PCDSerial->m_iRecvState && iRetrys<20)
{
iRetrys++;
Sleep(100);
}
if (iRetrys<20)
if (m_pSO7_PCDSerial->m_iRecvState)
{
BYTE RecvData[MAX_OUTPUT_BUFFER_SIZE]={0};
iReadByte=m_pSO7_Serial->ReadData(RecvData,MAX_OUTPUT_BUFFER_SIZE);
m_OutMessage.Format(_T("[Recv]%s"),RecvData);
OutputWithScroll(m_OutMessage,m_edMSG);
m_OutMessage.Format(_T("Recv(%dByte)"),iReadByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
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=_T("[Recv]");
for (INT i=0;i<m_pSO7_PCDSerial->m_iRecvByte;i++)
{
csTemp.Format(_T("%X "),m_pSO7_PCDSerial->m_RecvData[i]);
m_OutMessage+=csTemp;
}
OutputWithScroll(m_OutMessage,m_edMSG);
m_OutMessage.Format(_T("Recv(%dByte)"),m_pSO7_PCDSerial->m_iRecvByte);
m_StatusBar.SetText(m_OutMessage, 2, 0);
}
else
{
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);
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
{
@@ -219,26 +268,41 @@ void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineSendData()
//===================================================
void CSo7_Manual_Machine::OnEnKillfocusEditXScaleCoefficient()
{
// TODO: Add your control notification handler code here
{
UpdateData(TRUE);
USES_CONVERSION;
CString str;
GetDlgItem(IDC_EDIT_X_AXIS)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_pSO7_Proto->g_machine.s_machine_config.x_axis._scale_resolution=atof(cTempValue);
}
//===================================================
void CSo7_Manual_Machine::OnEnKillfocusEditYScaleCoefficient()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
USES_CONVERSION;
CString str;
GetDlgItem(IDC_EDIT_Y_AXIS)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_pSO7_Proto->g_machine.s_machine_config.y_axis._scale_resolution=atof(cTempValue);
}
//===================================================
void CSo7_Manual_Machine::OnEnKillfocusEditZScaleCoefficient()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
USES_CONVERSION;
CString str;
GetDlgItem(IDC_EDIT_Z_AXIS)->GetWindowText(str);
const char* cTempValue=T2A(str);
m_pSO7_Proto->g_machine.s_machine_config.z_axis._scale_resolution=atof(cTempValue);
}
//===================================================
void CSo7_Manual_Machine::OnBnClickedButtonSo7ManualMachineClearMsg()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_EDIT_MANUAL_MACHINE_MSG)->SetWindowTextW(_T(""));
}
//===================================================
@@ -22,12 +22,13 @@ protected:
virtual BOOL OnInitDialog();
DECLARE_MESSAGE_MAP()
protected:
CStatusBarCtrl m_StatusBar;
RS232SendType m_SendType;
CString m_OutMessage;
CStatusBarCtrl m_StatusBar;
CEdit m_edMSG;
char m_SendType;
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
public:
void OutputWithScroll(const CString &strNewText,CEdit &edtOutput);
afx_msg void OnBnClickedButtonSo7ManualMachineStartMachine();
afx_msg void OnBnClickedButtonSo7ManualMachineStopMachine();
afx_msg void OnBnClickedRadioSo7ManualMachineCommonCmd1();
@@ -39,7 +39,7 @@
#include "afxdialogex.h"
//#define _RELEASE_ONLY_ONE_FUNCTION
CSerial* m_pSO7_Serial=NULL;
//CSerial* m_pSO7_Serial=NULL;
CPSerial* m_pSO7_PCDSerial=NULL;
CSO7_Proto* m_pSO7_Proto=NULL;
CKeyence_Laser* m_pKeyence_Laser=NULL;
@@ -198,20 +198,33 @@ void CSo7_Option::OnBnClickedOk()
{
CSO7_Verfication_Algorithm* pSO7_Verfication_Algorithm=new CSO7_Verfication_Algorithm();
pSO7_Verfication_Algorithm->DoModal();
delete pSO7_Verfication_Algorithm;
}
else if (((CButton *)GetDlgItem(IDC_RADIO__SO7_RS232))->GetCheck())
{
if (!m_pSO7_Serial)
m_pSO7_Serial = new CSerial();
if (!m_pSO7_Proto)
{
m_pSO7_Proto = new CSO7_Proto();
}
if (!m_pSO7_PCDSerial)
{
m_pSO7_PCDSerial = new CPSerial();
}
CSo7_Manual_Machine* pSo7_Manual_Machine=new CSo7_Manual_Machine();
pSo7_Manual_Machine->DoModal();
delete pSo7_Manual_Machine;
if (m_pSO7_Serial)
if (m_pSO7_PCDSerial)
{
delete m_pSO7_Serial;
m_pSO7_Serial=NULL;
delete m_pSO7_PCDSerial;
m_pSO7_PCDSerial=NULL;
}
if (m_pSO7_Proto)
{
delete m_pSO7_Proto;
m_pSO7_Proto=NULL;
}
}
@@ -254,6 +254,7 @@
#define IDC_CHECK_MIRROR_VERTICALLY 1204
#define IDC_CHECK_SV2000E_MIRROR_VERTICALLY 1204
#define IDC_CHECK_CONTINUE_READ_LASER_VALUE 1204
#define IDC_CHECK_SO7_MANUAL_MACHINE_READ_POS_CONTINUE 1204
#define IDC_RADIO_MACHINE_SevenOcean 1205
#define IDC_CHECK_CONTINUE_READ_LASER_LK_H_VALUE 1205
#define IDC_BUTTON_INIT_SO7USB 1206
@@ -345,7 +346,6 @@
#define IDC_EDIT_IMAGEDLL_2LASER_TOPZ1 1274
#define IDC_EDIT_FRESHSPEED_X2 1275
#define IDC_EDIT_IMAGEDLL_2LASER_TOPZ2 1275
#define IDC_EDIT_REPRETEST2 1275
#define IDC_EDIT_MANUAL_MACHINE_MSG 1275
#define IDC_EDIT_FRESHSPEED_X3 1276
#define IDC_EDIT_IMAGEDLL_2LASER_TOPZ3 1276
@@ -743,6 +743,8 @@
#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
// Next default values for new objects
//
@@ -750,7 +752,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 168
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1652
#define _APS_NEXT_CONTROL_VALUE 1653
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif