123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438 |
- package com.wdkl.callingbed.util;
- import android.content.Context;
- import android.nfc.Tag;
- import android.util.Log;
- import com.wdkl.callingbed.MyApplication;
- import com.wdkl.callingbed.common.Constants;
- import com.wdkl.callingbed.entity.BroadCastEntity;
- import com.wdkl.callingbed.entity.MessageEvent;
- import com.wdkl.callingbed.entity.SystemSetEntity;
- import com.wdkl.callingbed.entity.UdpEntity;
- import org.greenrobot.eventbus.EventBus;
- import serialporttest.utils.SerialPortUtil;
- import static com.wdkl.callingbed.MyApplication.serialPortUtil;
- /**
- * Created by 胡博文 on 2017/10/18.
- */
- public class AnalysisUdpUtil {
- private AnalysisUdpUtil() {
- }
- public static void AnalysisUdp(String udpMsg, Context context) {
- LogUtil.d("AnalysisUdp", "udpMsg==" + udpMsg);
- try {
- //判断是否为美元符号开头,如果是则是android 端的命令
- if ("$".equals(udpMsg.substring(0, 1))) {
- udpMsg = delHeadAndEnd(udpMsg, "$", "#");
- String[] data = udpMsg.split(Constants.DELIMITER);
- if(StringUtils.notEmpty(Constants.PartID)){
- try {
- LogUtil.d("AAGGH", "PartID==" + Constants.PartID+"-----UDPPartID=="+data[data.length - 1]);
- if (!StringUtils.notEmpty(data[data.length - 1]) || !Constants.PartID.equals(data[data.length - 1])) {// 协议规定所有UDP最后一条为 PartID (科室ID)。只有属于自己科室的才能作用
- return;
- }
- } catch (Exception e) {
- return;
- }}
- switch (data[0]) {
- //更新广播文件
- case "broadcast_update":
- BroadCastEntity broadCastEntity0 = new BroadCastEntity();
- broadCastEntity0.setIndexes(data[0]);
- EventBus.getDefault().post(new MessageEvent(broadCastEntity0, Constants.EVENT_BROADCAST)); //将udp发送出去
- break;
- //播放广播
- case "broadcast_1":
- if (!Constants.INTIME_BROADCAST.equals(data[1])) {
- Constants.INTIME_BROADCAST = data[1];
- BroadCastEntity broadCastEntity = new BroadCastEntity();
- broadCastEntity.setIndexes(data[0]);
- broadCastEntity.setPath(data[1]);
- broadCastEntity.setVoiceInt(data[2]);
- broadCastEntity.setZoneId(data[3]);
- EventBus.getDefault().post(new MessageEvent(broadCastEntity, Constants.EVENT_BROADCAST)); //将udp发送出去
- }
- break;
- //停止播放广播
- case "broadcast_2":
- Constants.INTIME_BROADCAST = "";
- BroadCastEntity broadCastEntity1 = new BroadCastEntity();
- broadCastEntity1.setIndexes(data[0]);
- broadCastEntity1.setPath(data[1]);
- EventBus.getDefault().post(new MessageEvent(broadCastEntity1, Constants.EVENT_BROADCAST));
- break;
- //全局广播音量大小
- case "broadcast_v":
- BroadCastEntity broadCastEntity2 = new BroadCastEntity();
- broadCastEntity2.setIndexes(data[0]);
- broadCastEntity2.setPath(data[1]);
- broadCastEntity2.setVoiceInt(data[2]);
- EventBus.getDefault().post(new MessageEvent(broadCastEntity2, Constants.EVENT_BROADCAST));
- break;
- case "call_1"://床头机呼叫护士主机");
- case "call_2"://卫生间呼叫");
- //case "call_3"://床头机呼叫床头机");
- case "call_4": //床头机呼叫增援");
- //case "call_5": //床头机呼叫手表");
- if (!Constants.MYSELF_ID.equals(data[3])) {//排除自己
- UdpEntity udpEntity = new UdpEntity();
- udpEntity.setIndexes(data[0]);
- udpEntity.setNurseHostID(data[1]);
- udpEntity.setDoorwayMachineID(data[2]);
- udpEntity.setHeadMachineID(data[3]);
- udpEntity.setSipAddress(data[4]);
- udpEntity.setRoomNumber(data[5]);
- udpEntity.setBedNumber(data[6]);
- udpEntity.setLevel(data[7]);
- udpEntity.setType(data[8]);
- udpEntity.setName(data[9]);
- udpEntity.setDeviceMAC(data[10]);
- udpEntity.setShowText("床头机呼叫护士主机");
- //推向event
- EventBus.getDefault().post(new MessageEvent(udpEntity, Constants.EVENT_UDP));
- }
- break;
- case "call_6"://门口机呼叫护士主机"
- UdpEntity udpEntity6 = new UdpEntity();
- udpEntity6.setIndexes(data[0]);
- udpEntity6.setNurseHostID(data[1]);
- udpEntity6.setDoorwayMachineID(data[2]);
- udpEntity6.setHeadMachineID(data[3]);
- udpEntity6.setSipAddress(data[4]);
- udpEntity6.setRoomNumber(data[5]);
- udpEntity6.setBedNumber(data[6]);
- udpEntity6.setLevel(data[7]);
- udpEntity6.setType(data[8]);
- udpEntity6.setName(data[9]);
- udpEntity6.setShowText("门口机呼叫护士主机");
- EventBus.getDefault().post(new MessageEvent(udpEntity6, Constants.EVENT_UDP));
- break;
- case "call_7":
- //门口机呼叫医生主机");
- break;
- case "call_8": //护士主机呼叫分机
- UdpEntity entity = new UdpEntity();
- entity.setIndexes(data[0]);
- entity.setNurseHostID(data[1]);
- entity.setDoorwayMachineID(data[2]);
- entity.setHeadMachineID(data[3]);
- entity.setSipAddress(data[4]);
- entity.setRoomNumber(data[5]);
- entity.setBedNumber(data[6]);
- entity.setLevel(data[7]);
- entity.setType(data[8]);
- entity.setName(data[9]);
- EventBus.getDefault().post(new MessageEvent(entity, Constants.EVENT_UDP));
- break;
- case "call_9":
- //护士主机呼叫护士主机");
- break;
- case "call_10":
- //护士主机呼叫医生主机");
- break;
- case "call_11":
- //手表呼叫护士主机");
- break;
- case "end_1":
- //挂断");
- break;
- case "deposit_1":
- //主机托管给主机");
- break;
- case "deposit_2":
- //取消托管");
- break;
- case "nursing_1"://进入护理
- UdpEntity nursing_1 = new UdpEntity();
- nursing_1.setIndexes(data[0]);
- nursing_1.setNurseHostID(data[1]);
- nursing_1.setDoorwayMachineID(data[2]);
- nursing_1.setHeadMachineID(data[3]);
- nursing_1.setSipAddress(data[4]);
- nursing_1.setRoomNumber(data[5]);
- nursing_1.setBedNumber(data[6]);
- nursing_1.setLevel(data[7]);
- nursing_1.setType(data[8]);
- nursing_1.setName(data[9]);
- LogUtil.d(AnalysisUdpUtil.class, "nursing_1==" + nursing_1.toString());
- EventBus.getDefault().post(new MessageEvent(nursing_1, Constants.EVENT_UDP));
- break;
- case "nursing_2"://退出护理
- UdpEntity nursing_2 = new UdpEntity();
- nursing_2.setIndexes(data[0]);
- nursing_2.setNurseHostID(data[1]);
- nursing_2.setDoorwayMachineID(data[2]);
- nursing_2.setHeadMachineID(data[3]);
- nursing_2.setSipAddress(data[4]);
- nursing_2.setRoomNumber(data[5]);
- nursing_2.setBedNumber(data[6]);
- nursing_2.setLevel(data[7]);
- nursing_2.setType(data[8]);
- nursing_2.setName(data[9]);
- LogUtil.d(AnalysisUdpUtil.class, "nursing_2==" + nursing_2.toString());
- EventBus.getDefault().post(new MessageEvent(nursing_2, Constants.EVENT_UDP));
- break;
- case "call_8_upremove": //主机上滑移除了呼叫列表中的一个条目
- UdpEntity call_8_upremove = new UdpEntity();
- call_8_upremove.setIndexes(data[0]);
- call_8_upremove.setNurseHostID(data[1]);
- call_8_upremove.setDoorwayMachineID(data[2]);
- call_8_upremove.setHeadMachineID(data[3]);
- call_8_upremove.setSipAddress(data[4]);
- call_8_upremove.setRoomNumber(data[5]);
- call_8_upremove.setBedNumber(data[6]);
- call_8_upremove.setLevel(data[7]);
- call_8_upremove.setType(data[8]);
- call_8_upremove.setName(data[9]);
- EventBus.getDefault().post(new MessageEvent(call_8_upremove, Constants.EVENT_UDP));
- break;
- case "call_8_transfer": //转接护士主机电话
- UdpEntity call_8_transfer = new UdpEntity();
- call_8_transfer.setIndexes(data[0]);
- call_8_transfer.setNurseHostID(data[1]);
- call_8_transfer.setDoorwayMachineID(data[2]);
- call_8_transfer.setHeadMachineID(data[3]);
- call_8_transfer.setSipAddress(data[4]);
- call_8_transfer.setRoomNumber(data[5]);
- call_8_transfer.setBedNumber(data[6]);
- call_8_transfer.setLevel(data[7]);
- call_8_transfer.setType(data[8]);
- call_8_transfer.setName(data[9]);
- EventBus.getDefault().post(new MessageEvent(call_8_transfer, Constants.EVENT_UDP));
- break;
- case "noany_request":
- //护士主机通知外部当前房间无任何请求;
- UdpEntity noany_request = new UdpEntity();
- noany_request.setIndexes(data[0]);
- noany_request.setRoomNumber(data[5]);
- EventBus.getDefault().post(new MessageEvent(noany_request, Constants.EVENT_UDP));
- break;
- case "call_host_exception": //主机发生异常
- UdpEntity call_host_exception = new UdpEntity();
- call_host_exception.setIndexes(data[0]);
- call_host_exception.setNurseHostID(data[1]);
- call_host_exception.setDoorwayMachineID(data[2]);
- call_host_exception.setHeadMachineID(data[3]);
- call_host_exception.setSipAddress(data[4]);
- call_host_exception.setRoomNumber(data[5]);
- call_host_exception.setBedNumber(data[6]);
- call_host_exception.setLevel(data[7]);
- call_host_exception.setType(data[8]);
- call_host_exception.setName(data[9]);
- EventBus.getDefault().post(new MessageEvent(call_host_exception, Constants.EVENT_UDP));
- break;
- case "back_1":
- //呼叫回复");
- break;
- case "sickbed_inuse"://床头分机数据更新
- UdpEntity updating_hospital_bed = new UdpEntity();
- updating_hospital_bed.setIndexes(data[0]);
- updating_hospital_bed.setDeviceMAC("");
- updating_hospital_bed.setType("");
- updating_hospital_bed.setRoomNumber("");
- EventBus.getDefault().post(new MessageEvent(updating_hospital_bed, Constants.EVENT_UDP));
- break;
- case "sickbed_unuse"://床头分机无病床数据更新
- UdpEntity null_hospital_bed = new UdpEntity();
- null_hospital_bed.setIndexes(data[0]);
- null_hospital_bed.setDeviceMAC("");
- null_hospital_bed.setType("");
- null_hospital_bed.setRoomNumber("");
- EventBus.getDefault().post(new MessageEvent(null_hospital_bed, Constants.EVENT_UDP));
- break;
- }
- } else if ("#".equals(udpMsg.substring(0, 1))) {
- LogUtil.d("isBelongToHostMachine", "udpMsg==" + udpMsg);
- //判断是否为服务端发过来的命令
- udpMsg = delHeadAndEnd(udpMsg, "#", "$");
- String[] data = udpMsg.split(Constants.DELIMITER);
- if(StringUtils.notEmpty(Constants.PartID)){
- try {
- LogUtil.d("AAGGH", "PartID==" + Constants.PartID+"-----UDPPartID=="+data[data.length - 1]);
- if (!StringUtils.notEmpty(data[data.length - 1]) || !Constants.PartID.equals(data[data.length - 1])) {// 协议规定所有UDP最后一条为 PartID (科室ID)。只有属于自己科室的才能作用
- return;
- }
- } catch (Exception e) {
- return;
- }}
- switch (data[0]) {
- case "HEART"://服务端定时发送心跳监听;APP回复
- if (data[1].equals(Constants.MAC_ADDRESS)) {
- sendString("HEART," + Constants.MAC_ADDRESS);
- }
- break;
- case "MGR_SHUTDOWN": //关机 //批量关机
- if (data[1].equals(Constants.MAC_ADDRESS) || (data[1].equals("FF:FF:FF:FF:FF:FF"))) {
- //AutoRebootUtil.shutdown(context);//调用关机命令
- }
- break;
- case "MGR_RESET"://重启APP //批量重启()
- boolean isRESET = false;
- if (!isRESET) {
- LogUtil.d("isBelongToHostMachine", "data[1]==" + data[1]);
- if (data[1].equals(Constants.MAC_ADDRESS) || (data[1].equals("FF:FF:FF:FF:FF:FF") && isBelongToHostMachine(data[2]))) {
- EventBus.getDefault().post(new MessageEvent("reset", Constants.EVENT_MGR_RESET));
- }
- }
- break;
- case "MGR_SYSTEM_RESET":
- if (data[1].equals(Constants.MAC_ADDRESS)) {
- //MyApplication.serialPortUtil.systemRestart();//调用吴总串口
- AutoRebootUtil.reboot(context);//调用系统自己API
- }
- break;
- case "MGR_REG_Q": //给出设备信息
- try {
- if (data[1].equals(Constants.MAC_ADDRESS)) {
- //有线mac地址,设备出场信息,无线mac地址
- String str = "$MGR_REG_A" + Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "4" + Constants.DELIMITER + android.os.Build.DISPLAY +
- Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "FF:FF:FF:FF:FF:FF" + Constants.DELIMITER + SerialPortUtil.KEY_ID + "#";
- UdpHelper.send(str);
- }
- } catch (ArrayIndexOutOfBoundsException e) {
- e.printStackTrace();
- }
- break;
- case "MGR_MACHINE_SETSYS": //系统设置
- if (!Constants.MORNING_NIGTH.equals(data[1])
- || !Constants.SCREENLIGHT.equals(data[2])
- || !Constants.SYSVOICE.equals(data[3])
- || !Constants.RINGLVOICE.equals(data[4])
- || !Constants.RINGLVOICELOOP.equals(data[5])
- || !Constants.NURSINGLIGHT.equals(data[6])
- || !Constants.CALLINGTIMEOUT.equals(data[7])
- || !Constants.SCREENEXTINGUISHTIME.equals(data[8])
- || !Constants.DOORCALLVOICE.equals(data[9])
- || !Constants.BEDCALLVOICE.equals(data[10])
- ) {
- Constants.MORNING_NIGTH = data[1];
- Constants.SCREENLIGHT = data[2];
- Constants.SYSVOICE = data[3];
- Constants.RINGLVOICE = data[4];
- Constants.RINGLVOICELOOP = data[5];
- Constants.NURSINGLIGHT = data[6];
- Constants.CALLINGTIMEOUT = data[7];
- Constants.SCREENEXTINGUISHTIME = data[8];
- Constants.DOORCALLVOICE = data[9];
- Constants.BEDCALLVOICE = data[10];
- SystemSetEntity machine_setsys = new SystemSetEntity(data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8]);
- LogUtil.d(AnalysisUdpUtil.class, "MGR_MACHINE_SETSYS==" + machine_setsys.toString());
- EventBus.getDefault().post(new MessageEvent(machine_setsys, Constants.EVENT_SETSYS));
- } else {
- return;
- }
- break;
- case "MGR_PATIENTUPDATE": //后台数据改变刷新UI
- LogUtil.d("MGR_PATIENTUPDATE", "bed--11");
- <<<<<<< HEAD
- LogUtil.d("MGR_PATIENTUPDATE","data[2] "+data[2]+" ddd "+Constants.MYSELF_ID);
- if (data[2].equals(Constants.MYSELF_ID)) { //ID匹配;刷新本机
- LogUtil.d("MGR_PATIENTUPDATE","Constants.UPDATE_PATIENTUPDATE_FLAG "+Constants.UPDATE_PATIENTUPDATE_FLAG);
- if (!Constants.UPDATE_PATIENTUPDATE_FLAG) {
- LogUtil.d("MGR_PATIENTUPDATE", "bed--22");
- =======
- if (data[2].equals(Constants.MYSELF_ID) || data[2].equals(Constants.MAC_ADDRESS)) {
- if (!Constants.UPDATE_PATIENTUPDATE_FLAG) {
- Constants.UPDATE_PATIENTUPDATE_FLAG = true;
- LogUtil.d("MGR_PATIENTUPDATE", "MGR_PATIENTUPDATE");
- >>>>>>> c7fa4d87eae36f5045acc0af939c0acfbc019628
- EventBus.getDefault().post(new MessageEvent(null, Constants.EVENT_MGR_PATIENTUPDATE));
- }
- }
- break;
- case "MGR_APPUPDATE": //APP更新
- if (data[1].equals("4")) {
- if (!Constants.UPDATE_APP_FLAG) {
- Constants.UPDATE_APP_FLAG = true;
- EventBus.getDefault().post(new MessageEvent(null, Constants.EVENT_MGR_APP_UPDATE));
- }
- }
- break;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 是否是属于所指定的主机<br></>
- */
- public static boolean isBelongToHostMachine(String nurseHostID) {
- if (!StringUtils.notEmpty(nurseHostID)) return false;
- String n = StringUtils.substringByLengh(Constants.CALLMAIN_ID, 0, 1);
- if ("#".equals(n)) {
- String nDis = StringUtils.deleteCharAt(Constants.CALLMAIN_ID, 0);
- String my = nDis.split(",")[0];
- String his = nDis.split(",")[1];
- return nurseHostID.equals(my) || nurseHostID.equals(his);
- } else {
- return StringUtils.notEmpty(nurseHostID) && nurseHostID.equals(Constants.CALLMAIN_ID);
- }
- }
- public static void sendAndroidUdpData(String Indexes, String nurseHostID, String doorwayMachineID, String headMachineID, String sipAddress, String roomNumber, String bedNumber, String level, String type, String name, String deviceMAC) {
- final String strUdp = Indexes + Constants.DELIMITER + nurseHostID +
- Constants.DELIMITER + doorwayMachineID + Constants.DELIMITER
- + headMachineID + Constants.DELIMITER + sipAddress + Constants.DELIMITER
- + roomNumber + Constants.DELIMITER + bedNumber + Constants.DELIMITER + level + Constants.DELIMITER + type + Constants.DELIMITER + name + Constants.DELIMITER + deviceMAC
- + Constants.DELIMITER + Constants.PartID;//add by waderson 20190627 加了一个partId (科室ID)
- new Thread() {
- @Override
- public void run() {
- //把网络访问的代码放在这里
- UdpHelper.send("$" + strUdp + "#");
- }
- }.start();
- }
- /**
- * 直接UDP 发送一条字符串
- */
- public static void sendString(final String str) {
- new Thread() {
- @Override
- public void run() {
- //把网络访问的代码放在这里
- UdpHelper.send("$" + str + "#");
- }
- }.start();
- }
- public static String delHeadAndEnd(String source, String beginTrim, String endTrim) {
- if (source == null) {
- return "";
- }
- source = source.trim(); // 循环去掉字符串首的beTrim字符
- if (source.isEmpty()) {
- return "";
- }
- String beginChar = source.substring(0, 1);
- if (beginChar.equalsIgnoreCase(beginTrim)) {
- source = source.substring(1, source.length());
- beginChar = source.substring(0, 1);
- }
- // 循环去掉字符串尾的beTrim字符
- String endChar = source.substring(source.length() - 1, source.length());
- if (endChar.equalsIgnoreCase(endTrim)) {
- source = source.substring(0, source.length() - 1);
- endChar = source.substring(source.length() - 1, source.length());
- }
- return source;
- }
- }
|