package com.alfeye.a1io;
|
|
import android.text.TextUtils;
|
|
import java.io.BufferedWriter;
|
import java.io.FileWriter;
|
import java.io.IOException;
|
|
/**
|
* @Date:2019/2/11 14:41
|
* @Author: yellow
|
* @类描述:
|
*/
|
public abstract class A1IoDevBaseUtil {
|
|
/**
|
* 打开补光灯
|
*
|
* @param value 0-100 值越大 亮度越大
|
*/
|
public abstract void openLED(int value);
|
|
/**
|
* 关闭补光灯
|
*/
|
public abstract void closeLED();
|
|
/**
|
* 距感电源上电
|
*/
|
public abstract void openDIST();
|
|
/**
|
* 距感电源下电
|
*/
|
public abstract void closeDIST();
|
|
/**
|
* 红外灯光上电
|
*/
|
public abstract void openIRDA();
|
|
/**
|
* 红外灯光下电
|
*/
|
public abstract void closeIRDA();
|
|
/**
|
* 4G上电
|
*/
|
public abstract void open4G();
|
|
/**
|
* 4G下电
|
*/
|
public abstract void close4G();
|
|
/**
|
* 打开门铃
|
*/
|
public abstract void openBELL();
|
|
/**
|
* 关闭门铃
|
*/
|
public abstract void closeBELL();
|
|
/**
|
* 开锁
|
*/
|
public abstract void openUNLOCK();
|
|
/**
|
* 关锁
|
*/
|
public abstract void closeUNLOCK();
|
|
|
/**
|
* 串口上电
|
*/
|
public abstract void openPORT();
|
|
/**
|
* 串口下电
|
*/
|
public abstract void closePORT();
|
|
/**
|
* U口上电
|
*/
|
public abstract void openUK();
|
|
/**
|
* U口下电
|
*/
|
public abstract void closeUK();
|
|
/**
|
* 扫描头下电
|
*/
|
public abstract void CloseScanningHead();
|
|
/**
|
* 扫描头下电
|
*/
|
public abstract void openScanningHead();
|
|
|
/**
|
* A1 IO控制
|
*
|
* @param flag 1为上电,0为下电
|
*/
|
public boolean openPower(String io, int flag) {
|
try {
|
BufferedWriter bufWriter = new BufferedWriter(new FileWriter("/sys/class/gpio_control/gpio/gpio_control"));
|
bufWriter.write(io + flag);
|
bufWriter.close();
|
return true;
|
} catch (IOException e) {
|
}
|
return false;
|
}
|
|
/**
|
* A1 PWM灯光控制
|
*
|
* @param flag 1为上电,0为下电
|
*/
|
public boolean pwmPower(int flag) {
|
try {
|
BufferedWriter bufWriter = new BufferedWriter(new FileWriter("/sys/class/pwm_ledctrl/ledctrl/ledctrl/"));
|
///sys/devices/virtual/pwm_ledctrl/ledctrl # echo "100" > ledctrl
|
bufWriter.write("" + flag);
|
bufWriter.close();
|
return true;
|
} catch (IOException e) {
|
}
|
return false;
|
}
|
|
/**
|
* 伟根协议
|
*
|
* @param agreement 协议号
|
* @param number 卡号 16进制
|
* @param switchover 大小端切换
|
* @return
|
*/
|
public boolean openPower(int agreement, String number, boolean switchover) {
|
try {
|
if (TextUtils.isEmpty(number)) {
|
return false;
|
}
|
BufferedWriter bufWriter = new BufferedWriter(new FileWriter("/sys/class/gpio_control/gpio/wiegand"));
|
number = interceptNumber(agreement, number, switchover);
|
bufWriter.write(agreement + "," + number);
|
bufWriter.close();
|
return true;
|
} catch (IOException e) {
|
}
|
return false;
|
}
|
|
public boolean openPower(int agreement, String number) {
|
return openPower(agreement, number, false);
|
}
|
|
private String interceptNumber(int agreement, String number, boolean switchover) {
|
if (TextUtils.isEmpty(number)) {
|
return null;
|
}
|
try {
|
//伟根26
|
int weiGen26 = 26;
|
if (agreement == weiGen26) {
|
String subStr;
|
if (switchover) {
|
//切换大小端
|
subStr = weiGen26Str(changeString(number));
|
|
} else {
|
subStr = weiGen26Str(number);
|
}
|
return subStr;
|
} else {
|
String subStr;
|
if (switchover) {
|
//切换大小端
|
subStr = changeString(number);
|
} else {
|
subStr = number;
|
}
|
return subStr;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return "";
|
}
|
|
|
/**
|
* 26固定格式
|
*
|
* @param number
|
* @return
|
*/
|
private String weiGen26Str(String number) {
|
String title = "00";
|
return title + (number.substring(2, number.length()));
|
}
|
|
/**
|
* 调换16进制 大小端
|
*
|
* @param str
|
* @return
|
*/
|
private String changeString(String str) {
|
StringBuilder builder = builder = new StringBuilder();
|
try {
|
for (int i = str.length(); i > 1; i--) {
|
String newStr;
|
if (i % 2 == 0) {
|
newStr = str.substring(i - 2, i);
|
builder.append(newStr);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return builder.toString();
|
}
|
|
/**
|
* 切换大小端续
|
*/
|
public static byte[] changeBytes(byte[] a) {
|
try {
|
byte[] b = new byte[a.length];
|
for (int i = 0; i < b.length; i++) {
|
b[i] = a[b.length - i - 1];
|
}
|
return b;
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
}
|