📄 sl811mouse.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 + -