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

📄 lcdtime.c

📁 uclinux 的lcd16207_example
💻 C
字号:
/*
 *  ioctl.c - the process to use ioctl's to control the kernel module
 *
 *  Until now we could have used cat for input and output.  But now
 *  we need to do ioctl's, which require writing our own process.
 */

/* 
 * device specifics, such as ioctl numbers and the
 * major device file. 
 */
#include "lcd_16207.h"

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>		/* open */
#include <unistd.h>		/* exit */
#include <sys/ioctl.h>		/* ioctl */


//convert string to uint
int DecStrToUint(char * decStr, unsigned long *number)
{
  char * decVals="0123456789"; 
  int val=0;
  *number=0;
  int i,j;
  //printf("StrToUint: %20s\n",decStr);
  for(i=0;i<11;i++)
    {
      val = -1;
      for(j=0;j<10;j++)
	{
	  //printf("j:%i- StrToUint: Value: %c, %i\n", j, decStr[i],val);
	  if (decVals[j]==decStr[i])
	    {
	      val = j;
	      //printf("StrToUint: Value: %c, %i\n", decStr[i],val);
	      break;
	    }
	  else if (decStr[i]=='\0')
	    {
	      //printf("StrToUint:Result: Number: %20s, %10u\n", decStr,*number);
	      val=-2;
	      break;
	    }
	}
      if (val<0)
	{
	  //printf("value <0 :%i decStr:%c\n", val, decStr[i]);
	  if (val==-1)
	    return -1;
	  if (val==-2)
	    return 0;//wow everything went fine :-)
	}
      if ( (*number<(unsigned long)429496729)||( (*number==(unsigned long)429496729)&&(val<6)) )
	{
	  *number=(*number)*10 + val;
	}
      else
	{
	  //printf("number too big!\n");
	  return -1;
	}
      //printf("StrToUint: Number%i: %c, %i, %u\n", i, decStr[i], val ,*number);
    }
  return -1;
}

ioctl_set_disp_time(int file_desc, unsigned long time)
{
  int ret_val;
  
  ret_val = ioctl(file_desc, IOCTL_SET_DISP_WAIT, time);
  
  if (ret_val < 0) {
    printf("ioctl_set_msg failed:%d\n", ret_val);
    exit(-1);
  }
}

/* 
 * Main - Call the ioctl functions 
 */
int main(int argc, char **argv, char **envp)
{
  int i, j, file_desc, ret_val, info;
  char hexStr[11];
  
  info = 0;
  unsigned long time=0;

  file_desc = open(DEVICE_FILE_NAME, 0);
  if (file_desc < 0) {
    printf("Can't open device file: %s\n", DEVICE_FILE_NAME);
    exit(-1);
  }

  strncpy(hexStr, argv[1], 10);
  hexStr[10] = '\0';

  DecStrToUint(hexStr, &time);

  ioctl_set_disp_time(file_desc, time);

  close(file_desc);
  return 0;
}

⌨️ 快捷键说明

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