新增Tesa star e测试功能。
This commit is contained in:
@@ -0,0 +1,268 @@
|
||||
// TestTesaStarEDialog.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "..\..\..\Tesa\TesaStarE.h"
|
||||
#include "TestTesaStarEDialog.h"
|
||||
#include "afxdialogex.h"
|
||||
|
||||
extern CTesaStarE* g_pTesaStarE;
|
||||
// TestTesaStarEDialog dialog
|
||||
|
||||
IMPLEMENT_DYNAMIC(TestTesaStarEDialog, CDialog)
|
||||
|
||||
TestTesaStarEDialog::TestTesaStarEDialog(CWnd* pParent /*=NULL*/)
|
||||
: CDialog(TestTesaStarEDialog::IDD, pParent)
|
||||
{
|
||||
m_SendType=1;
|
||||
}
|
||||
|
||||
TestTesaStarEDialog::~TestTesaStarEDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void TestTesaStarEDialog::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CDialog::DoDataExchange(pDX);
|
||||
DDX_Control(pDX, IDC_EDIT_TESA_STAR_E_LOG, m_edMSG);
|
||||
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(TestTesaStarEDialog, CDialog)
|
||||
ON_BN_CLICKED(IDCANCEL, &TestTesaStarEDialog::OnBnClickedCancel)
|
||||
ON_EN_KILLFOCUS(IDC_EDIT_MOVETO_DEG, &TestTesaStarEDialog::OnEnKillfocusEditMoveT_Deg)
|
||||
ON_BN_CLICKED(IDC_BUTTONIDC_BUTTON_TESA_STAR_MOVETO, &TestTesaStarEDialog::OnBnClickedButtonidcButtonTesaStarMoveto)
|
||||
ON_BN_CLICKED(IDC_BUTTON_TESA_STAR_START_MACHINE, &TestTesaStarEDialog::OnBnClickedButtonTesaStarStartMachine)
|
||||
ON_BN_CLICKED(IDC_BUTTON_TESA_STAR_STOP_MACHINE, &TestTesaStarEDialog::OnBnClickedButtonTesaStarStopMachine)
|
||||
ON_BN_CLICKED(IDC_BUTTON_TESA_STAR_SENDMSG, &TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg)
|
||||
ON_BN_CLICKED(IDC_BUTTON_TESA_STAR_CLEAR_LOG, &TestTesaStarEDialog::OnBnClickedButtonTesaStarClearLog)
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
|
||||
// TestTesaStarEDialog message handlers
|
||||
//===================================================
|
||||
BOOL TestTesaStarEDialog::OnInitDialog()
|
||||
{
|
||||
CDialog::OnInitDialog();
|
||||
|
||||
// Add "About..." menu item to system menu.
|
||||
|
||||
// IDM_ABOUTBOX must be in the system command range.
|
||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||
ASSERT(IDM_ABOUTBOX < 0xF000);
|
||||
|
||||
CMenu* pSysMenu = GetSystemMenu(FALSE);
|
||||
if (pSysMenu != NULL)
|
||||
{
|
||||
BOOL bNameValid;
|
||||
CString strAboutMenu;
|
||||
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
|
||||
ASSERT(bNameValid);
|
||||
if (!strAboutMenu.IsEmpty())
|
||||
{
|
||||
pSysMenu->AppendMenu(MF_SEPARATOR);
|
||||
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
|
||||
}
|
||||
}
|
||||
|
||||
//===============================================================================
|
||||
// 创建状态栏
|
||||
m_StatusBar.Create(WS_CHILD|WS_VISIBLE|SBS_SIZEGRIP, CRect(0, 0, 0, 0), this, 101);
|
||||
m_StatusBar.SetBkColor(RGB(0xff, 0xff, 0x00));
|
||||
int arWidth[] = {330,450, -1 };
|
||||
m_StatusBar.SetParts(3, arWidth);
|
||||
m_StatusBar.SetText(_T("System ready."), 0, 0);
|
||||
|
||||
UpdateData(FALSE);
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnBnClickedCancel()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
CDialog::OnCancel();
|
||||
}
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnEnKillfocusEditMoveT_Deg()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
}
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnBnClickedButtonidcButtonTesaStarMoveto()
|
||||
{
|
||||
// TODO: Add your control notification handler code here
|
||||
}
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnBnClickedButtonTesaStarStartMachine()
|
||||
{
|
||||
g_pTesaStarE->Initialization();
|
||||
}
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnBnClickedButtonTesaStarStopMachine()
|
||||
{
|
||||
g_pTesaStarE->Unload();
|
||||
}
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnBnClickedButtonTesaStarSendmsg()
|
||||
{
|
||||
UpdateData(TRUE);
|
||||
USES_CONVERSION;
|
||||
CString csSendData(L"");
|
||||
|
||||
GetDlgItem(IDC_EDIT_TESA_STAR_MESSAGE)->GetWindowText(csSendData);
|
||||
const char* cSendData=T2A(csSendData);
|
||||
|
||||
DWORD iSendDataLength(0);
|
||||
DWORD iWriteByte(0);
|
||||
|
||||
if (m_SendType==0)
|
||||
{
|
||||
char* stop;
|
||||
BYTE bSendData[MAX_OUTPUT_BUFFER_SIZE]={0};
|
||||
iSendDataLength=(csSendData.GetLength()+1)/3;
|
||||
for(DWORD i=0;i<iSendDataLength;i++)
|
||||
{
|
||||
bSendData[i]=(BYTE)strtol(cSendData+i*3,&stop,16);
|
||||
}
|
||||
iWriteByte=g_pTesaStarE->m_pSerial->Send((const char*)bSendData,iSendDataLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
//加上回车换行符
|
||||
csSendData+=_T("\r");
|
||||
cSendData=T2A(csSendData);
|
||||
iSendDataLength=csSendData.GetLength();
|
||||
iWriteByte=g_pTesaStarE->m_pSerial->Send(cSendData,iSendDataLength);
|
||||
}
|
||||
|
||||
m_OutMessage=_T("[Send] ")+csSendData;
|
||||
OutputWithScroll(m_OutMessage,m_edMSG);
|
||||
|
||||
m_OutMessage.Format(_T("Send(%dByte)"),iWriteByte);
|
||||
m_StatusBar.SetText(m_OutMessage, 1, 0);
|
||||
//接受数据
|
||||
INT iRetrys(0);
|
||||
INT iRecvBytes(0);
|
||||
CString csTemp;
|
||||
bool IsTheEnd(false);
|
||||
do
|
||||
{
|
||||
iRetrys=0;
|
||||
while(!g_pTesaStarE->m_pSerial->m_iRecvState && iRetrys<20)
|
||||
{
|
||||
iRetrys++;
|
||||
Sleep(100);
|
||||
}
|
||||
if (g_pTesaStarE->m_pSerial->m_iRecvState)
|
||||
{
|
||||
if(g_pTesaStarE->m_pSerial->m_RecvData[0]==0)
|
||||
{
|
||||
g_pTesaStarE->m_pSerial->m_iRecvState=FALSE;
|
||||
INT iRetrys2(0);
|
||||
while(!g_pTesaStarE->m_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]);
|
||||
for (INT i=0;i<iRecvBytes;i++)
|
||||
{
|
||||
if((BYTE)m_RecvData[i]>32)
|
||||
csTemp.Format(_T("%c "),(BYTE)m_RecvData[i]);
|
||||
else
|
||||
csTemp=_T("|");
|
||||
m_OutMessage+=csTemp;
|
||||
}
|
||||
OutputWithScroll(m_OutMessage,m_edMSG);
|
||||
m_OutMessage.Format(_T("Recv(%dByte)"),iRecvBytes);
|
||||
m_StatusBar.SetText(m_OutMessage, 2, 0);
|
||||
}
|
||||
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;
|
||||
|
||||
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]);
|
||||
|
||||
for (INT i=0;i<iRecvBytes;i++)
|
||||
{
|
||||
if((BYTE)m_RecvData[i]>32)
|
||||
csTemp.Format(_T("%c "),(BYTE)m_RecvData[i]);
|
||||
else
|
||||
csTemp=_T("|");
|
||||
m_OutMessage+=csTemp;
|
||||
}
|
||||
OutputWithScroll(m_OutMessage,m_edMSG);
|
||||
m_OutMessage.Format(_T("Recv(%dByte)"),iRecvBytes);
|
||||
m_StatusBar.SetText(m_OutMessage, 2, 0);
|
||||
}
|
||||
|
||||
g_pTesaStarE->m_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);
|
||||
}
|
||||
iRecvBytes=g_pTesaStarE->m_pSerial->m_iRecvBytes;
|
||||
if(iRecvBytes<3)
|
||||
{
|
||||
iRecvBytes=3;
|
||||
}
|
||||
if ((m_RecvData[iRecvBytes-1]==0X0D)&&
|
||||
(m_RecvData[iRecvBytes-2]==0X0A)&&
|
||||
(m_RecvData[iRecvBytes-3]==0X0D))
|
||||
{
|
||||
IsTheEnd=true;
|
||||
}
|
||||
} while (!IsTheEnd);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void TestTesaStarEDialog::OnBnClickedButtonTesaStarClearLog()
|
||||
{
|
||||
GetDlgItem(IDC_EDIT_TESA_STAR_E_LOG)->SetWindowTextW(_T(""));
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
//Print message on edit control
|
||||
void TestTesaStarEDialog::OutputWithScroll(const CString &strNewText,CEdit &edtOutput)
|
||||
{
|
||||
CString strOutput;
|
||||
edtOutput.GetWindowText(strOutput);
|
||||
strOutput += strNewText;
|
||||
if ("\r\n" != strOutput.Right(2))
|
||||
{
|
||||
strOutput += "\r\n";
|
||||
}
|
||||
|
||||
int iCount = strOutput.GetLength();
|
||||
|
||||
edtOutput.SetRedraw(FALSE);
|
||||
edtOutput.SetWindowText(strOutput);
|
||||
int iLine = edtOutput.GetLineCount();
|
||||
edtOutput.LineScroll(iLine, 0);
|
||||
edtOutput.SetSel(iCount, iCount);
|
||||
edtOutput.SetRedraw(TRUE);
|
||||
}
|
||||
Reference in New Issue
Block a user