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

📄 test_wg.c

📁 linux 2.4 的用gpio 模拟韦根输出的驱动!与标准韦根设备对接.反应灵敏!
💻 C
字号:
#include <stdio.h>     
#include <stdlib.h>
#include <sys/ioctl.h>  
#include <unistd.h>
#include <fcntl.h>

#define DEVICE_WG "/dev/wgout"

unsigned char wg_hid;
unsigned short wg_pid;
/*
调用说明:
wg_buff[3]
wg_buff[0]:存放HID
wg_buff[1]:存放PID低位
wg_buff[2]:存放PID高位
接收端:
会先接收到  HID 高到--->PID 高位--->

*/

int main(int argc,char *argv[])
{
	int fd; 
	int val=-1;
	int ret = 0; 
	int i;
	unsigned char wg_buff[3]; 

  if(argc<4)
  {
  	  wg_hid=0x86;
  	  printf("hid is 0x%02x \n",wg_hid);
      wg_pid=0x8b6c;
      printf("pid is 0x%02x\n",wg_pid);
  }
  else 
  {
  	/*
  	 wg_hid=atoi(argv[1]);
  	 printf("hid is %d \n",wg_hid);
  	 wg_pid=(atoi(argv[2])<<8)+atoi(argv[3]);
  	 printf("pid is %d \n",wg_pid);
  	 */
  	  wg_hid=0x33;
  	  printf("hid is 0x%02x \n",wg_hid);
      wg_pid=0x5aa5;
      printf("pid is 0x%02x\n",wg_pid);
  }
	//总结:应用软件只管按地址用标准函数打开设备文件,系统会自动调用
	if((fd=open(DEVICE_WG,O_RDONLY | O_NONBLOCK))<0)
	{
		perror("can not open device");
		exit(1);
	}

	while(1)
	{
		printf("\n1:wg_output,0:quit :");//打印到PC端通信界面,如超级终端
		scanf("%d",&val);
		if(val==1) 
		{//Lcd_ctl_ioctl(struct inode*inode,struct file *flip,unsigned int command,unsigned long arg)
			
			wg_buff[0]=wg_hid;
			wg_buff[1]=wg_pid;
			wg_buff[2]=wg_pid>>8;
			ret =ioctl(fd,1,wg_buff);
			//for(i=0;i<0xfff;i++);
			//ret =ioctl(fd,1,wg_buff);
			//for(i=0;i<0xfff;i++);
			//ret =ioctl(fd,1,wg_buff);
			//printf("\n");
			//printf("wg_output return %d \n", ret);
		}

		else if(val==0) {
			close(fd);
			exit(0);
		}
	}
	return 0;
}

⌨️ 快捷键说明

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