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; } }