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