⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 allsimpletest.cpp.bak

📁 在WinCE下面
💻 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 + -