AnalysisUdpUtil.java 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615
  1. package com.wdkl.callingmainnurse.util;
  2. import android.app.AlarmManager;
  3. import android.app.PendingIntent;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.util.Log;
  7. import com.wdkl.callingmainnurse.MyApplication;
  8. import com.wdkl.callingmainnurse.common.Constants;
  9. import com.wdkl.callingmainnurse.entity.MessageEntity;
  10. import com.wdkl.callingmainnurse.entity.MessageEvent;
  11. import com.wdkl.callingmainnurse.entity.SystemSetEntity;
  12. import com.wdkl.callingmainnurse.entity.UdpEntity;
  13. import com.wdkl.callingmainnurse.ui.activity.InitActivity;
  14. import org.greenrobot.eventbus.EventBus;
  15. import serialporttest.utils.SerialPortUtil;
  16. import static com.wdkl.callingmainnurse.common.Constants.MYSELF_ID;
  17. import static com.wdkl.callingmainnurse.common.Constants.TRUST_FLAG_VALUE;
  18. /**
  19. * Created by 胡博文 on 2017/10/18.
  20. */
  21. public class AnalysisUdpUtil {
  22. public static String TAG = AnalysisUdpUtil.class.getSimpleName();
  23. public static boolean isOpen = true;//是否开启托管模式
  24. public static UdpEntity udpEntitys;//托管udp信息
  25. private static boolean isReset = false;
  26. private AnalysisUdpUtil() {
  27. }
  28. public static void AnalysisUdp(String udpMsg, Context context) { //接收UDP
  29. LogUtil.d("CheckUpdate", "1===udpMsg==" + udpMsg);
  30. if (!isOpen) {
  31. return;
  32. }
  33. //判断是否为美元符号开头,如果是则是android 端的命令
  34. if ("$".equals(udpMsg.substring(0, 1))) {
  35. udpMsg = delHeadAndEnd(udpMsg, "$", "#");
  36. final String[] data = udpMsg.split(Character.toString((char) 3));
  37. //总控制室主机呼叫
  38. if (Constants.MANAGER_CALL.equals(data[8])) {
  39. switch (data[0]) {
  40. case "call_12"://总控制室主机呼叫护士主机
  41. UdpEntity udpEntity = new UdpEntity();
  42. udpEntity.setIndexes(data[0]);
  43. udpEntity.setNurseHostID(data[1]);
  44. udpEntity.setDoorwayMachineID(data[2]);
  45. udpEntity.setHeadMachineID(data[3]);
  46. udpEntity.setSipAddress(data[4]);
  47. udpEntity.setRoomNumber(data[5]);
  48. udpEntity.setBedNumber(data[6]);
  49. udpEntity.setLevel(data[7]);
  50. udpEntity.setType(data[8]);
  51. udpEntity.setName(data[9]);
  52. udpEntity.setDeviceMAC(data[10]);
  53. udpEntity.setShowText("总控制室主机呼叫护士主机");
  54. EventBus.getDefault().post(new MessageEvent(udpEntity, Constants.EVENT_UDP));
  55. break;
  56. case "call_12_hang_up": //总控制室主机取消呼叫
  57. UdpEntity call_12_hang_up = new UdpEntity();
  58. call_12_hang_up.setIndexes(data[0]);
  59. call_12_hang_up.setNurseHostID(data[1]);
  60. call_12_hang_up.setDoorwayMachineID(data[2]);
  61. call_12_hang_up.setHeadMachineID(data[3]);
  62. call_12_hang_up.setSipAddress(data[4]);
  63. call_12_hang_up.setRoomNumber(data[5]);
  64. call_12_hang_up.setBedNumber(data[6]);
  65. call_12_hang_up.setLevel(data[7]);
  66. call_12_hang_up.setType(data[8]);
  67. call_12_hang_up.setName(data[9]);
  68. call_12_hang_up.setDeviceMAC(data[10]);
  69. call_12_hang_up.setShowText("总控制室主机取消呼叫");
  70. EventBus.getDefault().post(new MessageEvent(call_12_hang_up, Constants.EVENT_UDP));
  71. break;
  72. }
  73. }
  74. //医生主机呼叫
  75. if (Constants.DOCTOR_CALL.equals(data[8])) {
  76. Log.e(TAG,"data[8] "+data[8]+" data[0] "+data[0]);
  77. switch (data[0]) {
  78. case "call_14"://医生主机呼叫护士主机
  79. UdpEntity doctor_call_14_nurse_udpEntity = new UdpEntity();
  80. doctor_call_14_nurse_udpEntity.setIndexes(data[0]);
  81. doctor_call_14_nurse_udpEntity.setNurseHostID(data[1]);
  82. doctor_call_14_nurse_udpEntity.setDoorwayMachineID(data[2]);
  83. doctor_call_14_nurse_udpEntity.setHeadMachineID(data[3]);
  84. doctor_call_14_nurse_udpEntity.setSipAddress(data[4]);
  85. doctor_call_14_nurse_udpEntity.setRoomNumber(data[5]);
  86. doctor_call_14_nurse_udpEntity.setBedNumber(data[6]);
  87. doctor_call_14_nurse_udpEntity.setLevel(data[7]);
  88. doctor_call_14_nurse_udpEntity.setType(data[8]);
  89. doctor_call_14_nurse_udpEntity.setName(data[9]);
  90. doctor_call_14_nurse_udpEntity.setDeviceMAC(data[10]);
  91. doctor_call_14_nurse_udpEntity.setShowText("总控制室主机呼叫护士主机");
  92. EventBus.getDefault().post(new MessageEvent(doctor_call_14_nurse_udpEntity, Constants.EVENT_UDP));
  93. break;
  94. case "call_14_hang_up": //医生主机取消呼叫
  95. UdpEntity doctor_call_14_hang_up = new UdpEntity();
  96. doctor_call_14_hang_up.setIndexes(data[0]);
  97. doctor_call_14_hang_up.setNurseHostID(data[1]);
  98. doctor_call_14_hang_up.setDoorwayMachineID(data[2]);
  99. doctor_call_14_hang_up.setHeadMachineID(data[3]);
  100. doctor_call_14_hang_up.setSipAddress(data[4]);
  101. doctor_call_14_hang_up.setRoomNumber(data[5]);
  102. doctor_call_14_hang_up.setBedNumber(data[6]);
  103. doctor_call_14_hang_up.setLevel(data[7]);
  104. doctor_call_14_hang_up.setType(data[8]);
  105. doctor_call_14_hang_up.setName(data[9]);
  106. doctor_call_14_hang_up.setDeviceMAC(data[10]);
  107. doctor_call_14_hang_up.setShowText("总控制室主机取消呼叫");
  108. EventBus.getDefault().post(new MessageEvent(doctor_call_14_hang_up, Constants.EVENT_UDP));
  109. break;
  110. case "call_14_upremove": //医生主机上滑移除了呼叫列表中的一个条目
  111. UdpEntity call_13_upremove = new UdpEntity();
  112. call_13_upremove.setIndexes(data[0]);
  113. call_13_upremove.setNurseHostID(data[1]);
  114. call_13_upremove.setDoorwayMachineID(data[2]);
  115. call_13_upremove.setHeadMachineID(data[3]);
  116. call_13_upremove.setSipAddress(data[4]);
  117. call_13_upremove.setRoomNumber(data[5]);
  118. call_13_upremove.setBedNumber(data[6]);
  119. call_13_upremove.setLevel(data[7]);
  120. call_13_upremove.setType(data[8]);
  121. call_13_upremove.setName(data[9]);
  122. call_13_upremove.setDeviceMAC(data[10]);
  123. call_13_upremove.setShowText("医生主机上滑移除呼叫列表中的一个条目");
  124. EventBus.getDefault().post(new MessageEvent(call_13_upremove, Constants.EVENT_UDP));
  125. break;
  126. }
  127. }
  128. if (StringUtils.notEmpty(Constants.PartID)) {
  129. try {
  130. LogUtil.d("AAGGH", "PartID==" + Constants.PartID + "-----UDPPartID==" + data[data.length - 1]);
  131. if (!StringUtils.notEmpty(data[data.length - 1]) || !Constants.PartID.equals(data[data.length - 1])) {// 协议规定所有UDP最后一条为 PartID (科室ID)。只有属于自己科室的才能作用
  132. return;
  133. }
  134. } catch (Exception e) {
  135. return;
  136. }
  137. }
  138. //判断indexes 是否为当前端口使用
  139. switch (data[0]) {
  140. case "call_1"://床头机呼叫护士主机
  141. case "call_2"://卫生间呼叫护士主机
  142. case "call_4"://增援呼叫护士主机
  143. UdpEntity udpEntity = new UdpEntity();
  144. udpEntity.setIndexes(data[0]);
  145. udpEntity.setNurseHostID(data[1]);
  146. udpEntity.setDoorwayMachineID(data[2]);
  147. udpEntity.setHeadMachineID(data[3]);
  148. udpEntity.setSipAddress(data[4]);
  149. udpEntity.setRoomNumber(data[5]);
  150. udpEntity.setBedNumber(data[6]);
  151. udpEntity.setLevel(data[7]);
  152. udpEntity.setType(data[8]);
  153. udpEntity.setName(data[9]);
  154. udpEntity.setDeviceMAC(data[10]);
  155. udpEntity.setShowText("床头机呼叫护士主机");
  156. //推向event
  157. EventBus.getDefault().post(new MessageEvent(udpEntity, Constants.EVENT_UDP));
  158. break;
  159. case "call_1_b1"://护士已经退出护理
  160. UdpEntity call_1_b1 = new UdpEntity();
  161. call_1_b1.setIndexes(data[0]);
  162. call_1_b1.setNurseHostID(data[1]);
  163. call_1_b1.setDoorwayMachineID(data[2]);
  164. call_1_b1.setHeadMachineID(data[3]);
  165. call_1_b1.setSipAddress(data[4]);
  166. call_1_b1.setRoomNumber(data[5]);
  167. call_1_b1.setBedNumber(data[6]);
  168. call_1_b1.setLevel(data[7]);
  169. call_1_b1.setType(data[8]);
  170. call_1_b1.setName(data[9]);
  171. call_1_b1.setShowText("护士已经退出护理");
  172. EventBus.getDefault().post(new MessageEvent(call_1_b1, Constants.EVENT_UDP));
  173. break;
  174. case "call_1_hang_up": //子机取消呼叫
  175. UdpEntity call_1_hang_up = new UdpEntity();
  176. call_1_hang_up.setIndexes(data[0]);
  177. call_1_hang_up.setNurseHostID(data[1]);
  178. call_1_hang_up.setDoorwayMachineID(data[2]);
  179. call_1_hang_up.setHeadMachineID(data[3]);
  180. call_1_hang_up.setSipAddress(data[4]);
  181. call_1_hang_up.setRoomNumber(data[5]);
  182. call_1_hang_up.setBedNumber(data[6]);
  183. call_1_hang_up.setLevel(data[7]);
  184. call_1_hang_up.setType(data[8]);
  185. call_1_hang_up.setName(data[9]);
  186. call_1_hang_up.setDeviceMAC(data[10]);
  187. call_1_hang_up.setShowText("子机取消呼叫");
  188. EventBus.getDefault().post(new MessageEvent(call_1_hang_up, Constants.EVENT_UDP));
  189. break;
  190. case "call_1_transfer": //床头机转接护士主机电话
  191. UdpEntity call_1_transfer = new UdpEntity();
  192. call_1_transfer.setIndexes(data[0]);
  193. call_1_transfer.setNurseHostID(data[1]);
  194. call_1_transfer.setDoorwayMachineID(data[2]);
  195. call_1_transfer.setHeadMachineID(data[3]);
  196. call_1_transfer.setSipAddress(data[4]);
  197. call_1_transfer.setRoomNumber(data[5]);
  198. call_1_transfer.setBedNumber(data[6]);
  199. call_1_transfer.setLevel(data[7]);
  200. call_1_transfer.setType(data[8]);
  201. call_1_transfer.setName(data[9]);
  202. call_1_transfer.setShowText("床头机转接电话请求");
  203. EventBus.getDefault().post(new MessageEvent(call_1_transfer, Constants.EVENT_UDP));
  204. break;
  205. case "call_transfer_bedtobed": //子机转接子机成功后,告诉外面执行状态联动
  206. UdpEntity transfer_bedtobed = new UdpEntity();
  207. transfer_bedtobed.setIndexes(data[0]);
  208. transfer_bedtobed.setNurseHostID(data[1]);
  209. transfer_bedtobed.setDoorwayMachineID(data[2]);
  210. transfer_bedtobed.setHeadMachineID(data[3]);
  211. transfer_bedtobed.setSipAddress(data[4]);
  212. transfer_bedtobed.setRoomNumber(data[5]);
  213. transfer_bedtobed.setBedNumber(data[6]);
  214. transfer_bedtobed.setLevel(data[7]);
  215. transfer_bedtobed.setType(data[8]);
  216. transfer_bedtobed.setName(data[9]);
  217. transfer_bedtobed.setShowText("子机转接子机成功");
  218. EventBus.getDefault().post(new MessageEvent(transfer_bedtobed, Constants.EVENT_UDP));
  219. break;
  220. case "call_3"://床头机呼叫床头机
  221. break;
  222. case "call_5"://床头机呼叫手表
  223. break;
  224. case "call_6":
  225. UdpEntity udpEntity6 = new UdpEntity();
  226. udpEntity6.setIndexes(data[0]);
  227. udpEntity6.setNurseHostID(data[1]);
  228. udpEntity6.setDoorwayMachineID(data[2]);
  229. udpEntity6.setHeadMachineID(data[3]);
  230. udpEntity6.setSipAddress(data[4]);
  231. udpEntity6.setRoomNumber(data[5]);
  232. udpEntity6.setBedNumber(data[6]);
  233. udpEntity6.setLevel(data[7]);
  234. udpEntity6.setType(data[8]);
  235. udpEntity6.setName(data[9]);
  236. udpEntity6.setShowText("门口机呼叫护士主机");
  237. EventBus.getDefault().post(new MessageEvent(udpEntity6, Constants.EVENT_UDP));
  238. break;
  239. case "call_7":
  240. //门口机呼叫医生主机");
  241. break;
  242. case "call_8":
  243. //护士主机呼叫分机");
  244. break;
  245. case "call_9":
  246. //护士主机呼叫护士主机");
  247. break;
  248. case "call_10":
  249. //护士主机呼叫医生主机");
  250. break;
  251. case "call_11":
  252. //手表呼叫护士主机");
  253. break;
  254. case "call_15_doctor_hang_up_phone"://医生主机挂断电话
  255. UdpEntity udpEntity_15_doctor_hang_up_phone = new UdpEntity();
  256. udpEntity_15_doctor_hang_up_phone.setIndexes(data[0]);
  257. udpEntity_15_doctor_hang_up_phone.setNurseHostID(data[1]);
  258. udpEntity_15_doctor_hang_up_phone.setDoorwayMachineID(data[2]);
  259. udpEntity_15_doctor_hang_up_phone.setHeadMachineID(data[3]);
  260. udpEntity_15_doctor_hang_up_phone.setSipAddress(data[4]);
  261. udpEntity_15_doctor_hang_up_phone.setRoomNumber(data[5]);
  262. udpEntity_15_doctor_hang_up_phone.setBedNumber(data[6]);
  263. udpEntity_15_doctor_hang_up_phone.setLevel(data[7]);
  264. udpEntity_15_doctor_hang_up_phone.setType(data[8]);
  265. udpEntity_15_doctor_hang_up_phone.setName(data[9]);
  266. udpEntity_15_doctor_hang_up_phone.setDeviceMAC(data[10]);
  267. udpEntity_15_doctor_hang_up_phone.setShowText("医生主机挂断电话");
  268. //推向event
  269. EventBus.getDefault().post(new MessageEvent(udpEntity_15_doctor_hang_up_phone, Constants.EVENT_UDP));
  270. break;
  271. case "end_1":
  272. //挂断");
  273. break;
  274. case "deposit_1"://主机一托管给主机二
  275. case "deposit_2"://主机一取消托管
  276. case "deposit_3"://主机二同意托管
  277. case "deposit_4"://主机二不托管
  278. udpEntitys = new UdpEntity();
  279. udpEntitys.setIndexes(data[0]);
  280. udpEntitys.setNurseHostID(data[1]);
  281. udpEntitys.setDoorwayMachineID(data[2]);
  282. udpEntitys.setHeadMachineID(data[3]);
  283. udpEntitys.setSipAddress(data[4]);
  284. udpEntitys.setRoomNumber(data[5]);
  285. udpEntitys.setBedNumber(data[6]);
  286. udpEntitys.setLevel(data[7]);
  287. udpEntitys.setType(data[8]);
  288. udpEntitys.setName(data[9]);
  289. udpEntitys.setShowText("护士主机托管护士主机");
  290. if (udpEntitys.getNurseHostID().equals(MYSELF_ID) || udpEntitys.getDoorwayMachineID().equals(MYSELF_ID)) {
  291. EventBus.getDefault().post(new MessageEvent(3, Constants.EVENT_FRAGMENT));
  292. EventBus.getDefault().post(new MessageEvent(11, Constants.EVENT_FRAGMENT_TRUST));
  293. }
  294. break;
  295. case "nursing_1"://进入护理
  296. UdpEntity nursing_1 = new UdpEntity();
  297. nursing_1.setIndexes(data[0]);
  298. nursing_1.setNurseHostID(data[1]);
  299. nursing_1.setDoorwayMachineID(data[2]);
  300. nursing_1.setHeadMachineID(data[3]);
  301. nursing_1.setSipAddress(data[4]);
  302. nursing_1.setRoomNumber(data[5]);
  303. nursing_1.setBedNumber(data[6]);
  304. nursing_1.setLevel(data[7]);
  305. nursing_1.setType(data[8]);
  306. nursing_1.setName(data[9]);
  307. EventBus.getDefault().post(new MessageEvent(nursing_1, Constants.EVENT_UDP));
  308. break;
  309. case "nursing_2"://退出护理
  310. UdpEntity nursing_2 = new UdpEntity();
  311. nursing_2.setIndexes(data[0]);
  312. nursing_2.setNurseHostID(data[1]);
  313. nursing_2.setDoorwayMachineID(data[2]);
  314. nursing_2.setHeadMachineID(data[3]);
  315. nursing_2.setSipAddress(data[4]);
  316. nursing_2.setRoomNumber(data[5]);
  317. nursing_2.setBedNumber(data[6]);
  318. nursing_2.setLevel(data[7]);
  319. nursing_2.setType(data[8]);
  320. nursing_2.setName(data[9]);
  321. EventBus.getDefault().post(new MessageEvent(nursing_2, Constants.EVENT_UDP));
  322. break;
  323. case "cancel_bed_call"://门口机取消呼叫
  324. UdpEntity cancel_bed_call = new UdpEntity();
  325. cancel_bed_call.setIndexes(data[0]);
  326. cancel_bed_call.setNurseHostID(data[1]);
  327. cancel_bed_call.setDoorwayMachineID(data[2]);
  328. cancel_bed_call.setHeadMachineID(data[3]);
  329. cancel_bed_call.setSipAddress(data[4]);
  330. cancel_bed_call.setRoomNumber(data[5]);
  331. cancel_bed_call.setBedNumber(data[6]);
  332. cancel_bed_call.setLevel(data[7]);
  333. cancel_bed_call.setType(data[8]);
  334. cancel_bed_call.setName(data[9]);
  335. cancel_bed_call.setShowText("门口机取消呼叫");
  336. EventBus.getDefault().post(new MessageEvent(cancel_bed_call, Constants.EVENT_UDP));
  337. break;
  338. case "MGR_VOICEMESSAGE"://语音留言
  339. if (!Constants.VOICE_MESSAGE_HOSMANINFO_NURSE.equals(data[1])
  340. || !Constants.VOICE_MESSAGE_DEVICETYPE_NURSE.equals(data[2])
  341. || !Constants.VOICE_MESSAGE_DEVICEID_NURSE.equals(data[3])
  342. || !Constants.VOICE_MESSAGE_PATIENTID_NURSE.equals(data[4])
  343. || !Constants.VOICE_MESSAGE_PATIENTNAME_NURSE.equals(data[5])
  344. || !Constants.VOICE_MESSAGE_FILEORIGINALNAME_NURSE.equals(data[6])
  345. || !Constants.VOICE_MESSAGE_FILESTORENAME_NURSE.equals(data[7])
  346. || !Constants.VOICE_MESSAGE_MESSAGETIME_NURSE.equals(data[8])
  347. || !Constants.VOICE_MESSAGE_CONTENT_NURSE.equals(data[9])
  348. || !Constants.VOICE_MESSAGE_ID_NURSE.equals(data[10])
  349. ) {
  350. Constants.VOICE_MESSAGE_HOSMANINFO_NURSE = data[1];
  351. Constants.VOICE_MESSAGE_DEVICETYPE_NURSE = data[2];
  352. Constants.VOICE_MESSAGE_DEVICEID_NURSE = data[3];
  353. Constants.VOICE_MESSAGE_PATIENTID_NURSE = data[4];
  354. Constants.VOICE_MESSAGE_PATIENTNAME_NURSE = data[5];
  355. Constants.VOICE_MESSAGE_FILEORIGINALNAME_NURSE = data[6];
  356. Constants.VOICE_MESSAGE_FILESTORENAME_NURSE = data[7];
  357. Constants.VOICE_MESSAGE_MESSAGETIME_NURSE = data[8];
  358. if (data.length > 9)
  359. Constants.VOICE_MESSAGE_CONTENT_NURSE = data[9];
  360. if (data.length > 10)
  361. Constants.VOICE_MESSAGE_ID_NURSE = data[10];
  362. MessageEntity messageEntity = new MessageEntity();
  363. messageEntity.setIndexes(data[0]);
  364. messageEntity.setHosManInfo(data[1]);
  365. messageEntity.setDeviceType(data[2]);
  366. messageEntity.setDeviceID(data[3]);
  367. messageEntity.setPatientID(data[4]);
  368. messageEntity.setPatientName(data[5]);
  369. messageEntity.setFileOriginalName(data[6]);
  370. messageEntity.setFileStoreName(data[7]);
  371. messageEntity.setMessageTime(data[8]);
  372. if (data.length > 9)
  373. messageEntity.setContent(data[9]);
  374. if (data.length > 10)
  375. messageEntity.setID(data[10]);
  376. EventBus.getDefault().post(new MessageEvent(messageEntity, Constants.EVENT_VOICE_MESSAGE));
  377. } else {
  378. return;
  379. }
  380. case "back_1":
  381. //呼叫回复");
  382. break;
  383. }
  384. } else if ("#".equals(udpMsg.substring(0, 1))) {
  385. //判断是否为服务端发过来的命令
  386. udpMsg = delHeadAndEnd(udpMsg, "#", "$");
  387. String[] data = udpMsg.split(Constants.DELIMITER);
  388. if(StringUtils.notEmpty(Constants.PartID)){
  389. try {
  390. LogUtil.d("AAGGH", "PartID==" + Constants.PartID+"-----UDPPartID=="+data[data.length - 1]);
  391. if (!StringUtils.notEmpty(data[data.length - 1]) || !Constants.PartID.equals(data[data.length - 1])) {// 协议规定所有UDP最后一条为 PartID (科室ID)。只有属于自己科室的才能作用
  392. return;
  393. }
  394. } catch (Exception e) {
  395. return;
  396. }
  397. }
  398. switch (data[0]) {
  399. case "MGR_UPDATE"://后台相关数据改变后通知护士主机刷新UI
  400. if (!Constants.MGR_UPDATE) {
  401. Constants.MGR_UPDATE = true;
  402. EventBus.getDefault().post(new MessageEvent(null, Constants.EVENT_MGR_UPDATE));
  403. }
  404. break;
  405. case "HEART"://服务端定时发送心跳监听;APP回复
  406. if (data[1].equals(Constants.MAC_ADDRESS)) {
  407. sendString("HEART," + Constants.MAC_ADDRESS);
  408. }
  409. break;
  410. case "MGR_SHUTDOWN": //关机 //批量关机
  411. if (data[1].equals(Constants.MAC_ADDRESS) || (data[1].equals("FF:FF:FF:FF:FF:FF"))) {
  412. AutoRebootUtil.shutdown();//调用Linux-shell命令
  413. }
  414. break;
  415. case "MGR_RESET"://重启AP //批量重启()
  416. if (data[1].equals(Constants.MAC_ADDRESS) || (data[1].equals("FF:FF:FF:FF:FF:FF") && data[2].equals(Constants.MYSELF_ID))) {
  417. TRUST_FLAG_VALUE = 66;
  418. // EventBus.getDefault().post(new MessageEvent("reset", Constants.EVENT_MGR_RESET));
  419. if (!isReset) {
  420. isReset = true;
  421. Intent mStartActivity = new Intent(MyApplication.getAppContext(), InitActivity.class);
  422. int mPendingIntentId = 123456;
  423. PendingIntent mPendingIntent = PendingIntent.getActivity(MyApplication.getAppContext(), mPendingIntentId, mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
  424. AlarmManager mgr = (AlarmManager) MyApplication.getAppContext().getSystemService(Context.ALARM_SERVICE);
  425. mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, mPendingIntent);
  426. System.exit(0);
  427. }
  428. } else {
  429. //重启失败
  430. TRUST_FLAG_VALUE = 88;
  431. }
  432. EventBus.getDefault().post(new MessageEvent(TRUST_FLAG_VALUE, Constants.EVENT_FRAGMENT_TRUST));
  433. break;
  434. case "MGR_SYSTEM_RESET"://系统重启
  435. if (data[1].equals(Constants.MAC_ADDRESS)) {
  436. if (SerialPortUtil.systemVersionIsO()) {//安卓8.1.0 版用
  437. MyApplication.serialPortUtil.systemRestart();//调用吴总串口
  438. } else {
  439. AutoRebootUtil.reboot();//调用Linux-shell命令
  440. }
  441. }
  442. break;
  443. //给出设备信息
  444. case "MGR_REG_Q":
  445. try {
  446. if (data[1].equals(Constants.MAC_ADDRESS)) {
  447. //有线mac地址,设备出场信息,无线mac地址
  448. String str = "$MGR_REG_A" + Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "1" + Constants.DELIMITER + android.os.Build.DISPLAY +
  449. Constants.DELIMITER + Constants.MAC_ADDRESS + Constants.DELIMITER + "FF:FF:FF:FF:FF:FF" + Constants.DELIMITER + SerialPortUtil.KEY_ID + "#";
  450. UdpHelper.send(str);
  451. }
  452. } catch (ArrayIndexOutOfBoundsException e) {
  453. e.printStackTrace();
  454. }
  455. break;
  456. case "MGR_MACHINE_SETSYS": //系统设置
  457. try {
  458. LogUtil.d("MGR_MACHINE_SETSYS", data[1] + "--" + data[2] + "--" + data[3] + "--" + data[4] + "--" + data[5] + "--" + data[6] + "--" + data[7] + "--" + data[8] + "--" + data[9] + "--" + data[10] + "--" + data[13]);
  459. if (!Constants.MORNING_NIGTH.equals(data[1])
  460. || !Constants.SCREENLIGHT.equals(data[2])
  461. || !Constants.BEDSYSVOICE.equals(data[3])
  462. || !Constants.RINGLVOICE.equals(data[4])
  463. || !Constants.RINGLVOICELOOP.equals(data[5])
  464. || !Constants.NURSINGLIGHT.equals(data[6])
  465. || !Constants.CALLINGTIMEOUT.equals(data[7])
  466. || !Constants.SCREENEXTINGUISHTIME.equals(data[8])
  467. || !Constants.DOORCALLVOICE.equals(data[9])
  468. || !Constants.BEDCALLVOICE.equals(data[10])
  469. || !Constants.VOICE_BROADCAST_TYPE.equals(data[13])
  470. ) {
  471. Constants.MORNING_NIGTH = data[1];
  472. Constants.SCREENLIGHT = data[2];
  473. Constants.BEDSYSVOICE = data[3];
  474. Constants.RINGLVOICE = data[4];
  475. Constants.RINGLVOICELOOP = data[5];
  476. Constants.NURSINGLIGHT = data[6];
  477. Constants.CALLINGTIMEOUT = data[7];
  478. Constants.SCREENEXTINGUISHTIME = data[8];
  479. Constants.DOORCALLVOICE = data[9];
  480. Constants.BEDCALLVOICE = data[10];
  481. Constants.VOICE_BROADCAST_TYPE = data[13];
  482. SystemSetEntity machine_setsys = new SystemSetEntity(data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8]);
  483. EventBus.getDefault().post(new MessageEvent(machine_setsys, Constants.EVENT_SETSYS));
  484. }
  485. } catch (Exception e) {
  486. }
  487. break;
  488. case "MGR_APPUPDATE": //APP更新
  489. LogUtil.d("CheckUpdate", "2===data[1]==" + data[1] + "----UPDATE_APP_FLAG==" + Constants.UPDATE_APP_FLAG);
  490. if (data[1].equals("1")) {
  491. if (!Constants.UPDATE_APP_FLAG) {
  492. Constants.UPDATE_APP_FLAG = true;
  493. EventBus.getDefault().post(new MessageEvent(null, Constants.EVENT_MGR_APP_UPDATE));
  494. }
  495. }
  496. break;
  497. case "MGR_VOICEMESSAGE"://语音留言
  498. String flag = "";
  499. if (data.length > 7) {
  500. flag = data[7];
  501. if (!flag.contains(".amr")) {
  502. flag += ".amr";
  503. }
  504. }
  505. if (data.length > 8)
  506. flag = data[8];
  507. if (!Constants.setVoiceTimes(flag)) {
  508. MessageEntity messageEntity = new MessageEntity();
  509. messageEntity.setIndexes(data[0]);
  510. messageEntity.setHosManInfo(data[1]);
  511. messageEntity.setDeviceType(data[2]);
  512. messageEntity.setDeviceID(data[3]);
  513. messageEntity.setPatientID(data[4]);
  514. messageEntity.setPatientName(data[5]);
  515. messageEntity.setFileOriginalName(data[6]);
  516. if (!data[7].contains(".amr")) {
  517. data[7] += ".amr";
  518. }
  519. messageEntity.setFileStoreName(data[7]);
  520. if (data.length > 8)
  521. messageEntity.setMessageTime(data[8]);
  522. if (data.length > 9)
  523. messageEntity.setContent(data[9]);
  524. if (data.length > 10)
  525. messageEntity.setID(data[10]);
  526. EventBus.getDefault().post(new MessageEvent(messageEntity, Constants.EVENT_VOICE_MESSAGE));
  527. } else {
  528. Log.d("", "");
  529. return;
  530. }
  531. break;
  532. }
  533. }
  534. }
  535. public static void sendUdpData(String Indexes, String nurseHostID, String doorwayMachineID, String headMachineID, String sipAddress, String roomNumber, String bedNumber, String level, String type, String name, String deviceMAC) {
  536. final String strUdp = Indexes + Character.toString((char) 3) + nurseHostID +
  537. Character.toString((char) 3) + doorwayMachineID + Character.toString((char) 3)
  538. + headMachineID + Character.toString((char) 3) + sipAddress + Character.toString((char) 3)
  539. + roomNumber + Character.toString((char) 3) + bedNumber + Character.toString((char) 3) + level + Character.toString((char) 3) + type + Character.toString((char) 3) + name + Character.toString((char) 3) + deviceMAC
  540. + Character.toString((char) 3) + Constants.PartID;//add by waderson 20190627 加了一个partId (科室ID)
  541. new Thread() {
  542. @Override
  543. public void run() {
  544. //把网络访问的代码放在这里
  545. UdpHelper.send("$" + strUdp + "#");
  546. }
  547. }.start();
  548. }
  549. /**
  550. * 直接UDP 发送一条字符串
  551. */
  552. public static void sendString(final String str) {
  553. new Thread() {
  554. @Override
  555. public void run() {
  556. //把网络访问的代码放在这里
  557. UdpHelper.send("$" + str + "#");
  558. }
  559. }.start();
  560. }
  561. public static String delHeadAndEnd(String source, String beginTrim, String endTrim) {
  562. if (source == null) {
  563. return "";
  564. }
  565. source = source.trim(); // 循环去掉字符串首的beTrim字符
  566. if (source.isEmpty()) {
  567. return "";
  568. }
  569. String beginChar = source.substring(0, 1);
  570. if (beginChar.equalsIgnoreCase(beginTrim)) {
  571. source = source.substring(1, source.length());
  572. beginChar = source.substring(0, 1);
  573. }
  574. // 循环去掉字符串尾的beTrim字符
  575. String endChar = source.substring(source.length() - 1, source.length());
  576. if (endChar.equalsIgnoreCase(endTrim)) {
  577. source = source.substring(0, source.length() - 1);
  578. endChar = source.substring(source.length() - 1, source.length());
  579. }
  580. return source;
  581. }
  582. }