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

📄 sl811mouse.c

📁 这个事使用sl811做的鼠标
💻 C
字号:
#include "..\sl811\host_811.h"
#include "..\target\def.h"
#include "..\target\44blib.h"

extern pEPDesc 		pEnp;			// Endpoint descriptor struct
extern BYTE 			DBUF[256];
extern BOOL	DATA_INPROCESS;				// set when we are in a data pipe transfer

struct HidMouseStruct
{
	int button_L,button_R,button_M;
	int x;
	int y;
	int wheel;
};

struct HidMouseStruct ReceiveMouseData;


int MouseInit()
{
	BYTE	pid  = PID_IN;
	WORD	wLen ;		// swap back for correct length
	BYTE	ep0 = 1;			// always endpoint zero

	int errors =0, i;
	BYTE temp,temp1;
	char str[10];


/*	sl811Initformouse();
	EnumUsbDevformouse(2);

	VendorCmd(2,0x00,0x09,0x0100,0,0,DBUF);	
	VendorCmd(2,0x21,0x0a,0,0,0,DBUF);
	VendorCmd(2,0xa1,0x01,0x01,0,4,DBUF);	*/



	if((sl811Initformouse()==1) && (EnumUsbDevformouse(2)==1))
	{
//	VendorCmd(2,0xa3,0x00,0,1,4,DBUF);
//	VendorCmd(2,0xa3,0x00,0,2,4,DBUF);		
	
		VendorCmd(2,0x00,0x09,0x0100,0,0,DBUF);	
		VendorCmd(2,0x21,0x0a,0,0,0,DBUF);
		VendorCmd(2,0xa1,0x01,0x01,0,4,DBUF);	
	}
	else
	{
		return 0;
	}
	return 1;
}


void MouseTask()
{
	if(MouseInit())
	{
		while(1)
		{		
			DataRW(2, 0x81, 0x40, 4, DBUF);	
			if(DATA_INPROCESS)
			{
				if(DBUF[0]&0x01)
					ReceiveMouseData.button_L=1;
				else
					ReceiveMouseData.button_L=0;
		
				if(DBUF[0]&0x02)
					ReceiveMouseData.button_R=1;
				else
					ReceiveMouseData.button_R=0;
		
				if(DBUF[0]&0x04)
					ReceiveMouseData.button_M=1;
				else
					ReceiveMouseData.button_M=0;
				
				
				if(DBUF[1]&0x80)			
					ReceiveMouseData.x=DBUF[1]-256;				
				else
					ReceiveMouseData.x=DBUF[1];	
				
				if(DBUF[2]&0x80)			
					ReceiveMouseData.y=DBUF[2]-256;				
				else
					ReceiveMouseData.y=DBUF[2];	
		
				ReceiveMouseData.wheel=DBUF[3];
			
				Uart_Printf("L:%d, R:%d, M:%d\n",ReceiveMouseData.button_L,ReceiveMouseData.button_R,ReceiveMouseData.button_M);
			
				Uart_Printf("Data:%d, %d, %d\n",
					ReceiveMouseData.x,ReceiveMouseData.y,ReceiveMouseData.wheel);
			}			
			Delay(1000);

		}
	}
	else
	{
		Uart_Printf("No mouse!");
		while(1)
		{
			Delay(1000);			
		}
	
	}
}




⌨️ 快捷键说明

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