io_lib.c

来自「CGI程序实例」· C语言 代码 · 共 75 行

C
75
字号
#include "io_lib.h"// read from device file and return value of byteunsigned long int read_dev(files file){	char string[STRING_LEN]={0};	FILE *f=NULL;	int i=0;	// open requested file for reading	switch(file)	{		case switches:			f=fopen(SWITCHES,"r");		break;		case buttons:			f=fopen(BUTTONS,"r");		break;			}	// read line	while((i<10) && (string[i++]=fgetc(f)));	fclose(f);	// return value	return atol(string);}// write byte(s) to device filevoid write_dev(files file, char *val){	FILE *f=NULL;	// open requested file for writing	switch(file)	{		case leds_red:			f=fopen(LEDS_RED,"r+");		break;		case leds_green:			f=fopen(LEDS_GREEN,"r+");		break;		case seg7:			f=fopen(SEG7,"r+");		break;	}	fprintf(f,val);	fclose(f);}int write_lcd(char *msg)
{
	int i, file_desc, ret_val;
	char msg32[33];
		file_desc = open(DEVICE_FILE_NAME, 0);
	if (file_desc < 0) {
		printf("Can't open device file: %s\n", DEVICE_FILE_NAME);
		return -1;
	}

	if (strlen(msg) >=0 && strlen(msg) < 32) {
		strcpy(msg32, msg);			// copy the short string		
		for(i = strlen(msg); i<32 ;i++)		// fill the rest with space symbols
			msg32[i] = (char)0x20;
	
   	} else
		strncpy(msg32, msg, 32);		// if string is equal or greater copy just 32 characters
    	
	msg32[32] = '\0';				// terminate string
		// calls IOCTL_SET_MSG command of lcd device driver	if(ioctl(file_desc, IOCTL_SET_MSG, msg32) < 0)		return -2;
	close(file_desc);
	return 0;
}

⌨️ 快捷键说明

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