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

📄 sertest.c

📁 WinCE5.0BSP for Renesas SH7770
💻 C
字号:
#include <windows.h>

BOOL	GetArguments(LPWSTR, LPDCB);
void	Usage(void);

BYTE	nDataBuffer[1024];
TCHAR	m_tchCom[10];
DWORD	LoopCount;

int WINAPI
WinMain (
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
    LPWSTR lpCmdLine,
	int nCmdShow)
{
	HANDLE		hComPort;
	DCB			dcb;
	DWORD		dwSize;
	DWORD		i;

	DWORD		n;
	BYTE		data;

//	if ( GetArguments(lpCmdLine, &dcb) == FALSE ){
//		return 0;
//	}

	_tcsncpy(m_tchCom, TEXT("COM1:"), 5);

	hComPort = CreateFile(
					m_tchCom,
					GENERIC_READ | GENERIC_WRITE,
                	0, NULL, OPEN_EXISTING,
					FILE_ATTRIBUTE_NORMAL, NULL );
    if ( hComPort == INVALID_HANDLE_VALUE ) {
		RETAILMSG(1, ( TEXT( "COM open function is failed.\r\n" ) ) );
        return 0;
    }

	if( !GetCommState( hComPort, &dcb ) ){	// get current DCB
		RETAILMSG(1, ( TEXT( "GetCommState returned error. code = %x\r\n" ), GetLastError() ) );
		CloseHandle( hComPort );
		return 0;
	}

	dcb.fOutX = FALSE;
	dcb.fInX  = FALSE;
	if ( GetArguments(lpCmdLine, &dcb) == FALSE ){
		CloseHandle( hComPort );
		return 0;
	}

	if( !SetCommState( hComPort, &dcb )){ //set DCB
		RETAILMSG(1, ( TEXT( "SetCommState returned error. code = %x\r\n" ), GetLastError() ) );
		CloseHandle( hComPort );
		return 0;
	}

	i = 0;
	while( TRUE ){

		dwSize = 0;
		data = 0x31;
		for (n = 0; n < 8; n++){
			nDataBuffer[n] = (BYTE)data++;
			dwSize ++;
		}
/**		
		WriteFile( hComPort, (LPVOID)nDataBuffer, dwSize, &dwSize, NULL);
		RETAILMSG( 1, ( TEXT( "WriteFile() : %d\r\n" ), dwSize ) );
{
	BOOL	bMode = SetKMode(TRUE);
	RETAILMSG(1, (TEXT("DSAR0 : %x\r\n"), *((volatile unsigned long * const)(0xff801000+(0x40*11)))));
	RETAILMSG(1, (TEXT("DDAR0 : %x\r\n"), *((volatile unsigned long * const)(0xff801004+(0x40*11)))));
	RETAILMSG(1, (TEXT("DTCR0 : %x\r\n"), *((volatile unsigned long * const)(0xff801008+(0x40*11)))));
	RETAILMSG(1, (TEXT("DSASR0 : %x\r\n"), *((volatile unsigned long * const)(0xff801018+(0x40*11)))));
	RETAILMSG(1, (TEXT("DDASR0 : %x\r\n"), *((volatile unsigned long * const)(0xff80101c+(0x40*11)))));
	RETAILMSG(1, (TEXT("DTCSR0 : %x\r\n"), *((volatile unsigned long * const)(0xff801020+(0x40*11)))));
	RETAILMSG(1, (TEXT("DPTR : %x\r\n"), *((volatile unsigned long * const)(0xff801024+(0x40*11)))));
	RETAILMSG(1, (TEXT("DINTSR : %x\r\n"), *((volatile unsigned long * const)(0xff80180c))));
	RETAILMSG(1, (TEXT("DINTMR : %x\r\n"), *((volatile unsigned long * const)(0xff801814))));
	SetKMode(bMode);
}
**/
		ReadFile( hComPort, (LPVOID)nDataBuffer, 1024, &dwSize, NULL);
		RETAILMSG( 1, ( TEXT( "ReadFile() : %d\r\n" ), dwSize) );
{
	BOOL bMode = SetKMode(TRUE);
	RETAILMSG(1, (TEXT("REG:%x\r\n"), *((volatile unsigned short * const)0xff923008)));
//	RETAILMSG(1, (TEXT("REG:%x\r\n"), *((volatile unsigned long * const)0xff800014)));
//	RETAILMSG(1, (TEXT("REG:%x\r\n"), *((volatile unsigned long * const)0xff800018)));
//	RETAILMSG(1, (TEXT("REG:%x\r\n"), *((volatile unsigned long * const)0xff80001c)));
//	RETAILMSG(1, (TEXT("REG:%x\r\n"), *((volatile unsigned long * const)0xff800020)));
	SetKMode(bMode);
}
		if( dwSize == 0 ){
			if ( i < LoopCount ){
				i++;
			}else{
				break;
			}
		}
//		i = 0;
		WriteFile( hComPort, (LPVOID)nDataBuffer, dwSize, &dwSize, NULL);
		RETAILMSG( 1, ( TEXT( "WriteFile() : %d\r\n" ), dwSize ) );
	}

	CloseHandle( hComPort );
	return 0;
}

