組み込みLINUXドライバーの学習4.キャラクターデバイスドライバーのプログラミング(4)ユーザー空間実装コードのドライバーテスト
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
void print_led_state(int fd){
int ubuf[4];
int ret_r;
ret_r = read(fd,ubuf,sizeof(int)*4);
int i = 0;
for(; i <4 ; i++){
if(ubuf[i] == 0){
printf("led%d为开\n",i);
}
else{
printf("led%d为关\n",i);
}
}
}
int main(int argc , char * argv[]){
if(argc != 3){
printf("参数错误:\n");
printf(" comm <filename> <on|off>\n");
return -1;
}
int fd;
fd = open(argv[1],O_RDWR);
if (fd < 0) {
printf("打开文件%s失败 fd : %d\n",argv[1],fd);
return -1;
}
int uindex;
if(strcmp(argv[2],"on") == 0){
uindex = 0;
write(fd,&uindex,4);
print_led_state(fd);
}
else if(strcmp(argv[2],"off") ==0){
uindex = 1;
write(fd,&uindex,4);
print_led_state(fd);
}
else {
printf("参数错误\n");
close(fd);
return -1;
}
close(fd);
return 0;
}