📄 allsimpletest.cpp.bak
字号:
// AllSimpleTest.cpp : implementation file
//
#include "stdafx.h"
#include "SBC2442.h"
#include "AllSimpleTest.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAllSimpleTest dialog
CAllSimpleTest::CAllSimpleTest(CWnd* pParent /*=NULL*/)
: CDialog(CAllSimpleTest::IDD, pParent)
{
//{{AFX_DATA_INIT(CAllSimpleTest)
m_testoutput = _T("");
//}}AFX_DATA_INIT
}
void CAllSimpleTest::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAllSimpleTest)
DDX_Text(pDX, IDC_EDIT_TEST_OUTPUT, m_testoutput);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAllSimpleTest, CDialog)
//{{AFX_MSG_MAP(CAllSimpleTest)
ON_BN_CLICKED(IDC_BUTTON_AUTOTEST, OnButtonAutotest)
ON_BN_CLICKED(IDC_PRINT_TEST, OnPrintTest)
ON_BN_CLICKED(IDC_COM1_TEST, OnCom1Test)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAllSimpleTest message handlers
//以下是用到的自动测试代码
//测试代码一:RTC检测
BOOL CAllSimpleTest::RTCTEST()
{
GetSystemTime(&m_systemtime);
m_systemtime.wYear=2008;
m_systemtime.wMonth=1;
m_systemtime.wDay=1;
m_systemtime.wHour=0;
m_systemtime.wMinute=0;
m_systemtime.wSecond=0;
m_systemtime.wMilliseconds=0;
SetSystemTime(&m_systemtime);
GetSystemTime(&m_systemtime);
if((m_systemtime.wYear==2008)&&(m_systemtime.wMonth==1)&&(m_systemtime.wDay==1)&&(m_systemtime.wHour==0))
{
UpdateData(TRUE);
m_testoutput+="RTC检测:设置RTC时间为北京时间2008年1月1日上午8点整成功,请断电重新启动系统查看时间是否为2008年1月1日上午8点!\r\n\r\n";
UpdateData(FALSE);
return true;
}
else
{
UpdateData(TRUE);
m_testoutput+="RTC检测:设置RTC时间为北京时间2008年1月1日上午8点整失败!\r\n";
UpdateData(FALSE);
return false;
}
}
//测试代码二:SD卡检测
BOOL CAllSimpleTest::SDCARDTEST()
{
FILE *fd ;
bool testreturn=true;
char buf[10];
if((fd = fopen("/Storage Card/text.txt","w+"))==NULL)
{
RETAILMSG(1,(TEXT("sd card :open file error \r\n")));
testreturn=false;
}
if((fwrite( "123456789", sizeof( char ), 10, fd ))<=0)
testreturn=false;
if((fread( buf, sizeof( char ), 10, fd ))<=0)
testreturn=false;
if(fclose(fd))
testreturn=false;
if(testreturn==true)
{
DeleteFile(_T("/Storage Card/text.txt"));
UpdateData(TRUE);
m_testoutput+="SD卡检测:TF卡检测成功(向SD卡中读写均成功)!\r\n";
UpdateData(FALSE);
}
if(testreturn==false)
{
UpdateData(TRUE);
m_testoutput+="SD卡检测:SD卡检测失败,请检查是否有SD卡插入!\r\n";
UpdateData(FALSE);
}
return testreturn;
}
//测试代码三:网卡检测
void CAllSimpleTest::NETCARDTEST(CWnd *pWnd)
{
WSAData wsaData;
//初始化Socket动态链接库
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
return ;
}
/*将IP地址转换成单字节*/
char szDestIPAddr[255] = "192.192.192.100";
/* ZeroMemory(szDestIPAddr,255);
WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK
,cIPAddr.GetBuffer(cIPAddr.GetLength()),cIPAddr.GetLength()
,szDestIPAddr,cIPAddr.GetLength(),NULL,NULL);
*/
IPAddr ipAddr;
//将目标字符串IP地址转换成IPAddr结构
ipAddr = inet_addr(szDestIPAddr);
if (ipAddr == INADDR_NONE)
{
AfxMessageBox(_T("地址无效"));
return ;
}
// 打开ping服务
HANDLE hIP = IcmpCreateFile();
if (hIP == INVALID_HANDLE_VALUE) {
AfxMessageBox(_T("不能打开Ping服务"));
return ;
}
// 构造ping数据包
char acPingBuffer[64];
memset(acPingBuffer, '*', sizeof(acPingBuffer));
PICMP_ECHO_REPLY pIpe = (PICMP_ECHO_REPLY)GlobalAlloc( GMEM_FIXED | GMEM_ZEROINIT,
sizeof(ICMP_ECHO_REPLY) + sizeof(acPingBuffer));
if (pIpe == 0) {
AfxMessageBox(_T("分配ping包缓冲区失败"));
return ;
}
CString m_recv;
// 发送ping数据包
UpdateData();
m_testoutput =m_testoutput + "\r\n";
m_testoutput +="网卡检测:通过ping主机来检测网卡,需要关闭主机的所有防火墙!\r\n";
m_testoutput += "ping ";
m_testoutput += "192.192.192.100 ";
m_testoutput += " with 64 Bytes";
m_testoutput =m_testoutput + "\r\n";
// pListBox->AddString(m_recv);
UpdateData(false);
for (int i=0;i<4;i++)
{
//发送ping服务包,等待接收时间为1秒
DWORD dwStatus = IcmpSendEcho(hIP,ipAddr,
acPingBuffer, sizeof(acPingBuffer), NULL, pIpe,
sizeof(ICMP_ECHO_REPLY) + sizeof(acPingBuffer), 1000);
//当dwStatus不等于0,代表接收到回应
if (dwStatus != 0) {
m_recv.Format(_T("Reply From %d.%d.%d.%d :bytes=%d time=%d TTL")
,int(LOBYTE(LOWORD(pIpe->Address)))
,int(HIBYTE(LOWORD(pIpe->Address)))
,int(LOBYTE(HIWORD(pIpe->Address)))
,int(HIBYTE(HIWORD(pIpe->Address)))
,int(pIpe->DataSize)
,int(pIpe->RoundTripTime)
,int(pIpe->Options.Ttl));
//pListBox->AddString(m_recv);
UpdateData();
m_testoutput = m_testoutput + m_recv;
m_testoutput =m_testoutput + "\r\n";
UpdateData(false);
Sleep(500);
}
else
{
// pListBox->AddString(_T("Error obtaining info from ping packet."));
UpdateData();
m_testoutput += "Error obtaining info from ping packet.";
m_testoutput =m_testoutput + "\r\n";
UpdateData(false);
}
pWnd->UpdateWindow();
}
//释放已分配的内存
GlobalFree(pIpe);
//关闭Ping服务
IcmpCloseHandle(hIP);
//释放Socket资源
WSACleanup();
}
//测试代码四:打印机检测
void CAllSimpleTest::PRINTTEST()
{
UpdateData();
m_testoutput =m_testoutput + "\r\n";
m_testoutput +="打印机检测:检测打印机能否打印出ACSII字符";
UpdateData(false);
DWORD written ;
HANDLE m_handle;
m_handle = CreateFile(L"LPT1:",0,GENERIC_READ | GENERIC_WRITE,NULL,OPEN_EXISTING,0,NULL);
if(!m_handle)
{
RETAILMSG(1,(TEXT("CreateFile failed!\n")));
}
BYTE data[] = {'a','b','c','d',0x0d,'a','b','c','d',0x0d,'a','b','c','d',0x0d};
BOOL flag = WriteFile(m_handle,LPCVOID(data),sizeof(data)+1,&written,NULL);
if(!flag)
{
RETAILMSG(1,(TEXT("WriteFile failed!\n")));
}
else
{
RETAILMSG(1,(TEXT("WriteFile SUCCEED!\n")));
}
CloseHandle(m_handle);
}
void CAllSimpleTest::OnButtonAutotest()
{
// TODO: Add your control notification handler code here
//自动检测项目一:RTC检测
UpdateData(TRUE);
m_testoutput="";
UpdateData(FALSE);
RTCTEST();
SDCARDTEST();
NETCARDTEST(this);
PRINTTEST();
}
void CAllSimpleTest::OnPrintTest()
{
// TODO: Add your control notification handler code here
DWORD written ;
HANDLE m_handle;
m_handle = CreateFile(L"LPT1:",0,GENERIC_READ | GENERIC_WRITE,NULL,OPEN_EXISTING,0,NULL);
if(!m_handle)
{
RETAILMSG(1,(TEXT("CreateFile failed!\n")));
}
BYTE data[] = {'a','b','c','d',0x0d,'a','b','c','d',0x0d,'a','b','c','d',0x0d};
BOOL flag = WriteFile(m_handle,LPCVOID(data),sizeof(data)+1,&written,NULL);
if(!flag)
{
RETAILMSG(1,(TEXT("WriteFile failed!\n")));
}
else
{
RETAILMSG(1,(TEXT("WriteFile SUCCEED!\n")));
}
CloseHandle(m_handle);
}
BOOL CAllSimpleTest::OnCom1Test()
{
// TODO: Add your control notification handler code here
DCB commParam;
m_hComm1 = CreateFile(
_T("COM3:"),
GENERIC_READ | GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL
);
if(m_hComm1 == INVALID_HANDLE_VALUE)
{
RETAILMSG(1,(TEXT("CreateFile return invalid handle\r\n")));
return FALSE;
}
if(!GetCommState(m_hComm1,&commParam))
{
return FALSE;
}
commParam.BaudRate = 115200;
commParam.ByteSize = 8;
commParam.Parity = NOPARITY; // 0-4=no,odd,even,mark,space
commParam.StopBits = ONESTOPBIT;
if(!SetCommState(m_hComm1, &commParam))
{
RETAILMSG(1,(TEXT("SetCommState error\r\n")));
return FALSE;
}
//设置串口读写时间
COMMTIMEOUTS CommTimeOuts;
GetCommTimeouts (m_hComm1, &CommTimeOuts);
CommTimeOuts.ReadIntervalTimeout = MAXDWORD;
CommTimeOuts.ReadTotalTimeoutMultiplier = 0;
CommTimeOuts.ReadTotalTimeoutConstant = 0;
CommTimeOuts.WriteTotalTimeoutMultiplier = 10;
CommTimeOuts.WriteTotalTimeoutConstant = 1000;
if(!SetCommTimeouts(m_hComm1,&CommTimeOuts))
{
RETAILMSG(1,(TEXT("SetCommTimeouts wrong!\r\n")));
}
SetCommMask(m_hComm1,EV_RXCHAR);
SetupComm(m_hComm1,512,512);
PurgeComm(m_hComm1,PURGE_TXCLEAR|PURGE_RXCLEAR);
char buf[12];
strcpy(buf,"COM 1 is OK");
DWORD dwNumBytesWritten;
DWORD dwHaveNumWritten = 0;
ASSERT(m_hComm3 != INVALID_HANDLE_VALUE);
do
{
if(WriteFile(m_hComm1,
buf+dwHaveNumWritten,
11 - dwHaveNumWritten,
&dwNumBytesWritten,
NULL))
{
dwHaveNumWritten = dwHaveNumWritten + dwNumBytesWritten;
if (dwHaveNumWritten == 11)
{
break;
}
Sleep(10);
}
else
{
return FALSE;
}
}while(TRUE);
RETAILMSG(1,(TEXT("Serial Port write Successful!!\r\n")));
CloseHandle(m_hComm1);
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -