今天在测试GPIO口的时候遇到了这样的一个问题:/dev/xxxx open failed
public class GPIO_Test {
static{
System.loadLibrary("gpiotest");
}
public native int open();
public native int write(int count);
public native int read();
public native void close();
}
在JNI调用C方法时返回-1,并出现/dev/xxxx open failed,驱动加载失败,说明权限上有问题,可通过adb命令更改权限。
1、cd abd :进入adb目录
2、adb remount :重新挂载系统分区,使其重新可写
3、adb shell :远程登录到Android手机的Linus系统
4、cd dev :进入Linus系统下外部设备目录(驱动)
5、chmod 777 R2add :任何人都具有读、写、运行的权限
然后再次运行便加载成功
* 0,表示,pgio口1拉低
* 1,表示,pgio口1拉高
* 2,表示,pgio口2拉低
* 3,表示,pgio口2拉高
在IO控制上,我这边双数表示拉低,单数表示拉高,返回-1表示失败,返回0表示成功。
0、1控制一个IO口,2、3控制一个IO口,当连接继电器时,第一次操作状态改变会有声音,之后再不发生状态变化就不会有声音了。如果把一个IO口拉高了,比如输入1,它会一直保持拉高状态,除非断电或输入0,它才会改变状态,并发出声音。