Commit c77517a7 by youguoqing

调整:适配UHF_U8设备

parent f7c16ce3
......@@ -13,7 +13,7 @@ android {
minSdkVersion 21
targetSdkVersion 28
versionCode 1
versionName "1.0"
versionName "1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
......@@ -45,7 +45,7 @@ dependencies {
implementation 'com.squareup.okio:okio:1.17.4'
implementation 'com.tencent.bugly:crashreport:3.4.4'
implementation 'me.jessyan:autosize:1.1.2'
implementation (name: 'BaseLib', ext: 'aar')
implementation (name: 'fn_U8', ext: 'aar')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
......
package com.fn.useries.operation;
import com.fn.useries.model.IResponseHandler;
import com.fn.useries.model.Message;
import com.series.inter.InventoryInterface;
public interface IUSeries {
/**
* 打开串口
* @param moduleName 模块名
* @return true_ 打开串口成功,false_ 打开串口失败
* 初始化,依次执行上电、打开串口
*/
Message openSerialPort(String moduleName);
void initService();
/**
* 关闭串口
*
* @return true_ 关闭串口成功,false_ 关闭串口失败
*/
Message closeSerialPort();
/**
* 模块上电
* @param moduleName 模块名
* @return true_ 上电成功,false_ 上电失败
*/
Message modulePowerOn(String moduleName);
/**
* 模块下电
* @param moduleName 模块名
* @return true_ 下电成功,false_ 下电失败
* 释放资源,依次执行关闭串口、下电
*/
Message modulePowerOff(String moduleName);
void releaseService();
/**
* 开始盘询
* @param responseHandler 盘询结果回调
* @param inventoryInterface 盘询结果回调
* @return true_ 开始盘询成功成功,false_ 开始盘询失败
*/
boolean startInventory(IResponseHandler responseHandler);
void startInventory(InventoryInterface inventoryInterface);
/**
* 停止盘询
* @return true_ 停止盘询成功,false_ 停止盘询失败
*/
boolean stopInventory();
/**
* 单次盘询
* @return 盘询结果
*/
Message Inventory();
/**
* 读标签
*
* @param block 读取区域
* @param w_count 读取长度
* @param w_offset 偏移
* @param acs_pwd 访问密码
* @return 读取标签数据
*/
Message readTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] acs_pwd);
/**
* 写标签
*
* @param block 写入区域
* @param w_count 写入长度
* @param w_offset 偏移
* @param data 写入数据
* @param acs_pwd 访问密码
* @return 是否写入成功
*/
Message writeTagMemory(byte[] EPC, byte block, byte w_count, byte w_offset, byte[] data, byte[] acs_pwd);
/**
* 锁标签
*
* @param block 锁定区域
* @param operation 操作类型
* @param acs_pwd 访问密码
* @return 返回错误代码
*/
Message lockTagMemory(byte[] EPC, byte block, Enum operation, byte[] acs_pwd);
/**
* 销毁标签
*
* @param kill_pwd 销毁密码
* @return 返回错误代码
*/
Message killTag(byte[] EPC, byte[] kill_pwd);
void stopInventory();
/**
* 设置参数
......@@ -110,5 +44,4 @@ public interface IUSeries {
*/
boolean setParams(String paraName, String paraValue);
}
package com.fn.useries.operation;
import com.fn.useries.utils.U8Property;
import com.series.bean.ReturnBean;
import com.series.inter.InventoryInterface;
import com.series.operate.ReaderSeries;
import com.uhf.uhf.serialport.SerialPort;
import com.utils.GpioUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class M11U8Service implements IUSeries{
private static final String STR_SERIAL_PORT = "/dev/ttyHSL2";
private static final String STR_BAUD = "115200";
// 射频功率
public static final String PARA_POWER = "PARA_POWER";
// 模块温度
public static final String TEMPERATURE = "TEMPERATURE";
// session
public static final String SESSIONSTATE = "SESSIONSTATE";
// flag
public static final String FLAGSTATE = "FLAGSTATE";
private static M11U8Service mUSeries;
private ReaderSeries readerSeries;
private SerialPort serialPort;
private M11U8Service() {}
public static M11U8Service getInstance() {
if (mUSeries == null) {
mUSeries = new M11U8Service();
}
return mUSeries;
}
@Override
public void initService() {
//Power on 上电
GpioUtil.M11_PowerOn();
//Open serial port and initialize RFID 打开串口,初始化RFID
readerSeries = ReaderSeries.getInstance();
int baud;
try {
baud = Integer.parseInt(STR_BAUD);
serialPort = new SerialPort(new File(STR_SERIAL_PORT), baud, 8);
readerSeries.init(serialPort.getInputStream(), serialPort.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void releaseService() {
if (serialPort != null) {
serialPort.close();
}
GpioUtil.M11_PowerOFF();
}
@Override
public void startInventory(InventoryInterface inventoryInterface) {
try {
initInventoryParam(); //初始化,开启数据接收线程
readerSeries.inventory(inventoryInterface, true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 初始化盘询所需资源
*
* @throws Exception
*/
private void initInventoryParam() throws Exception {
//Set up antenna, only one antenna is available for handheld device 设置天线,手持设备只有一根天线
List<Integer> ants = new ArrayList<>();
ants.add(0);
readerSeries.setAnts(ants);
//Setting custom inventory parameters 设置自定义盘存参数
final int sessionState = U8Property.getSessionState();
int flagState = U8Property.getFlagState();
readerSeries.setCustomSession(sessionState, flagState, 1);
}
@Override
public void stopInventory() {
readerSeries.stop();
}
@Override
public String getParams(String paraName) {
if (paraName.equals(PARA_POWER)) {
ReturnBean returnBean = readerSeries.getPower();
if (returnBean.isSuccess()) {
returnBean.getMsg();
}
} else if (paraName.equals(TEMPERATURE)) {
ReturnBean returnBean = readerSeries.getReaderTemperature();
if (returnBean.isSuccess()) {
returnBean.getMsg();
}
} else if (paraName.equals(SESSIONSTATE)) {
return U8Property.getSessionState() + "";
} else if (paraName.equals(FLAGSTATE)) {
return U8Property.getFlagState() + "";
}
return null;
}
@Override
public boolean setParams(String paraName, String paraValue) {
if (paraName.equals(PARA_POWER)) {
ReturnBean returnBean = readerSeries.setPower(Integer.parseInt(paraValue));
return returnBean.isSuccess();
} else if (paraName.equals(SESSIONSTATE)) {
U8Property.saveSessionState(Integer.parseInt(paraValue));
return true;
} else if (paraName.equals(FLAGSTATE)) {
U8Property.saveFlagState(Integer.parseInt(paraValue));
return true;
}
return false;
}
}
......@@ -6,7 +6,6 @@ import android.util.Log;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.fn.useries.operation.U8Series;
import com.fn.useries.reader.CMD;
import com.fn.useries.reader.ERROR;
import com.fn.useries.reader.HEAD;
......
......@@ -36,7 +36,6 @@ public class U8Property {
static public int getFlagState(){
Context context = StmApplication.getInstance().getApplicationContext();
SharedPreferences spf = context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = spf.edit();
int state = spf.getInt(KEY_FLAG, 0);
return state;
}
......@@ -66,7 +65,6 @@ public class U8Property {
static public int getSoftSound(){
Context context = StmApplication.getInstance().getApplicationContext();
SharedPreferences spf =context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
//SharedPreferences.Editor editor = spf.edit();
return spf.getInt(KEY_SOFTWARE_SOUND, 1);
}
......
......@@ -13,7 +13,7 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import com.fn.useries.operation.U8Series;
import com.fn.useries.operation.M11U8Service;
import com.fn.useries.reader.ERROR;
import com.fn.useries.utils.MusicPlayer;
import com.stm.asset.R;
......@@ -30,8 +30,6 @@ import com.stm.asset.view.TextMoveLayout;
*/
public class DeviceSetActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private TextMoveLayout powerLayout;
private SeekBar powerSb;
private TextView moveTextDBM;
......@@ -40,7 +38,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private Spinner sessionSpinner;
private Spinner flagSpinner;
private U8Series mUSeries;
private M11U8Service mUSeries;
private int screenWidth;
@Override
......@@ -63,7 +61,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
powerLayout = findViewById(R.id.set_power_layout);
powerSb = findViewById(R.id.set_power_sb);
powerSb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerImp());
powerSb.setMax(33);
powerSb.setMax(13);
layoutParams = new ViewGroup.LayoutParams(screenWidth, 40);
temperatureEt = findViewById(R.id.set_temperature_et);
......@@ -74,13 +72,13 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
findViewById(R.id.inventory_save_btn).setOnClickListener(this);
mUSeries = U8Series.getInstance();
mUSeries = M11U8Service.getInstance();
}
@Override
protected void onResume() {
super.onResume();
mUSeries.modulePowerOn(MODEL);
mUSeries.initService();
powerLayout.removeAllViews();
powerLayout.addView(moveTextDBM, layoutParams);
if (mUSeries != null) {
......@@ -92,13 +90,13 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
@Override
protected void onPause() {
super.onPause();
mUSeries.modulePowerOff(MODEL);
mUSeries.releaseService();
}
private void getPower() {
try {
Thread.sleep(800);
String outPowerSetParams = mUSeries.getParams(U8Series.PARA_POWER);
String outPowerSetParams = mUSeries.getParams(M11U8Service.PARA_POWER);
Log.i("DeviceSetActivity", "M10_U8:getPower " + outPowerSetParams);
if (outPowerSetParams.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
......@@ -117,13 +115,13 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
String[] mItemsFlag = { "A", "B" };
ArrayAdapter<String> simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItems);
sessionSpinner.setAdapter(simpleAdapter);
String sessionParams = mUSeries.getParams(U8Series.SESSIONSTATE);
String sessionParams = mUSeries.getParams(M11U8Service.SESSIONSTATE);
if (sessionParams != null && !"".equals(sessionParams)) {
sessionSpinner.setSelection(Integer.parseInt(sessionParams));
}
simpleAdapter = new ArrayAdapter<>(this, R.layout.view_simple_spinner_item, mItemsFlag);
flagSpinner.setAdapter(simpleAdapter);
String flagParams = mUSeries.getParams(U8Series.FLAGSTATE);
String flagParams = mUSeries.getParams(M11U8Service.FLAGSTATE);
if (flagParams != null && !"".equals(flagParams)) {
flagSpinner.setSelection(Integer.parseInt(flagParams));
}
......@@ -138,7 +136,7 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private void getTemperature() {
temperatureEt.setText("");
try {
String strTemperature = mUSeries.getParams(U8Series.TEMPERATURE);
String strTemperature = mUSeries.getParams(M11U8Service.TEMPERATURE);
if (strTemperature.trim().equalsIgnoreCase(ERROR.RECEVICE_INCOMPLETE)) {// 接收异常
MusicPlayer.getInstance().play(MusicPlayer.Type.MUSIC_ERROR);
StmApplication.getInstance().showToastShort(ERROR.RECEVICE_INCOMPLETE);
......@@ -156,21 +154,21 @@ public class DeviceSetActivity extends BaseActivity implements View.OnClickListe
private boolean setSessionAndFlag() {
int sessionIndex = sessionSpinner.getSelectedItemPosition();
int flagIndex = flagSpinner.getSelectedItemPosition();
boolean setSessionStateResult = mUSeries.setParams(U8Series.SESSIONSTATE, Byte.toString((byte) sessionIndex));
boolean setFlagStateResult = mUSeries.setParams(U8Series.FLAGSTATE, Byte.toString((byte) flagIndex));
boolean setSessionStateResult = mUSeries.setParams(M11U8Service.SESSIONSTATE, Byte.toString((byte) sessionIndex));
boolean setFlagStateResult = mUSeries.setParams(M11U8Service.FLAGSTATE, Byte.toString((byte) flagIndex));
return (setSessionStateResult && setFlagStateResult);
}
private boolean setPower() {
byte btOutputPower;
String outputPower;
try {
String powerStr = moveTextDBM.getText().toString();
btOutputPower = (byte) Integer.parseInt(powerStr.subSequence(0, powerStr.indexOf("dBm")).toString());
outputPower = powerStr.subSequence(0, powerStr.indexOf("dBm")).toString();
} catch (Exception e) {
return false;
}
try {
return mUSeries.setParams(U8Series.PARA_POWER, Byte.toString(btOutputPower));
return mUSeries.setParams(M11U8Service.PARA_POWER, outputPower);
} catch (Exception e) {
Log.i("DeviceSetActivity", "M10_U8:setPowerParamsException" + e.toString());
return false;
......
......@@ -10,11 +10,11 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.room.Room;
import com.fn.useries.model.ResponseHandler;
import com.fn.useries.operation.U8Series;
import com.fn.useries.operation.M11U8Service;
import com.fn.useries.reader.model.InventoryBuffer;
import com.fn.useries.reader.server.ReaderHelper;
import com.fn.useries.utils.Tools;
import com.series.inter.InventoryInterface;
import com.stm.asset.R;
import com.stm.asset.adapter.InventoryAdapter;
import com.stm.asset.base.BaseActivity;
......@@ -36,12 +36,10 @@ import java.util.List;
*/
public class InventoryActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private Button beginBtn;
private TextView txtCountTxt;
private U8Series mUSeries;
private M11U8Service mUSeries;
private ReaderHelper mReaderHelper;
private InventoryBuffer m_curInventoryBuffer;
private Handler mHandler;
......@@ -61,7 +59,7 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
m_curInventoryBuffer = mReaderHelper.getCurInventoryBuffer();
InventoryInfoDatabase database = Room.databaseBuilder(this, InventoryInfoDatabase.class, "inventoryInfoDemo").build();
inventoryInfoDao = database.inventoryInfoDao();
mUSeries = U8Series.getInstance();
mUSeries = M11U8Service.getInstance();
} catch (Exception e) {
e.printStackTrace();
}
......@@ -70,13 +68,13 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
@Override
protected void onResume() {
super.onResume();
mUSeries.modulePowerOn(MODEL);
mUSeries.initService();
}
@Override
protected void onPause() {
super.onPause();
mUSeries.modulePowerOff(MODEL);
mUSeries.releaseService();
}
private void initView() {
......@@ -105,21 +103,17 @@ public class InventoryActivity extends BaseActivity implements View.OnClickListe
beginBtn.setText(R.string.inventory_btn_doing);
isInventory = true;
mRefreshTime = new Date().getTime();
mUSeries.startInventory(new ResponseHandler() {
mUSeries.startInventory(new InventoryInterface() {
@Override
public void onSuccess(String msg, Object data, byte[] parameters) {
super.onSuccess(msg, data, parameters);
if (U8Series.REFRESHLIST.equals(msg)) {
List<InventoryBuffer.InventoryTagMap> list = (List<InventoryBuffer.InventoryTagMap>) data;
if (list.size() > 0) {
public void success(Object obj) {
InventoryBuffer.InventoryTagMap tag = (InventoryBuffer.InventoryTagMap) obj;
List<InventoryBuffer.InventoryTagMap> list = new ArrayList<>();
list.add(tag);
inventoryAdapter.setData(list, false);
}
}
}
@Override
public void onFailure(String msg) {
super.onFailure(msg);
public void fail(String msg) {
StmApplication.getInstance().showToastShort(getResources().getText(R.string.inventory_disk_failure) + msg);
}
});
......
......@@ -3,7 +3,6 @@ package com.stm.asset.page;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.LinearLayout;
......@@ -12,9 +11,6 @@ import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import com.fn.useries.model.Message;
import com.fn.useries.operation.IUSeries;
import com.fn.useries.operation.U8Series;
import com.stm.asset.R;
import com.stm.asset.base.BaseActivity;
import com.stm.asset.base.StmApplication;
......@@ -39,15 +35,10 @@ import java.util.Map;
*/
public class MainActivity extends BaseActivity implements View.OnClickListener {
private static final String MODEL = "U8";
private static final int REQUEST_TO_SET = 10001;
private RelativeLayout logoutLayout;
private View logoutLine;
private TextView userTxt;
private IUSeries mUSeries;
private boolean setFlag = false;
private UserInfo userInfo;
private LoadingDialog loadingDialog;
private Map<String, String> versionMap;
......@@ -57,15 +48,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
U8Series.setContext(StmApplication.getInstance().getApplicationContext());
mUSeries = U8Series.getInstance();
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
Log.i("MainActivity", "code:" + openSerialMsg.getCode());
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
}
loadingDialog = new LoadingDialog(this);
}
......@@ -80,15 +62,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
logoutLayout.setOnClickListener(this);
}
private void jumpToConfigurationTool() {
Intent intent = new Intent();
intent.putExtra("modelName", MODEL);
intent.putExtra("packageName", getPackageName());
intent.putExtra("activityName", MainActivity.class.getName());
intent.setClass(this, SetAndSaveActivity.class);
startActivityForResult(intent, REQUEST_TO_SET);
}
@Override
protected void onResume() {
super.onResume();
......@@ -103,7 +76,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
logoutLayout.setVisibility(View.GONE);
logoutLine.setVisibility(View.GONE);
}
// getVersionIno();
}
@Override
......@@ -114,9 +86,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
@Override
protected void onDestroy() {
super.onDestroy();
if (setFlag) {
mUSeries.closeSerialPort();
}
}
@Override
......@@ -142,43 +111,18 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
break;
case R.id.main_begin_inventory_layout:
if (userInfo != null) {
if (!setFlag) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
}
} else {
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, InventoryActivity.class);
startActivity(inventoryIntent);
}
break;
} else {
Intent loginIntent = new Intent();
loginIntent.setClass(MainActivity.this, LoginActivity.class);
startActivity(loginIntent);
}
case R.id.main_settings_layout:
if (!setFlag) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() != 0) {
jumpToConfigurationTool();
} else {
setFlag = true;
Intent inventoryIntent = new Intent();
inventoryIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(inventoryIntent);
}
} else {
Intent deviceSetIntent = new Intent();
deviceSetIntent.setClass(MainActivity.this, DeviceSetActivity.class);
startActivity(deviceSetIntent);
}
break;
case R.id.main_logout_layout:
userInfo = null;
......@@ -192,20 +136,6 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == REQUEST_TO_SET) {
Message openSerialMsg = mUSeries.openSerialPort(MODEL);
if (openSerialMsg.getCode() == 0) {
setFlag = true;
}
}
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
showExitDialog();
......@@ -269,7 +199,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener {
sApp.setShowBackground(false);
// ActivityCompat.requestPermissions(MainActivity.this, new String[] {"android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE"}, IConstant.PERMISSION_REQUEST_SELECT_PHOTO);
} else {
// TODO
//
}
}
});
......
......@@ -20,8 +20,8 @@ public class PropertyUtil {
private static final String KEY_HTTP_PORT = "key_http_port"; // Http Port
private static final String KEY_HTTP_PLATFORM = "key_http_platform"; // Http Platform
private static final String KEY_USE_HTTPS = "key_use_https"; // 是否启用Https
private static final String KEY_ENCRYPT_PWD = "key_encrypt_pwd"; // 作为请求的全局sign
private static final String KEY_ACCESS_TOKEN = "key_access_token"; // 作为请求的全局sign
private static final String KEY_ENCRYPT_PWD = "key_encrypt_pwd"; // 加密密钥
private static final String KEY_ACCESS_TOKEN = "key_access_token"; // 加密token
public static boolean isFirstBegin(Context context) {
SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_SYSTEM, Context.MODE_PRIVATE);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment