コード例 #1
0
ファイル: gpio_ul.c プロジェクト: liuzhengbang/simple_rpi
int main(int argc, char **argv) {
	int iResult=0;
	struct message *trans_message;
	char buf_message[BUFSIZE];
	FILE *pFile;

	trans_message = (struct message *)malloc(sizeof(struct message));
	pFile = fopen("/dev/gpio", "r+");

	// Check if in read mode
	if (argc == 2 && strcmp(argv[1], "-r") == 0) 
	{
		while (fgets(buf_message, 256, pFile) != NULL) 
		{
			sscanf(buf_message,"%d %s",&trans_message->value,trans_message->mes);
			printf("value: %d message: %s\n", trans_message->value,trans_message->mes);
		}
	}
	// Check if in write mode
	else if (argc == 4 && strcmp(argv[1], "-w") == 0) 
	{

		trans_message->value=atoi(argv[2]);
		strncpy(trans_message->mes, argv[3], BUFSIZE);

		
		iResult=sprintf(buf_message,"%d %s\n",trans_message->value,trans_message->mes);
		
		fwrite(&buf_message,iResult,1,pFile);
	}

	// Otherwise invalid
	else 
	{
		printManPage();
	}
	if(trans_message) free(trans_message);
	fclose(pFile);
	return 0;
}
コード例 #2
0
int main(int argc, char **argv) {
	char line[128], line2[128];
	int ii=0, count = 0, oflags, pFile;
	char buffer[128];
	struct sigaction action, oa;
	
	/* Check to see if the nibbler successfully has mknod run
	   Assumes that nibbler is tied to /dev/nibbler */
	
	pFile = open("/dev/mytimer", O_RDWR);
	if (pFile < 0) {
		fprintf (stderr, "mytimer_example module isn't loaded\n");
		return 1;
	}

	
	if (argc == 2 && strcmp(argv[1], "-l") == 0) {
		read(pFile,line, 128);			
		while(line[ii]!='\0')
		{if(line[ii]=='/')
		line[ii]='\n';
		ii++;
		}
printf("%s", line);
	}

	// Check if in timer set mode
	else if (argc == 4 && strcmp(argv[1], "-s") == 0) 
	{
	int i=0, j=0;
	for(i; *(*(argv + 2) + i) != '\0'; i++)
	buffer[i] = *(*(argv + 2) + i);
	buffer[i++]=' ';
	for(j;*(*(argv + 3) + j) != '\0';i++,j++)
	buffer[i]= *(*(argv + 3) + j);
	buffer[i]='\0';	

	/* Scanning buffer */

read(pFile,line2, 128);
ii=0;
if(line2[ii]=='\0'){

	write(pFile, buffer, (strlen(buffer)+1));				
	args= *(argv+3);
	//printf("Message inputted: %s",buffer);
	
	memset(&action, 0, sizeof(action));
	action.sa_handler = sighandler;
	action.sa_flags = SA_SIGINFO;
	sigemptyset(&action.sa_mask);
	sigaction(SIGIO, &action, NULL);
	fcntl(pFile, F_SETOWN, getpid());
	oflags = fcntl(pFile, F_GETFL);
	fcntl(pFile, F_SETFL, oflags | FASYNC);
	//printf("Sleep\n");
	pause();
	}

else{
while(line2[ii]!=' ')
ii++;

char string1[ii+1];
ii=0;
while(line2[ii]!=' ')
{string1[ii]=line2[ii];
ii++;
}
string1[ii]='\0';
ii++;
int delay=0;


if(strcmp(argv[3],string1)==0)
{

while(line2[ii]!='\0')
{if(line2[ii]!='/')
delay = delay * 10 + (line2[ii]-'0');
ii++;

}
printf("Timer %s already exists and has %d seconds remaining to expiration!\n",string1,delay);


}
else 
printf("A timer exists already\n");

	




	



}
}
	// Otherwise invalid
	else {
		printManPage();
	}

	close(pFile);
	return 0;
}