BOOL
GetArguments(
	LPWSTR	pCmdLine,
	LPDCB	dcb
	)
{
PTSTR	pOption;
TCHAR	ws[] = TEXT(" \t");
PTSTR	pParameter;

	dcb->BaudRate = CBR_38400;
//	dcb->BaudRate = CBR_38400;
//	dcb->BaudRate = CBR_19200;
	dcb->fParity = 0;
	dcb->Parity = 0;
	dcb->ByteSize = 8;
	dcb->StopBits = 0;
	LoopCount = 0;
	_tcsncpy(m_tchCom, TEXT("COM1:"), 5);
	m_tchCom[5] = 0;

	for (pOption = _tcstok(pCmdLine, ws); pOption != NULL; pOption = _tcstok(NULL, ws)) {
		if (pOption[0] != '/' && pOption[0] != '-') {
			RETAILMSG(1, (TEXT("Unrecognized argument %s\r\n"), pOption));
			continue;
		}
		pParameter = _tcstok(NULL, ws);
		if (pParameter == NULL) {
			RETAILMSG(1, (TEXT("Missing parameter to option %s\r\n"), pOption));
		}

		switch (pOption[1]) {
		case 'r':
			dcb->BaudRate = _ttoi(pParameter);
			break;
		case 'p':
			dcb->Parity = (BYTE)_ttoi(pParameter);
			if ( dcb->Parity )
				dcb->fParity = 1;
			break;
		case 'b':
			dcb->ByteSize = (BYTE)_ttoi(pParameter);
			break;
		case 's':
			dcb->StopBits = (BYTE)_ttoi(pParameter);
			break;
		case 'c':
			_tcsncpy(m_tchCom, pParameter, 5);
			m_tchCom[5] = 0;
			break;
		case 'l':
			LoopCount = (DWORD)_ttoi(pParameter);
			break;
		case 'h':
		case '?':
			Usage();
			return FALSE;
		default:
			RETAILMSG(1, (TEXT("Unrecognized option %s\r\n"), pOption));
			break;
		}
	}
	return TRUE;
}
PTSTR usage_text[] =
{
	TEXT("usage:\r\n"),
	TEXT("       -c <Port>        COM1: - COM9:\r\n"),
	TEXT("       -r <BaudRate>    110 - 115200\r\n"),
	TEXT("       -p <Parity>      0:None, 1:Odd, 2:Event\r\n"),
	TEXT("       -b <ByteSize>    5 - 8\r\n"),
	TEXT("       -s <StopBits>    0:1, 1:1.5, 2:2\r\n"),
	TEXT("       -l <LoopCount>   0 - ???\r\n"),
	TEXT("       -?               help\r\n"),
};
#define NELEMS(a) (sizeof(a)/sizeof((a)[0]))
void
Usage(void)
{
int i;
	for (i = 0; i < NELEMS(usage_text); i++) {
		RETAILMSG(1, (usage_text[i]));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -