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

📄 testuart.c

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 C
字号:
#include <stdio.h>
#include <string.h> 

#include <asixwin.h>
#include <asixapp.h>

#include <sys\sysdebug.h>

extern void testuart( );

TASKDESCRIPTION TestUartTskDesp = 
{"test uart",	ASIX_APP,	0,	news,		2048,	1,	LCD_WIDTH,	LCD_HEIGHT,	testuart,	APP_PRI};


void testuart( )
{
	MSG 	msg;
 	U32		mainwin;
	U32		btsnd, btrcv, st;
//	U32		hGC;
 	U8		quit = 0;
	char	begin[] = "OK", parity[] = "ER", len_b[2], sendbuf[32] = "abcd",rcvbuf[32];
	U32		bufSize = 32;
//	U32		tskid;
	U32		count = 0, temp, total = 0;

	mainwin = CreateWindow(	WNDCLASS_WIN,			
							"串口测试",			
							WS_OVERLAPPEDWINDOW,
							0,0,				
							PHY_LCD_W,PHY_LCD_H,
							0,				
							0,				
							NULL);			

	st = CreateWindow( WNDCLASS_STATIC,
					NULL,
					WS_CHILD | SS_TEXT | SS_MULTILINE,
					20,30,
					32,20,
					mainwin,
					0,
					NULL);

	btsnd = CreateWindow( WNDCLASS_BUTTON,
					"发送",
					WS_CHILD | BS_REGULAR,
					20,30,
					32,20,
					mainwin,
					0,
					NULL);

	btrcv = CreateWindow( WNDCLASS_BUTTON,
				"接收",
				WS_CHILD | BS_REGULAR,
				60,30,
				32,20,
				mainwin,
				0,
				NULL);

//	get_tid( &tskid );
	OpenUart( UART0 );
//	SysOpenDev( tskid, UART0_ID );
//	dbgprintf( "open uart!" );
	
	while( !quit )
	{
		ASIXGetMessage( &msg, NULL, 0, 0 );
		switch( msg.message )
		{
			case WM_COMMAND:
				if( msg.lparam == btsnd )
					//SysWriteDev( UART0_ID, sendbuf, 8, 0 );
					WriteUart( UART0_ID, sendbuf, 8 );
				else if( msg.lparam == btrcv )
				{
					EnableWindow( btsnd, FALSE );

//					SysReadDev( UART0_ID, rcvbuf, 1, 0 );
//					dbgoutput( "receive '%c' ", rcvbuf[0] );
				}
				break;
			case SM_DATA_RECEIVED:
				if( msg.lparam == UART0_ID )
				{
					count += msg.wparam;
					total += msg.wparam;
					//dbgoutput( "received: %d bytes", msg.wparam );
					dbgoutput( "total received: %ld bytes", total );
					
					while( count > bufSize )
					{
						SysReadDev( UART0_ID, rcvbuf, (U16)bufSize, 0 );
//						ReadUart( UART0_ID, rcvbuf, (U16)bufSize );
						count -= bufSize;
						rcvbuf[bufSize] = '\0';
						//dbgoutput( "receive '%s' ", rcvbuf );
					}

//					count -= ReadUart( UART0_ID, rcvbuf, count );
//					temp = SysReadDev( UART0_ID, rcvbuf, (U16)count, 0 );
					temp = ReadUart( UART0_ID, rcvbuf, (U16)count );
					rcvbuf[temp] = '\0';
					count = count - temp;
					//dbgoutput( "receive '%s' ", rcvbuf );
				}
				break;
			case WM_QUIT:
				quit = 1;
				break;
		}
		DefWindowProc(msg.message, msg.lparam, msg.data, msg.wparam); 
	}

//	SysCloseDev( tskid, UART0_ID );
	CloseUart( UART0 );
	
	DestroyWindow( mainwin );
	EndofTask();
}

⌨️ 快捷键说明

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