| | |
| | | //地址选择 |
| | | implementation project(':pickerviewlibrary') |
| | | implementation project(':easysocket') |
| | | implementation 'com.tencent.bugly:crashreport:latest.release' |
| | | |
| | | implementation 'com.tencent.bugly:crashreport:4.1.9.3' |
| | | // 处理图片 |
| | | // implementation (name: 'ocr-library', ext: 'aar') |
| | | //权限申请 |
| | |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | |
| | | import com.dayu.recharge.card.CleanCard; |
| | | import com.dayu.recharge.card.ConfigurationPowerCard; |
| | | import com.dayu.recharge.card.ConfigureDeviceRegistrationCrad; |
| | | import com.dayu.recharge.card.ManageCard; |
| | | import com.dayu.recharge.card.RegisteredCard; |
| | | import com.dayu.recharge.card.TestCard; |
| | | import com.dayu.recharge.databinding.ActivityIdentyfyingBinding; |
| | | import com.dayu.recharge.dbBean.CardData; |
| | | import com.dayu.recharge.dbBean.IdentityBean; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | import com.dayu.recharge.utils.TipUtil; |
| | | import com.dayu.recharge.view.ChooseView; |
| | |
| | | super.onCreate(savedInstanceState); |
| | | binding = ActivityIdentyfyingBinding.inflate(LayoutInflater.from(this)); |
| | | setContentView(binding.getRoot()); |
| | | binding.chooseCardType.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | ChooseView.getIntence(IdentifyingActivity.this, Arrays.asList(nianfen.clone()), new ChooseView.ChooseCallBack() { |
| | | @Override |
| | | public void onOptionsSelect(int options1) { |
| | | chooseData(nianfen[options1]); |
| | | binding.chooseCardTypeText.setText(nianfen[options1]); |
| | | } |
| | | }).show(); |
| | | binding.chooseCardType.setOnClickListener(v -> |
| | | ChooseView.getIntence(IdentifyingActivity.this, Arrays.asList(nianfen.clone()), options1 -> { |
| | | chooseData(nianfen[options1]); |
| | | binding.chooseCardTypeText.setText(nianfen[options1]); |
| | | }).show()); |
| | | |
| | | binding.electricOk.setOnClickListener(v -> { |
| | | if (TextUtils.isEmpty(cardType)) { |
| | | TipUtil.show("请选择卡类型"); |
| | | return; |
| | | } |
| | | }); |
| | | |
| | | |
| | | IdentityBean identityBean = baseDao.identityDao().findFirst(); |
| | | |
| | | binding.electricOk.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | if (TextUtils.isEmpty(cardType)) { |
| | | TipUtil.show("请选择卡类型"); |
| | | return; |
| | | } |
| | | String data = binding.electricOldNumber.getText().toString(); |
| | | if (!TextUtils.isEmpty(data)) { |
| | | String data = binding.electricNewNum.getText().toString(); |
| | | if (!TextUtils.isEmpty(data)) { |
| | | if (data.length() % 2 == 0) { |
| | | if (cardData == null) { |
| | | cardData = new CardData(); |
| | | cardData.setCardType(cardType); |
| | |
| | | baseDao.cardDataDao().insert(cardData); |
| | | TipUtil.show("保存成功"); |
| | | } else { |
| | | TipUtil.show("请输入卡标识"); |
| | | TipUtil.show("请输入正确的16进制字符串"); |
| | | } |
| | | |
| | | } else { |
| | | TipUtil.show("请输入卡标识"); |
| | | } |
| | | }); |
| | | } |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new ManageCard().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | case "清零卡": |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new CleanCard().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | case "重新注册设备卡": |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new RegisteredCard().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | case "删除全部用户卡": |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new RegisteredCard().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | case "测试卡": |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new TestCard().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | case "设备信息卡": |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new ConfigureDeviceRegistrationCrad().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | case "水泵功率卡": |
| | |
| | | if (cardData != null) { |
| | | setData(cardData); |
| | | } else { |
| | | binding.electricOldNumber.setText(new ConfigurationPowerCard().getCardData()); |
| | | binding.electricOldNumber.setText(MyCommon.getDefaultCardData(cardType)); |
| | | } |
| | | break; |
| | | } |
| | |
| | | package com.dayu.recharge.activity; |
| | | |
| | | import android.annotation.SuppressLint; |
| | | import android.content.Intent; |
| | | import android.os.Bundle; |
| | | import android.text.TextUtils; |
| | |
| | | boolean configPowerFlag = false; |
| | | |
| | | UserCardBean userCardBean; |
| | | UserCard olduserCard; |
| | | |
| | | String morny; |
| | | String userName; |
| | |
| | | } |
| | | |
| | | |
| | | @SuppressLint("SetTextI18n") |
| | | private void getData() { |
| | | try { |
| | | if (this.getIntent().hasExtra("userCard")) { |
| | |
| | | userName = this.getIntent().getStringExtra("userName"); |
| | | binding.cardData.setText("充值金额:" + morny + "元"); |
| | | // 充值逻辑 |
| | | recharge(userCard.getInitPeasantCode(), userName, "启用"); |
| | | recharge(userCard.getInitPeasantCode(), userName); |
| | | } |
| | | |
| | | try { |
| | |
| | | //用户卡 |
| | | startDetailActivity(userCardBean.getUserName(), "启用"); |
| | | } else if (!TextUtils.isEmpty(morny)) { |
| | | TipUtil.show(NFCWreatActivity.this, "充值成功", () -> NFCWreatActivity.this.finish()); |
| | | TipUtil.show(NFCWreatActivity.this, "充值成功", NFCWreatActivity.this::finish); |
| | | } else { |
| | | TipUtil.show(NFCWreatActivity.this, "写卡成功", () -> NFCWreatActivity.this.finish()); |
| | | TipUtil.show(NFCWreatActivity.this, "写卡成功", NFCWreatActivity.this::finish); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | |
| | | StringBuffer data = new StringBuffer(); |
| | | if (rechargeBean != null) { |
| | | data.append("*****************************" + "\n"); |
| | | data.append(getResources().getString(R.string.login_title) + "\n"); |
| | | data.append("设备序列号:" + rechargeBean.getSerial() + "\n"); |
| | | data.append("用户名:" + rechargeBean.getUserName() + "\n"); |
| | | data.append(getResources().getString(R.string.login_title)).append("\n"); |
| | | data.append("设备序列号:").append(rechargeBean.getSerial()).append("\n"); |
| | | data.append("用户名:").append(rechargeBean.getUserName()).append("\n"); |
| | | // data.append("户 号:" + rechargeBean.getUserNum() + "\n"); |
| | | data.append("充值金额:" + rechargeBean.getMorny() + "元" + "\n"); |
| | | data.append("卡内余额:" + rechargeBean.getBalance() + "元" + "\n"); |
| | | data.append("日 期:" + DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2) + "\n\n"); |
| | | data.append("充值金额:").append(rechargeBean.getMorny()).append("元").append("\n"); |
| | | data.append("卡内余额:").append(rechargeBean.getBalance()).append("元").append("\n"); |
| | | data.append("日 期:").append(DateUtil.dateToStamp(rechargeBean.getDate(), DateUtil.type2)).append("\n\n"); |
| | | data.append("*****************************"); |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | //充值上传(Socket) |
| | | private void recharge(String initPeasantCode, String name, String statu) { |
| | | private void recharge(String initPeasantCode, String name) { |
| | | try { |
| | | RechargeRequestBean rechargeRequestBean = new RechargeRequestBean(); |
| | | rechargeRequestBean.setControl("01"); |
| | |
| | | } else { |
| | | TipUtil.show(NFCWreatActivity.this, "读取的卡和充值的卡不一致"); |
| | | } |
| | | } else { |
| | | |
| | | } |
| | | } |
| | | |
| | | private void setmanageCard(Intent intent, final ManageCard manageCard) { |
| | | manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(), 1, 0); |
| | | manageCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(manageCard.toZeroByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param clearOrInitCard |
| | | */ |
| | | private void setClean(Intent intent, final CleanCard clearOrInitCard) { |
| | | cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(), 1, 0); |
| | | cleanFlag = NFCWriteHelper.getInstence(intent, this).writeData(clearOrInitCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | |
| | |
| | | * @param registeredCard |
| | | */ |
| | | private void setRegisteredCard(Intent intent, RegisteredCard registeredCard) { |
| | | registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(), 1, 0); |
| | | registeredFlag = NFCWriteHelper.getInstence(intent, this).writeData(registeredCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param cleanUserCard |
| | | */ |
| | | private void setCleanUserCard(Intent intent, CleanUserCard cleanUserCard) { |
| | | cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(), 1, 0); |
| | | cleanUserCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(cleanUserCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | private void setTestCard(Intent intent, TestCard testCard) { |
| | | testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(), 1, 0); |
| | | testCardFlag = NFCWriteHelper.getInstence(intent, this).writeData(testCard.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | |
| | | private void setConfigDeviceRegiest(Intent intent, ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad) { |
| | | configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(), 1, 0); |
| | | configDeviceRegiestFlag = NFCWriteHelper.getInstence(intent, this).writeData(configureDeviceRegistrationCrad.toByte(baseDao), 1, 0); |
| | | } |
| | | |
| | | private void setConfigurationPower(Intent intent, ConfigurationPowerCard configurationPowerCard) { |
| | | try { |
| | | configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(), 1, 0); |
| | | configPowerFlag = NFCWriteHelper.getInstence(intent, this).writeData(configurationPowerCard.toByte(baseDao), 1, 0); |
| | | } catch (Exception e) { |
| | | configPowerFlag = false; |
| | | throw new RuntimeException(e); |
| | |
| | | import android.content.Intent; |
| | | import android.os.Bundle; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | |
| | | import com.dayu.recharge.card.CleanCard; |
| | | import com.dayu.recharge.card.CleanUserCard; |
| | |
| | | |
| | | private void initView() { |
| | | |
| | | //制作管理卡 |
| | | adminBinding.adminAdmin.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | ManageCard manageCard = new ManageCard(); |
| | | |
| | | adminBinding.adminAdmin.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | ManageCard manageCard = new ManageCard(); |
| | | intent.putExtra("manageCard", manageCard); |
| | | startActivity(intent); |
| | | } |
| | | intent.putExtra("manageCard", manageCard); |
| | | startActivity(intent); |
| | | }); |
| | | //制作清零卡 |
| | | adminBinding.adminCleanZero.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | CleanCard cleanCard = new CleanCard(); |
| | | intent.putExtra("cleanCard", cleanCard); |
| | | startActivity(intent); |
| | | } |
| | | adminBinding.adminCleanZero.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | CleanCard cleanCard = new CleanCard(); |
| | | intent.putExtra("cleanCard", cleanCard); |
| | | startActivity(intent); |
| | | }); |
| | | adminBinding.adminRegistered.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | RegisteredCard registeredCard = new RegisteredCard(); |
| | | intent.putExtra("registeredCard", registeredCard); |
| | | startActivity(intent); |
| | | } |
| | | adminBinding.adminRegistered.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | RegisteredCard registeredCard = new RegisteredCard(); |
| | | intent.putExtra("registeredCard", registeredCard); |
| | | startActivity(intent); |
| | | }); |
| | | //删除全部用户 |
| | | adminBinding.adminCleanUser.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | CleanUserCard cleanUserCard = new CleanUserCard(); |
| | | intent.putExtra("cleanUserCard", cleanUserCard); |
| | | startActivity(intent); |
| | | } |
| | | adminBinding.adminCleanUser.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | CleanUserCard cleanUserCard = new CleanUserCard(); |
| | | intent.putExtra("cleanUserCard", cleanUserCard); |
| | | startActivity(intent); |
| | | }); |
| | | // 设置域名卡 |
| | | adminBinding.adminDomain.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | DomainBean domainBean = baseDao.domainPortDao().findFirst(); |
| | | DomainCard domainCard = new DomainCard(); |
| | | if (domainBean != null) { |
| | | domainCard.setDomainNumber(domainBean.getDomainNumber()); |
| | | domainCard.setDomainName(domainBean.getDomain()); |
| | | domainCard.setPort(domainBean.getPort()); |
| | | } else { |
| | | domainCard.setDomainNumber("1"); |
| | | domainCard.setDomainName("dayuyanjiuyuan.top"); |
| | | domainCard.setPort(8888); |
| | | } |
| | | intent.putExtra("domainCard", domainCard); |
| | | startActivity(intent); |
| | | adminBinding.adminDomain.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | DomainBean domainBean = baseDao.domainPortDao().findFirst(); |
| | | DomainCard domainCard = new DomainCard(); |
| | | if (domainBean != null) { |
| | | domainCard.setDomainNumber(domainBean.getDomainNumber()); |
| | | domainCard.setDomainName(domainBean.getDomain()); |
| | | domainCard.setPort(domainBean.getPort()); |
| | | } else { |
| | | domainCard.setDomainNumber("1"); |
| | | domainCard.setDomainName("dayuyanjiuyuan.top"); |
| | | domainCard.setPort(8888); |
| | | } |
| | | intent.putExtra("domainCard", domainCard); |
| | | startActivity(intent); |
| | | }); |
| | | adminBinding.adminTest.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | TestCard testCard = new TestCard(); |
| | | intent.putExtra("testCard", testCard); |
| | | startActivity(intent); |
| | | } |
| | | adminBinding.adminTest.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | TestCard testCard = new TestCard(); |
| | | intent.putExtra("testCard", testCard); |
| | | startActivity(intent); |
| | | }); |
| | | adminBinding.adminConfigDeviceRegistration.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad = new ConfigureDeviceRegistrationCrad(); |
| | | intent.putExtra("configureDeviceRegistrationCrad", configureDeviceRegistrationCrad); |
| | | startActivity(intent); |
| | | } |
| | | adminBinding.adminConfigDeviceRegistration.setOnClickListener(v -> { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | ConfigureDeviceRegistrationCrad configureDeviceRegistrationCrad = new ConfigureDeviceRegistrationCrad(); |
| | | intent.putExtra("configureDeviceRegistrationCrad", configureDeviceRegistrationCrad); |
| | | startActivity(intent); |
| | | }); |
| | | |
| | | adminBinding.adminConfigPower.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View v) { |
| | | PowerBean powerBean = baseDao.powerDao().findFirst(); |
| | | if (powerBean != null) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | ConfigurationPowerCard configurationPowerCard = new ConfigurationPowerCard(); |
| | | configurationPowerCard.setPower(powerBean.getPower()); |
| | | intent.putExtra("configurationPowerCard", configurationPowerCard); |
| | | startActivity(intent); |
| | | } else { |
| | | TipUtil.show("请先设置水泵功率"); |
| | | } |
| | | |
| | | //设置水泵功率 |
| | | adminBinding.adminConfigPower.setOnClickListener(v -> { |
| | | PowerBean powerBean = baseDao.powerDao().findFirst(); |
| | | if (powerBean != null) { |
| | | Intent intent = new Intent(SysActivity.this, NFCWreatActivity.class); |
| | | ConfigurationPowerCard configurationPowerCard = new ConfigurationPowerCard(); |
| | | configurationPowerCard.setPower(powerBean.getPower()); |
| | | intent.putExtra("configurationPowerCard", configurationPowerCard); |
| | | startActivity(intent); |
| | | } else { |
| | | TipUtil.show("请先设置水泵功率"); |
| | | } |
| | | |
| | | }); |
| | | |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.dbBean.CardData; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | import com.tencent.bugly.crashreport.CrashReport; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | |
| | | * Description:所有卡结构的父类 |
| | | */ |
| | | public class BaseCard implements Serializable { |
| | | public String cardData;//标识码 |
| | | |
| | | public void setCardData(AppDatabase baseDao, String cardType) { |
| | | try { |
| | | CardData cardDataBean = baseDao.cardDataDao().findFirst(cardType); |
| | | if (cardDataBean != null) { |
| | | cardData = cardDataBean.getCardIdentifying(); |
| | | } else { |
| | | cardData=MyCommon.getDefaultCardData(cardType); |
| | | } |
| | | } catch (Exception e) { |
| | | CrashReport.postCatchedException(e); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 前15个字节算术累加和 不含进位 |
| | | * |
| | | * @param data |
| | | * @param data 源数据 |
| | | * @return 16进制 |
| | | */ |
| | | public byte getByteSum(byte[] data) { |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | |
| | | * Date: 2023-11-08 10:57 |
| | | * Description:清零卡 |
| | | */ |
| | | public class CleanCard implements Serializable { |
| | | public class CleanCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.CLEAN_CARD_TYPE;//卡类型 |
| | | public String cardData = "3668F7A30119";//标识码 |
| | | |
| | | public String getCardData() { |
| | | return cardData; |
| | | } |
| | | |
| | | |
| | | |
| | | public byte[] toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 6; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | |
| | | * Date: 2023-11-08 11:39 |
| | | * Description:删除全部用户卡 |
| | | */ |
| | | public class CleanUserCard implements Serializable { |
| | | public class CleanUserCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.CLEAN_ALL_USER_CARD_TYPE;//卡类型 |
| | | public String cardData = "A0B1C289";//标识码 |
| | | |
| | | public byte[] toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 4; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | import com.tencent.bugly.crashreport.CrashReport; |
| | |
| | | * 为方便现场更换设备时重新注册的问题,配置设备信息卡,首先刷卡,把原设备的注册号和ID号读到卡内, |
| | | * 同时卡状态则00修改为FF,再新设备上刷此卡时,注册号和ID号自动写到控制器内,可以直接刷卡使用 |
| | | */ |
| | | public class ConfigurationPowerCard implements Serializable { |
| | | public class ConfigurationPowerCard extends BaseCard implements Serializable { |
| | | |
| | | |
| | | public String cardType = MyCommon.CONFIGURATION_POWER_CARD_TYPE;//卡类型 |
| | | public String cardData = "A0B1C289";//标识码 |
| | | |
| | | public String getCardData() { |
| | | return cardData; |
| | |
| | | } |
| | | } |
| | | |
| | | public byte[] toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase,cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 4; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | if (power != null) { |
| | | float floatPower = Float.parseFloat(power); |
| | | int intPower = (int) Math.ceil(floatPower); // 将浮点数向上取整并转换为整数 |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | |
| | | * <p> |
| | | * 为方便现场更换设备时重新注册的问题,配置设备信息卡,首先刷卡,把原设备的注册号和ID号读到卡内,同时卡状态则00修改为FF,再新设备上刷此卡时,注册号和ID号自动写到控制器内,可以直接刷卡使用 |
| | | */ |
| | | public class ConfigureDeviceRegistrationCrad implements Serializable { |
| | | public class ConfigureDeviceRegistrationCrad extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.CONFIGURATION_CARD_TYPE;//卡类型 |
| | | public String cardData = "A0B1C289";//标识码 |
| | | |
| | |
| | | return cardData; |
| | | } |
| | | |
| | | public byte[] toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 4; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | |
| | | * Date: 2023-11-08 10:19 |
| | | * Description: 管理卡 第1扇区 0块 |
| | | */ |
| | | public class ManageCard implements Serializable { |
| | | public class ManageCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.MANAGE_CRAD;//卡类型 |
| | | public String cardData = "3668F7A30119";//标识码 |
| | | // public String cardData = "3668F7A30119";//标识码 |
| | | |
| | | public String getCardData() { |
| | | return cardData; |
| | | } |
| | | |
| | | public byte[] toZeroByte() { |
| | | |
| | | public byte[] toZeroByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 6; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * Copyright (C), 2023, |
| | |
| | | * Date: 2023-11-08 11:22 |
| | | * Description:密码卡 |
| | | */ |
| | | public class PassWordCard { |
| | | public class PassWordCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.PASS_WORD_CRAD_TYPE;//卡类型 |
| | | public String cardData = "A0B1C289";//标识码 |
| | | |
| | | public class Zero extends BaseCard { |
| | | public void toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | PassWordCard.Zero zero = new PassWordCard.Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 4; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | | |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | |
| | | * Date: 2023-11-08 11:36 |
| | | * Description:重新注册设备卡:用于写用户注册号 |
| | | */ |
| | | public class RegisteredCard implements Serializable { |
| | | public class RegisteredCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.REGISTERED_CARD_TYPE;//卡类型 |
| | | public String cardData = "A0B1C289";//标识码 |
| | | |
| | | public String getCardData() { |
| | | return cardData; |
| | | } |
| | | |
| | | public byte[] toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 4; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | package com.dayu.recharge.card; |
| | | |
| | | import com.dayu.recharge.dao.AppDatabase; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | |
| | | * Date: 2023-11-08 13:23 |
| | | * Description: 测试卡 |
| | | */ |
| | | public class TestCard implements Serializable { |
| | | public class TestCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.TEST_CARD_TYPE;//卡类型 |
| | | public String cardData = "A0B1C289";//标识码 |
| | | |
| | | public String getCardData() { |
| | | return cardData; |
| | | } |
| | | |
| | | public byte[] toByte() { |
| | | public byte[] toByte(AppDatabase appDatabase) { |
| | | setCardData(appDatabase, cardType); |
| | | Zero zero = new Zero(); |
| | | return zero.toByte(); |
| | | } |
| | | |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | | byte[] cardDatas = HexUtil.hexToByteArray(cardData); |
| | | for (int i = 0; i < 4; i++) { |
| | | data[i + 1] = cardDatas[i]; |
| | | } |
| | | System.arraycopy(cardDatas, 0, data, 1, cardDatas.length); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | |
| | | import com.dayu.recharge.tools.BcdUtil; |
| | | import com.dayu.recharge.tools.HexUtil; |
| | | import com.dayu.recharge.utils.MornyUtil; |
| | | import com.dayu.recharge.utils.MyCommon; |
| | | |
| | | import java.io.Serializable; |
| | |
| | | * Date: 2023-11-07 9:37 |
| | | * Description: 用户卡结构 |
| | | */ |
| | | public class UserCard implements Serializable { |
| | | public class UserCard extends BaseCard implements Serializable { |
| | | public String cardType = MyCommon.USER_CARD_TYPE_1;//写卡标志 A1刷卡开泵前 A8刷卡开泵后 A2叠加充值 |
| | | |
| | | public int rechargeTimes;//充值次数 |
| | |
| | | /** |
| | | * 通过byte转bean |
| | | * |
| | | * @param data |
| | | * @param data 读卡的数据 |
| | | */ |
| | | public static UserCard getBean(List<byte[]> data) { |
| | | try { |
| | |
| | | userCard.cardType = HexUtil.byteToHex(zero[0]); |
| | | userCard.rechargeTimes = HexUtil.get16to10(HexUtil.byteToHex(zero[1])); |
| | | byte[] swipeNumberBytes = new byte[2]; |
| | | swipeNumberBytes[0] = zero[2]; |
| | | swipeNumberBytes[1] = zero[3]; |
| | | System.arraycopy(zero,2,swipeNumberBytes,0,swipeNumberBytes.length); |
| | | String swipeNumberHex = HexUtil.bytesToHex(swipeNumberBytes); |
| | | userCard.swipeNumber = (short) HexUtil.get16to10(swipeNumberHex); |
| | | byte[] electricityPriceBytes = new byte[4]; |
| | | for (int i = 0; i < 4; i++) { |
| | | electricityPriceBytes[i] = zero[i + 4]; |
| | | } |
| | | System.arraycopy(zero,4,electricityPriceBytes,0,electricityPriceBytes.length); |
| | | |
| | | userCard.electricityPrice = HexUtil.hexToFloat(HexUtil.bytesToHex(electricityPriceBytes)); |
| | | userCard.state = BcdUtil.bcdToStr(zero[8]); |
| | | byte[] balanceBytes = new byte[4]; |
| | | for (int i = 0; i < 4; i++) { |
| | | balanceBytes[i] = zero[i + 9]; |
| | | } |
| | | System.arraycopy(zero,9,balanceBytes,0,balanceBytes.length); |
| | | |
| | | userCard.balance = HexUtil.get16to10LowHigh(HexUtil.bytesToHex(balanceBytes)); |
| | | |
| | | byte[] addressCodeBytes = new byte[6]; |
| | | addressCodeBytes[0] = zero[13]; |
| | | addressCodeBytes[1] = zero[14]; |
| | | addressCodeBytes[2] = two[11]; |
| | | addressCodeBytes[3] = two[12]; |
| | | addressCodeBytes[4] = two[13]; |
| | | addressCodeBytes[5] = two[14]; |
| | | System.arraycopy(zero,13,addressCodeBytes,0,2); |
| | | System.arraycopy(two,11,addressCodeBytes,0,4); |
| | | userCard.addressCode = BcdUtil.bcdToStr(addressCodeBytes); |
| | | |
| | | int year = 0; |
| | |
| | | Calendar calendar = Calendar.getInstance(); |
| | | calendar.set(2000 + year, month, day, hour, minute, second); |
| | | byte[] initPeasantCodeBytes = new byte[16]; |
| | | initPeasantCodeBytes[0] = one[10]; |
| | | initPeasantCodeBytes[1] = one[11]; |
| | | initPeasantCodeBytes[2] = one[12]; |
| | | initPeasantCodeBytes[3] = one[13]; |
| | | initPeasantCodeBytes[4] = one[14]; |
| | | initPeasantCodeBytes[5] = two[0]; |
| | | initPeasantCodeBytes[6] = two[1]; |
| | | initPeasantCodeBytes[7] = two[2]; |
| | | initPeasantCodeBytes[8] = two[3]; |
| | | initPeasantCodeBytes[9] = two[4]; |
| | | initPeasantCodeBytes[10] = two[5]; |
| | | initPeasantCodeBytes[11] = two[6]; |
| | | initPeasantCodeBytes[12] = two[7]; |
| | | initPeasantCodeBytes[13] = two[8]; |
| | | initPeasantCodeBytes[14] = two[9]; |
| | | initPeasantCodeBytes[15] = two[10]; |
| | | System.arraycopy(one,10,initPeasantCodeBytes,0,5); |
| | | System.arraycopy(two,0,initPeasantCodeBytes,0,11); |
| | | userCard.initPeasantCode = HexUtil.bytesToHex(initPeasantCodeBytes); |
| | | return userCard; |
| | | } |
| | |
| | | /** |
| | | * 用户卡0块 |
| | | */ |
| | | public class Zero extends BaseCard { |
| | | public class Zero { |
| | | public byte[] toByte() { |
| | | byte[] data = new byte[16]; |
| | | data[0] = HexUtil.hexToByte(cardType); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | byte[] swipeNumbers = HexUtil.hexToByteArray(HexUtil.get10to16(swipeNumber)); |
| | | for (int i = 0; i < swipeNumbers.length; i++) { |
| | | data[i + 2] = swipeNumbers[i]; |
| | | } |
| | | |
| | | System.arraycopy(swipeNumbers, 0, data, 2, swipeNumbers.length); |
| | | |
| | | byte[] electricityPrices = HexUtil.hexToByteArray(HexUtil.folatToHexString(electricityPrice)); |
| | | for (int i = 0; i < electricityPrices.length; i++) { |
| | | data[i + 4] = electricityPrices[i]; |
| | | } |
| | | |
| | | System.arraycopy(electricityPrices, 0, data, 4, electricityPrices.length); |
| | | try { |
| | | data[8] = BcdUtil.strToBcd(state)[0]; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | byte[] balances = HexUtil.hexToByteArray(HexUtil.get10to16LowHigh(balance, 8)); |
| | | for (int i = 0; i < balances.length; i++) { |
| | | data[i + 9] = balances[i]; |
| | | } |
| | | |
| | | System.arraycopy(balances, 0, data, 9, balances.length); |
| | | byte[] addresscodes = BcdUtil.strToBcd(addressCode); |
| | | data[13] = addresscodes[0]; |
| | | data[14] = addresscodes[1]; |
| | | System.arraycopy(addresscodes, 0, data, 13, 2); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | /** |
| | | * 用户卡1块 |
| | | */ |
| | | public class One extends BaseCard { |
| | | public class One { |
| | | |
| | | public byte[] toBytes() { |
| | | byte[] data = new byte[16]; |
| | | byte[] balances = HexUtil.hexToByteArray(HexUtil.get10to16LowHigh(balance, 8)); |
| | | for (int i = 0; i < balances.length; i++) { |
| | | data[i] = balances[i]; |
| | | } |
| | | System.arraycopy(balances, 0, data, 0, balances.length); |
| | | if (rechargeDate != null) { |
| | | // 获取年、月、日、时、分、秒 |
| | | |
| | |
| | | byte bcdHour = (byte) ((hour / 10) << 4 | (hour % 10)); |
| | | byte bcdMinute = (byte) ((minute / 10) << 4 | (minute % 10)); |
| | | byte bcdSecond = (byte) ((second / 10) << 4 | (second % 10)); |
| | | |
| | | data[4] = bcdYear; |
| | | data[5] = bcdMonth; |
| | | data[6] = bcdDay; |
| | |
| | | data[9] = bcdSecond; |
| | | } |
| | | byte[] initPeasantCodes = HexUtil.hexToByteArray(initPeasantCode); |
| | | for (int i = 0; i < 5; i++) { |
| | | data[i + 10] = initPeasantCodes[i]; |
| | | } |
| | | System.arraycopy(initPeasantCodes, 5, data, 0, 5); |
| | | data[15] = getByteSum(data); |
| | | return data; |
| | | } |
| | |
| | | /** |
| | | * 用户卡2块 |
| | | */ |
| | | public class Two extends BaseCard { |
| | | public class Two { |
| | | public byte[] toBytes() { |
| | | byte[] data = new byte[16]; |
| | | byte[] initPeasantCodes = HexUtil.hexToByteArray(initPeasantCode); |
| | | for (int i = 5; i < 16; i++) { |
| | | data[i - 5] = initPeasantCodes[i]; |
| | | } |
| | | System.arraycopy(initPeasantCodes, 5, data, 0, 11); |
| | | byte[] addresscodes = BcdUtil.strToBcd(addressCode); |
| | | data[11] = addresscodes[2]; |
| | | data[12] = addresscodes[3]; |
| | |
| | | */ |
| | | public static final String PASS_WORD_CRAD_TYPE = "B3"; |
| | | |
| | | |
| | | /** |
| | | * 获取默认的卡标识 |
| | | * |
| | | * @param cardType 卡片类型 |
| | | * @return 卡内容 |
| | | */ |
| | | public static String getDefaultCardData(String cardType) { |
| | | String cardData = ""; |
| | | switch (cardType) { |
| | | case MANAGE_CRAD: |
| | | case CLEAN_CARD_TYPE: |
| | | cardData = "3668F7A30119"; |
| | | break; |
| | | case REGISTERED_CARD_TYPE: |
| | | case CLEAN_ALL_USER_CARD_TYPE: |
| | | case TEST_CARD_TYPE: |
| | | case CONFIGURATION_CARD_TYPE: |
| | | case CONFIGURATION_POWER_CARD_TYPE: |
| | | case PASS_WORD_CRAD_TYPE: |
| | | cardData = "A0B1C289"; |
| | | break; |
| | | } |
| | | return cardData; |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | android:layout_height="wrap_content" |
| | | android:layout_below="@+id/electric_ll" |
| | | android:layout_alignParentStart="true" |
| | | android:layout_margin="20dp" |
| | | android:layout_marginStart="20dp" |
| | | android:layout_marginTop="20dp" |
| | | android:layout_marginEnd="20dp" |
| | | android:layout_marginBottom="20dp" |
| | | android:hint="请输入新的卡标识" |
| | | android:inputType="number" /> |
| | | |