Merge remote-tracking branch 'origin/master'
| | |
| | | private static final long serialVersionUID = 20160805192500101L; |
| | | |
| | | public String rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | private String commandId ;//å½ä»¤IDï¼å¯è½ä¸ºnull |
| | | private String rtuAddr ;//ç»ç«¯å°å |
| | | private String protocol ;//æ°æ®æå¯¹åºçåè®®åç§° |
| | | private String code ;//æ°æ®æå¯¹åºçåè½ç : |
| | | private Object subData ;//对åºå个åè½ç çå
·ä½æ°æ® |
| | | private String hex ;//䏿¥æ°æ®çåå
è¿å¶ |
| | | public String commandId ;//å½ä»¤IDï¼å¯è½ä¸ºnull |
| | | public String rtuAddr ;//ç»ç«¯å°å |
| | | public String protocol ;//æ°æ®æå¯¹åºçåè®®åç§° |
| | | public String code ;//æ°æ®æå¯¹åºçåè½ç : |
| | | public Object subData ;//对åºå个åè½ç çå
·ä½æ°æ® |
| | | public String hex ;//䏿¥æ°æ®çåå
è¿å¶ |
| | | |
| | | public String toString() { |
| | | StringBuilder sb = new StringBuilder() ; |
| | |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.rtuResultSendWebUrl = para.rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°åï¼çµä¿¡å¹³å°è®¾å¤IMEIï¼ |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | |
| | | ä½å®ç°çé¨åå¯ä»¥ç¨æ¥æµè¯æµæ§ä¸ä½éï¼ä¸æ®µå¿å¼ºä¸èµ·æµè¯è¿ï¼ã |
| | | ç®åæ
åµä¸ï¼è¿çæ¬åè®®å®ç°ä¸è½åºç¨äºå®é
项ç®ä¸ï¼å¦æå¿
é¡»å®ç°ï¼ |
| | | è¿éè¦ç»å硬件åè®®å
·ä½å®ç°å
容åå®ç°éä¿¡ä¸é´ä»¶çå议解æä¸æé é¨åï¼ |
| | | è¿éè¦å®ç°ä¸è¡æ°æ®å¤ç任塿 é¨åã |
| | | è¿éè¦å®ç°ä¸è¡æ°æ®å¤ç任塿 é¨åã |
| | | |
| | | |
| | | 鳿»çæµæ§ä¸ä½éä¸çæ±æµ·çæµæ§ä¸ä½éä¸è½å¨åä¸ä¸ªä¸é´ä»¶è¿è¡ï¼ |
| | | å ä¸ºä¸¤ä¸ªçæ¬çåè®®å议头é½ä¸æ ·ï¼æ²¡æ³åºå弿¥ï¼å¦æä¸¤ç§è®¾å¤ |
| | | é½è¦åºç¨ï¼éè¦é¨ç½²ä¸¤ä¸ªéä¿¡ä¸é´ä»¶ã |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | public class CodeV202404 { |
| | | //åè½ç 为å符串ï¼åå
è¿å¶æ°æ® |
| | | public static final String cd_02 = "02" ;//é¾è·¯æ£æµ |
| | | public static final String cd_10 = "10" ;//设置设å¤ç»ç«¯å°å |
| | | public static final String cd_8A = "8A" ;//设å¤ç»å½ |
| | | public static final String cd_50 = "50" ; //æ¥è¯¢è®¾å¤ç»ç«¯å°å |
| | | public static final String cd_80 = "80" ; //设å¤ç»ç«¯å·¥ä½ä¸æ¥ |
| | | public static final String cd_81 = "81" ; //设å¤ç»ç«¯éæºèªæ¥ |
| | | public static final String cd_5B = "5B" ; //æ¥è¯¢è®¾å¤ç»ç«¯å®æ¶å¼ |
| | | public static final String cd_65 = "65" ; //æ¥è¯¢è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ |
| | | public static final String cd_97 = "97" ; //æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ |
| | | public static final String cd_15 = "15" ; //è¿ç¨ç¨æ·å
å¼ |
| | | public static final String cd_55 = "55" ; //æ¥è¯¢è®¾å¤ç»ç«¯å
å¼è®°å½ |
| | | public static final String cd_98 = "98" ; //æ¸
空设å¤ç»ç«¯å
å¼è®°å½ |
| | | public static final String cd_16 = "16" ; //设置设å¤ç»ç«¯å©ä½æ°´éåå©ä½é颿¥è¦å¼ |
| | | public static final String cd_56 = "56" ; //æ¥è¯¢è®¾å¤ç»ç«¯å©ä½æ°´éåå©ä½é颿¥è¦å¼ |
| | | public static final String cd_5C = "5C" ; //æ¥è¯¢è®¾å¤ç»ç«¯çæ¥è®°å½ |
| | | public static final String cd_99 = "99" ; //æ¸
空设å¤ç»ç«¯æ¥è®°å½ |
| | | public static final String cd_22 = "22" ; //设置æºäºå¹´æå¤§å¼ééåæ°´ä½ä¸é |
| | | public static final String cd_68 = "68" ; //æ¥è¯¢æºäºå¹´æå¤§å¼ééåæ°´ä½ä¸é |
| | | public static final String cd_30 = "30" ; //设置设å¤ç»ç«¯ç¨æ°´ææ |
| | | public static final String cd_31 = "31" ; //设置设å¤ç»ç«¯ç¨æ°´æ æ |
| | | public static final String cd_92 = "92" ; //å¹³å°è¿ç¨å¼å¯æ°´æ³µ/éé¨ |
| | | public static final String cd_93 = "93" ; //å¹³å°è¿ç¨å
³éæ°´æ³µ/éé¨ |
| | | public static final String cd_A2 = "A2" ; //APPè¿ç¨å¼å¯æ°´æ³µ/éé¨ |
| | | public static final String cd_A3 = "A3" ; //APPè¿ç¨å
³éæ°´æ³µ/éé¨ |
| | | public static final String cd_83 = "83" ; //饿µç»ç«¯å®ç¹ä¸æ¥ |
| | | public static final String cd_84 = "84" ; //å·å¡å¼æ³µ/é䏿¥ |
| | | public static final String cd_85 = "85" ; //å·å¡å
³æ³µ/é䏿¥ |
| | | public static final String cd_9A = "9A" ; //æ¸
é¤å¹´ç¨æ°´éåå¹´ç¨çµé |
| | | public static final String cd_26 = "26" ; //设置设å¤ç»ç«¯å¹´ç¨æ°´é |
| | | public static final String cd_21 = "21" ; //设置设å¤ç»ç«¯IPå°å |
| | | public static final String cd_86 = "86" ; //æ¥è¯¢è®¾å¤ç»ç«¯IPå°å |
| | | public static final String cd_23 = "23" ; //设置设å¤ç»ç«¯åå |
| | | public static final String cd_87 = "87" ; //æ¥è¯¢è®¾å¤ç»ç«¯åå |
| | | public static final String cd_88 = "88" ; //æ¥è¯¢è®¾å¤ç»ç«¯æ³¨åå· |
| | | public static final String cd_24 = "24" ; //设置设å¤ç»ç«¯æ³¨åå· |
| | | public static final String cd_25 = "25" ; //设置设å¤ç»ç«¯éæ°æ³¨å |
| | | public static final String cd_9B = "9B" ; //æ¸
é¤è®¾å¤ç»ç«¯æ³¨åå· |
| | | public static final String cd_9C = "9C" ; //é»ååè¿ç¨å¼ºå¶å
³éæ°´æ³µ/éé¨ |
| | | public static final String cd_C2 = "C2" ; //å¼å
³æ°´æ³µ/é鍿å/å¤±è´¥ä¸æ¥ |
| | | |
| | | public static String getCodeName(String code) { |
| | | String name = (code.equals(cd_02) ? "é¾è·¯æ£æµ" : |
| | | (code.equals(cd_10) ? "设置设å¤ç»ç«¯å°å" : |
| | | (code.equals(cd_8A) ? "设å¤ç»å½" : |
| | | (code.equals(cd_50) ? "æ¥è¯¢è®¾å¤ç»ç«¯å°å" : |
| | | (code.equals(cd_80) ? "设å¤ç»ç«¯å·¥ä½ä¸æ¥" : |
| | | (code.equals(cd_81) ? "设å¤ç»ç«¯éæºèªæ¥" : |
| | | (code.equals(cd_5B) ? "æ¥è¯¢è®¾å¤ç»ç«¯å®æ¶å¼" : |
| | | (code.equals(cd_65) ? "æ¥è¯¢è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½" : |
| | | (code.equals(cd_97) ? "æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½" : |
| | | (code.equals(cd_15) ? "è¿ç¨ç¨æ·å
å¼" : |
| | | (code.equals(cd_55) ? "æ¥è¯¢è®¾å¤ç»ç«¯å
å¼è®°å½" : |
| | | (code.equals(cd_98) ? "æ¸
空设å¤ç»ç«¯å
å¼è®°å½" : |
| | | (code.equals(cd_16) ? "设置设å¤ç»ç«¯å©ä½æ°´éåå©ä½é颿¥è¦å¼" : |
| | | (code.equals(cd_56) ? "æ¥è¯¢è®¾å¤ç»ç«¯å©ä½æ°´éåå©ä½é颿¥è¦å¼" : |
| | | (code.equals(cd_5C) ? "æ¥è¯¢è®¾å¤ç»ç«¯çæ¥è®°å½" : |
| | | (code.equals(cd_99) ? "æ¸
空设å¤ç»ç«¯æ¥è®°å½" : |
| | | (code.equals(cd_22) ? "设置æºäºå¹´æå¤§å¼ééåæ°´ä½ä¸é" : |
| | | (code.equals(cd_68) ? "æ¥è¯¢æºäºå¹´æå¤§å¼ééåæ°´ä½ä¸é" : |
| | | (code.equals(cd_30) ? "设置设å¤ç»ç«¯ç¨æ°´ææ" : |
| | | (code.equals(cd_31) ? "设置设å¤ç»ç«¯ç¨æ°´æ æ" : |
| | | (code.equals(cd_92) ? "å¹³å°è¿ç¨å¼å¯æ°´æ³µ/éé¨" : |
| | | (code.equals(cd_93) ? "å¹³å°è¿ç¨å
³éæ°´æ³µ/éé¨" : |
| | | (code.equals(cd_A2) ? "APPè¿ç¨å¼å¯æ°´æ³µ/éé¨" : |
| | | (code.equals(cd_A3) ? "APPè¿ç¨å
³éæ°´æ³µ/éé¨" : |
| | | (code.equals(cd_83) ? "饿µç»ç«¯å®ç¹ä¸æ¥" : |
| | | (code.equals(cd_84) ? "å·å¡å¼æ³µ/é䏿¥" : |
| | | (code.equals(cd_85) ? "å·å¡å
³æ³µ/é䏿¥" : |
| | | (code.equals(cd_9A) ? "æ¸
é¤å¹´ç¨æ°´éåå¹´ç¨çµé" : |
| | | (code.equals(cd_26) ? "设置设å¤ç»ç«¯å¹´ç¨æ°´é" : |
| | | (code.equals(cd_21) ? "设置设å¤ç»ç«¯IPå°å" : |
| | | (code.equals(cd_86) ? "æ¥è¯¢è®¾å¤ç»ç«¯IPå°å" : |
| | | (code.equals(cd_23) ? "设置设å¤ç»ç«¯åå" : |
| | | (code.equals(cd_87) ? "æ¥è¯¢è®¾å¤ç»ç«¯åå" : |
| | | (code.equals(cd_88) ? "æ¥è¯¢è®¾å¤ç»ç«¯æ³¨åå·" : |
| | | (code.equals(cd_24) ? "设置设å¤ç»ç«¯æ³¨åå·" : |
| | | (code.equals(cd_25) ? "设置设å¤ç»ç«¯éæ°æ³¨å" : |
| | | (code.equals(cd_9B) ? "æ¸
é¤è®¾å¤ç»ç«¯æ³¨åå·" : |
| | | (code.equals(cd_9C) ? "é»ååè¿ç¨å¼ºå¶å
³éæ°´æ³µ/éé¨" : |
| | | (code.equals(cd_C2) ? "å¼å
³æ°´æ³µ/é鍿å/å¤±è´¥ä¸æ¥" : |
| | | ""))))))))))))))))))))))))))))))))))))))) ; |
| | | return name ; |
| | | } |
| | | |
| | | /** |
| | | * æ¯å¦ä¸ºææåè½ç |
| | | * @param code åè½ç |
| | | * @return æætrueï¼æ æfalse |
| | | */ |
| | | public static boolean isValid(String code){ |
| | | String name = getCodeName(code) ; |
| | | if(name != null && !name.equals("")){ |
| | | return true ; |
| | | } |
| | | return false ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import com.dy.common.util.CRC8_for_2_0; |
| | | |
| | | |
| | | public class CommonV202404 { |
| | | /** |
| | | * æ£æ¥å¤´ |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return trueæ¯,falseå¦ |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public Boolean isThisProtocolHead(byte[] bs) throws Exception{ |
| | | if(bs == null){ |
| | | return null ; |
| | | }else if(bs.length >= (ProtocolConstantV206V202404.ctrlIndex - 1) |
| | | && bs[0] == ProtocolConstantV206V202404.P_Head_Byte){ |
| | | if(bs[2] == ProtocolConstantV206V202404.P_Head_Byte){ |
| | | return true ; |
| | | }else if((byte)(bs[2] & 0xF8) == ProtocolConstantV206V202404.P_Head_Byte){ |
| | | //妿æ§å¶åãå°ååãç¨æ·æ°æ®å(åºç¨å±)çåèæ»æ°å¤§äº255ï¼åéè¿æ©å±ç¬¬äºä¸ªå¼å§å符0x68çä½3ä½ä½ä¸ºé¿Lçé«ä½æ©å± |
| | | //0xF8äºè¿å¶ï¼ 11111000 |
| | | return true ; |
| | | }else{ |
| | | return false ; |
| | | } |
| | | }else{ |
| | | return false ; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ£æ¥å¤´ |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public void checkHead(byte[] bs) throws Exception{ |
| | | if(bs.length < ProtocolConstantV206V202404.lenHead2Code |
| | | || bs[0] != ProtocolConstantV206V202404.P_Head_Byte){ |
| | | throw new Exception("ä¸è¡æ°æ®å¸§å¤´ä¸æ£ç¡®ï¼") ; |
| | | }else{ |
| | | if(bs.length >= ProtocolConstantV206V202404.lenHead2Code){ |
| | | if(bs[2] != ProtocolConstantV206V202404.P_Head_Byte |
| | | && (byte)(bs[2] & 0xF8) != ProtocolConstantV206V202404.P_Head_Byte){ |
| | | throw new Exception("ä¸è¡æ°æ®å¸§å¤´ä¸æ£ç¡®ï¼") ; |
| | | } |
| | | }else{ |
| | | throw new Exception("ä¸è¡æ°æ®å¸§å¤´ä¸æ£ç¡®ï¼") ; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ£æ¥å°¾ |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public void checkTail(byte[] bs) throws Exception{ |
| | | if(bs.length < 1 || bs[bs.length - 1] != ProtocolConstantV206V202404.P_Tail_Byte){ |
| | | throw new Exception("ä¸è¡æ°æ®å°¾ä¸æ£ç¡®ï¼") ; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæå¸§é¿åº¦ |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return æ°æ®é¿åº¦ |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public int parseFrameLen(byte[] bs)throws Exception{ |
| | | if(bs[2] != ProtocolConstantV206V202404.P_Head_Byte |
| | | && (byte)(bs[2] & 0xF8) != ProtocolConstantV206V202404.P_Head_Byte){ |
| | | int lenH = bs[2] & 0x07 ; |
| | | int lenL = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V202404.dataLenIndex) ; |
| | | return (lenH * 100) + (lenL + ProtocolConstantV206V202404.lenHead2ctrl + ProtocolConstantV206V202404.lenTail) ; |
| | | }else{ |
| | | int len = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V202404.dataLenIndex) ; |
| | | return len + ProtocolConstantV206V202404.lenHead2ctrl + ProtocolConstantV206V202404.lenTail ; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæç¨æ·æ°æ®ååèæ° |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return æ°æ®é¿åº¦ |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public int parseDataLen(byte[] bs)throws Exception{ |
| | | return parseFrameLen(bs) ; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæRtuå°å |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return æ§å¶å¨å°å |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public String parseRtuAddr(byte[] bs)throws Exception{ |
| | | String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, ProtocolConstantV206V202404.rtuAddr1Index_start, ProtocolConstantV206V202404.rtuAddr1Index_end) ; |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, ProtocolConstantV206V202404.rtuAddr2Index_start) ; |
| | | while(rtuAddrStr.length() < 5){ |
| | | rtuAddrStr = "0" + rtuAddrStr ; |
| | | } |
| | | return rtuAddrBCD + rtuAddrStr ; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæRtuå°å |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @param index å¯å§ä½ |
| | | * @return æ§å¶å¨å°å |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public String parseRtuAddr(byte[] bs, int index)throws Exception{ |
| | | String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + ProtocolConstantV206V202404.rtuAddr1Index_end - ProtocolConstantV206V202404.rtuAddr1Index_start) ;//å°åæ¯å¤§ç«¯æ¨¡å¼ |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, index + 1 + ProtocolConstantV206V202404.rtuAddr1Index_end - ProtocolConstantV206V202404.rtuAddr1Index_start) ; |
| | | while(rtuAddrStr.length() < 5){ |
| | | rtuAddrStr = "0" + rtuAddrStr ; |
| | | } |
| | | return rtuAddrBCD + rtuAddrStr ; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * åæåè½ç |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return åè½ç |
| | | */ |
| | | public String parseCode(byte[] bs){ |
| | | return ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V202404.codeIndex, 1) ; |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªåæ£æ¥ |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return éè¿nullï¼æªéè¿è¿ååå |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public String checkCrc_str(byte[] bs) throws Exception { |
| | | byte crcCompute = (byte)new CRC8_for_2_0().CRC8(bs, ProtocolConstantV206V202404.ctrlIndex, bs.length - 3) ; |
| | | byte crcInBs = bs[bs.length - 2] ; |
| | | if(crcCompute == crcInBs){ |
| | | return null ; |
| | | }else{ |
| | | return "计ç®CRCæ¯:" + crcCompute + "ï¼ä¸ä¼ CRCæ¯" + crcInBs ; |
| | | } |
| | | } |
| | | |
| | | |
| | | /* |
| | | æé æ§å¶å |
| | | D7 D6 D5ï½D4 D3ï½D0 |
| | | ä¼ è¾æ¹åä½ DIR æåæ å¿ä½ DIV 帧计æ°ä½ FCB åè½ç |
| | | 1ãä¼ è¾æ¹åä½(DIR) |
| | | DIR=0ï¼è¡¨ç¤ºæ¤å¸§ææ¯ç±ä¸å¿ç«ååºçä¸è¡æ¥æã |
| | | DIR=1ï¼è¡¨ç¤ºæ¤å¸§ææ¯ç±ç»ç«¯ç«ååºçä¸è¡æ¥æã |
| | | æ¯å¸§æ¥æçéä¿¡è¿ç¨ä¸æ¯ä¸åçã |
| | | 2ãæåæ å¿ä½(DIV) |
| | | DIV=1ï¼è¡¨ç¤ºæ¤æ¥æå·²è¢«æå为è¥å¹²å¸§ï¼æ¥æ¶åéè¦æ¼æ¥ãæ¤æ¶æ§å¶ååå¢å ä¸ä¸ªåèï¼ä¸ºæå帧记æ°DIVSï¼éç¨BINå计æ°(255-1),1表示æåä¸å¸§æ°æ®ãå¯å¨ç«åéæ¶èªå¨å ä¸åéï¼ä»å¨ç«è¿å¸§æ¶å¯¹åºå ä¸ç¡®è®¤ã |
| | | DIV=0ï¼è¡¨ç¤ºæ¤å¸§æ¥æä¸ºå帧ã |
| | | 3ã帧计æ°ä½(FCB)ï¼ |
| | | FCB表示æ¯ä¸ªç«è¿ç»çåé/确认æè¯·æ±/ååºæå¡çååä½ãFCBä½ç¨æ¥é²æ¢ä¿¡æ¯ä¼ è¾ç丢失åéå¤ã |
| | | å¯å¨ç«ååä¸ä»å¨ç«ä¼ è¾æ°çåé/确认æè¯·æ±/ååºä¼ è¾æ¥å¡æ¶ï¼å¯å¨ç«å°è®¾ç½®FCBå¼ï¼è¥è¶
æ¶æªå°ä»ç«çæ¥æï¼ææ¥æ¶åºç°å·®éï¼åå¯å¨ç«å°FCBå1ï¼éå¤åæ¥çåé/确认æè¯·æ±/ååºæå¡ï¼ç´å°FCBå为0ï¼è¡¨ç¤ºæ¬æ¬¡ä¼ è¾æå¡å¤±è´¥ã |
| | | ä»å¨ç«æ¶å°å¯å¨ç«FCBå¼ä¸ä¸º0çæ¥æå¹¶æç
§è¦æ±ç¡®è®¤æååºæ¶ï¼åºè¿åç¸åºçFCBå¼ã |
| | | */ |
| | | public byte createCtrl(byte dir, byte funcCode){ |
| | | byte b = dir;//DIR = 1(0x80)ï¼è¡¨ç¤ºæ¤å¸§æ¥ææ¯ç±ç»ç«¯ååºçä¸è¡æ¥æï¼ |
| | | b = (byte)(b | funcCode) ; |
| | | //DIV = 1(0x40)ï¼è¡¨ç¤ºæ¤æ¥æå·²è¢«æå为è¥å¹²å¸§ |
| | | //FCB = 1(0x08)ï¼è¡¨ç¤ºåªå䏿¬¡ |
| | | b = (byte)(b |0x08) ; |
| | | //DIR = 0 ä¸è¡ï¼ååè½ç éç¨0 |
| | | return b ; |
| | | } |
| | | |
| | | /** |
| | | * å¾å°å
³å¼éç±»ååç§° |
| | | * @param type åè |
| | | * @return åç§° |
| | | */ |
| | | public static String openCloseValveType(byte type){ |
| | | return switch (type) { |
| | | case 1 -> "å·å¡å¼é"; |
| | | case 2 -> "å·å¡å
³é"; |
| | | case 3 -> "ä¸å¿ç«å¼é"; |
| | | case 4 -> "ä¸å¿ç«å
³é"; |
| | | case 5 -> "æ¬ è´¹å
³é"; |
| | | case 6 -> "æµé计æ
éå
³é"; |
| | | case 7 -> "ç´§æ¥å
³é"; |
| | | case 8 -> "ç¨æ·è¿ç¨å¼é"; |
| | | case 9 -> "ç¨æ·è¿ç¨å
³é"; |
| | | case 16 -> "ç®¡éæ æ°´èªå¨å
³é"; |
| | | default -> "æªç¥"; |
| | | }; |
| | | } |
| | | |
| | | /* |
| | | * åæçæ¬å· |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @return çæ¬å· |
| | | * @throws Exception å¼å¸¸ |
| | | public String parseVersion(byte[] bs)throws Exception{ |
| | | short ver = ByteUtilUnsigned.byte2Byte(bs, ProtocolConstantV206V202404.versionIndex) ; |
| | | char[] cs = ("" + ver).toCharArray() ; |
| | | StringBuilder vs = new StringBuilder() ; |
| | | for(byte i = 0 ; i < cs.length; i++){ |
| | | if(i == 0){ |
| | | vs.append(cs[i]) ; |
| | | }else{ |
| | | vs.append(".").append(cs[i]) ; |
| | | } |
| | | } |
| | | return vs.toString() ; |
| | | } |
| | | */ |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class DataAlarmVo { |
| | | public Byte batteryVolt ;// èçµæ± çµå |
| | | public Byte loss ;//æ¼æ |
| | | public Byte meter ;//仪表 |
| | | public Byte valve ;//éé¨ |
| | | |
| | | public String toString(){ |
| | | StringBuilder str = new StringBuilder() ; |
| | | str.append(" æ¥è¦:\n"); |
| | | str.append(" èçµæ± çµåï¼"); |
| | | str.append(batteryVolt==null?"":(batteryVolt==1?"æ¥è¦":"æ£å¸¸")); |
| | | str.append("\n"); |
| | | str.append(" æ¼æï¼"); |
| | | str.append(loss==null?"":(loss==1?"æ¥è¦":"æ£å¸¸")); |
| | | str.append("\n"); |
| | | str.append(" 仪表ï¼"); |
| | | str.append(meter==null?"":(meter==1?"æ¥è¦":"æ£å¸¸")); |
| | | str.append("\n"); |
| | | str.append(" éé¨ï¼"); |
| | | str.append(valve==null?"":(valve==1?"æ¥è¦":"æ£å¸¸")); |
| | | return str.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class DataStateVo { |
| | | public Byte icCard;// ICå¡åè½ |
| | | public Byte working;//å·¥ä½ç¶æ |
| | | public Byte valve ;//éé¨ |
| | | |
| | | public String toString(){ |
| | | StringBuilder str = new StringBuilder() ; |
| | | str.append(" ç¶æ:\n"); |
| | | str.append(" IC å¡åè½ï¼"); |
| | | str.append(icCard ==null?"":(icCard ==1?"ææ":"æ æ")); |
| | | str.append("\n"); |
| | | str.append(" å·¥ä½ç¶æï¼"); |
| | | str.append(working ==null?"":(working ==1?"å¯å¨":"忢")); |
| | | str.append("\n"); |
| | | str.append(" éé¨ç¶æï¼"); |
| | | str.append(valve==null?"":(valve==1?"æå¼":"å
³é")); |
| | | return str.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class DataV202404 implements java.io.Serializable{ |
| | | |
| | | private static final long serialVersionUID = 202404280919001L; |
| | | |
| | | public String rtuAddr ;//RtuAddr |
| | | |
| | | public Object subData ; |
| | | |
| | | public String dt ;//éä¿¡ä¸é´ä»¶äº§çæ¶æ¥æ¶é´(yyyy-MM-dd hh:mm:ss) |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ§å¶å¨å°å : " + (rtuAddr==null?"":rtuAddr) + "\n") ; |
| | | sb.append(" ç»ç«¯æ°æ®:\n") ; |
| | | if(subData != null){ |
| | | sb.append(subData.toString()) ; |
| | | } |
| | | return sb.toString() ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.util.DateTime; |
| | | |
| | | import java.net.URI; |
| | | import java.net.URL; |
| | | |
| | | @AnnotationDriver(name= ProtocolConstantV206V202404.protocolName) |
| | | public class DriverV202404 extends Driver { |
| | | |
| | | private static String scanRootPackage = "com.dy.common.mw.protocol.p206V202404." ; |
| | | |
| | | //å¨Driver䏿¯åä¾ï¼éDriverçåä¾å¯¹è±¡å¨å线ç¨ä¸è¿è¡ |
| | | private ParseParamsForUpV202404 upCpParams ; |
| | | private ParseParamsForDownV202404 downCpParams ; |
| | | |
| | | private Boolean reportOrResponse_trueOrFalse = null ; |
| | | private String rtuAddrInData = null ; |
| | | |
| | | public DriverV202404(){ |
| | | upCpParams = new ParseParamsForUpV202404() ; |
| | | downCpParams = new ParseParamsForDownV202404() ; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ«æè¯å«åè½ç 注解类 |
| | | */ |
| | | @Override |
| | | public void scanAnnotationCode() throws Exception{ |
| | | if(!scanRootPackage.endsWith(".")){ |
| | | scanRootPackage += "." ; |
| | | } |
| | | URL url = this.getClass().getResource("/" + scanRootPackage.replace('.', '/')); |
| | | URI uri = new URI(url.toString()); |
| | | super.doScanAnnotationCode(this, ProtocolConstantV206V202404.protocolName, uri, scanRootPackage) ; |
| | | } |
| | | |
| | | /** |
| | | * è§£æä¸è¡æ°æ® |
| | | * @param isLowPower æ¯å¦å¨ä½åèç¯å¢ä¸è¿è¡ |
| | | * @param rtuAddr |
| | | * @param upBuffer |
| | | * @param callback |
| | | * @param upHex |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MidResult[] parseData(Boolean isLowPower, String rtuAddr, byte[] upBuffer, String upHex, DriverParserDataCallback callback, Object... params) { |
| | | reportOrResponse_trueOrFalse = null ; |
| | | boolean isFail = false ; |
| | | String upCode = null ; |
| | | try{ |
| | | CommonV202404 cp = new CommonV202404() ; |
| | | cp.checkHead(upBuffer) ; |
| | | cp.checkTail(upBuffer) ; |
| | | String crcStr = cp.checkCrc_str(upBuffer) ; |
| | | if(crcStr != null){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严éé误ï¼ä¸è¡æ°æ®CRCæ£æ¥å¤±è´¥ï¼" + crcStr, null))} ; |
| | | } |
| | | rtuAddr = cp.parseRtuAddr(upBuffer) ; |
| | | upCode = cp.parseCode(upBuffer) ; |
| | | if(upCode == null){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严ééè¯¯ï¼æªè½ä»ä¸è¡æ°æ®ä¸è§£æåºåè½ç ï¼", null))} ; |
| | | } |
| | | //Integer dataLen = cp.parseFrameLen(upBuffer) ; |
| | | Data upData = new Data() ; |
| | | upData.setRtuAddr(rtuAddr) ; |
| | | upData.setProtocol(ProtocolConstantV206V202404.protocolName); |
| | | upData.setCode(upCode) ; |
| | | upData.setHex(upHex) ; |
| | | |
| | | |
| | | DataV202404 dV1_0_1 = new DataV202404() ; |
| | | //dV1_0_1.version = cp.parseVersion(upBuffer) ; |
| | | dV1_0_1.rtuAddr = rtuAddr ; |
| | | dV1_0_1.dt = DateTime.yyyy_MM_dd_HH_mm_ss() ; |
| | | |
| | | upData.setSubData(dV1_0_1) ; |
| | | |
| | | this.upCpParams.clear(); |
| | | this.upCpParams.setValue(ProtocolConstantV206V202404.protocolName, |
| | | rtuAddr, |
| | | upCode, |
| | | upHex, |
| | | upBuffer, |
| | | upData); |
| | | CodeParse codeParse = this.getUpCodeParser(upCode) ; |
| | | if(codeParse == null){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严ééè¯¯ï¼æªè½å¾å°ä¸è¡æ°æ®åè½ç " + upCode + "å¤çç±»!", null))} ; |
| | | }else{ |
| | | return codeParse.parse(isLowPower, this.upCpParams, new CodeParseCallback(){ |
| | | @Override |
| | | public void callback(Boolean flag) { |
| | | reportOrResponse_trueOrFalse = flag ; |
| | | rtuAddrInData = dV1_0_1.getRtuAddr() ; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | isFail = true ; |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严éé误ï¼åæRtuæ°æ®åºéï¼æ°æ®ä¸ºï¼" + upHex + (e.getMessage() == null?"":("ï¼åºéä¿¡æ¯ï¼" + e.getMessage())), e))} ; |
| | | } finally{ |
| | | callback.callback(rtuAddr, upCode, upHex, reportOrResponse_trueOrFalse, isFail, rtuAddrInData); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æé ä¸è¡æ°æ®ï¼å½ä»¤ï¼ |
| | | * @param isLowPower æ¯å¦å¨ä½åèç¯å¢ä¸è¿è¡ |
| | | * @param command å½ä»¤ |
| | | * @return |
| | | */ |
| | | @Override |
| | | public MidResult[] createCommand(Boolean isLowPower, Command command, Object... params) { |
| | | String RtuResultSendWebUrl = command.getRtuResultSendWebUrl() ; |
| | | if(RtuResultSendWebUrl == null || RtuResultSendWebUrl.trim().equals("")){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, null, "严éé误ï¼å½ä»¤ä¸rtuè¿åå½ä»¤ç»æååç®çå°web URL为空ï¼ä¸è½æå»ºä»»ä½å½ä»¤ï¼", null))} ; |
| | | } |
| | | String rtuAddr = command.getRtuAddr() ; |
| | | if(rtuAddr == null || rtuAddr.trim().equals("")){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, null, "严éé误ï¼å½ä»¤ä¸Rtuå°å为空ï¼ä¸è½æå»ºä»»ä½å½ä»¤ï¼", null))} ; |
| | | } |
| | | try { |
| | | String commandCode = command.getCode() ; |
| | | |
| | | this.downCpParams.clear(); |
| | | this.downCpParams.setValue( |
| | | RtuResultSendWebUrl, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | rtuAddr, |
| | | command.getId(), |
| | | commandCode, |
| | | command.getParam(), |
| | | command.getAttachment()); |
| | | |
| | | if(commandCode == null){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严éé误ï¼å½ä»¤ä¸åè½ç 为空ï¼ä¸è½æå»ºä»»ä½å½ä»¤ï¼", null))} ; |
| | | }else{ |
| | | CodeParse codeParse = this.getDownCodeParser(commandCode) ; |
| | | if(codeParse == null){ |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严ééè¯¯ï¼æªè½å¾å°ä¸è¡æ°æ®åè½ç " + commandCode + "å¤çç±»!", null))} ; |
| | | }else{ |
| | | return codeParse.parse(isLowPower, this.downCpParams, null); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | return new MidResult[]{(new MidResultError(ProtocolConstantV206V202404.protocolName, rtuAddr, "严ééè¯¯ï¼æé ä¸è¡æ°æ®åºéï¼å½ä»¤ä¸ºï¼" + command.toString(), e))} ; |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import com.dy.common.mw.protocol.AnnotationOnLine; |
| | | import com.dy.common.mw.protocol.OnLine; |
| | | |
| | | @AnnotationOnLine( |
| | | protocolName = ProtocolConstantV206V202404.protocolName, |
| | | priority = ProtocolConstantV206V202404.priority) |
| | | @SuppressWarnings("unused") |
| | | public class OnLineV202404 implements OnLine{ |
| | | |
| | | /** |
| | | * 对ä¸çº¿æ°æ®è¿è¡åæ |
| | | * @param upBuf ä¸è¡æ°æ® |
| | | * @return |
| | | */ |
| | | @Override |
| | | public OnLineResult parse(byte[] upBuf)throws Exception { |
| | | OnLineResult olr = new OnLineResult() ; |
| | | CommonV202404 cp = new CommonV202404() ; |
| | | Boolean flag = cp.isThisProtocolHead(upBuf) ; |
| | | if(flag == null){ |
| | | //åºé |
| | | olr.result = OnLine.OnLineAction_fail ; |
| | | olr.rtuAddr = null ; |
| | | }else if(!flag.booleanValue()){ |
| | | //䏿¯æ¬åè®®æ°æ® |
| | | olr.result = OnLine.OnLineAction_success_noMe ; |
| | | olr.rtuAddr = null ; |
| | | }else{ |
| | | //æ¯æ¬åè®®æ°æ® |
| | | olr.result = OnLine.OnLineAction_success ; |
| | | olr.rtuAddr = cp.parseRtuAddr(upBuf) ; |
| | | olr.protocolName = ProtocolConstantV206V202404.protocolName ; |
| | | } |
| | | return olr; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import com.dy.common.mw.protocol.CodeParseParams; |
| | | |
| | | public class ParseParamsForDownV202404 implements CodeParseParams{ |
| | | |
| | | public String rtuResultSendWebUrl ;//rtuè¿åå½ä»¤ç»æ ååç®çå°web URL |
| | | public String protocolName ; |
| | | public String rtuAddr ;//æ§å¶å¨å°å |
| | | public String commandId ; |
| | | public String commandCode ; |
| | | public Object param ; |
| | | public Object attachment ; |
| | | |
| | | public ParseParamsForDownV202404(){} |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.commandId = null ; |
| | | this.commandCode = null ; |
| | | this.param = null ; |
| | | this.attachment = null ; |
| | | } |
| | | |
| | | public void setValue( |
| | | String rtuResultSendWebUrl, |
| | | String protocolName, |
| | | String rtuAddr, |
| | | String commandId, |
| | | String commandCode, |
| | | Object param, |
| | | Object attachment ){ |
| | | this.rtuResultSendWebUrl = rtuResultSendWebUrl ; |
| | | this.protocolName = protocolName ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.commandId = commandId ; |
| | | this.commandCode = commandCode ; |
| | | this.param = param ; |
| | | this.attachment = attachment ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import com.dy.common.mw.protocol.CodeParseParams; |
| | | import com.dy.common.mw.protocol.Data; |
| | | |
| | | public class ParseParamsForUpV202404 implements CodeParseParams{ |
| | | |
| | | public String protocolName ;//åè®®åç§° |
| | | public String rtuAddr ;//æ§å¶å¨å |
| | | public String upCode ;//ä¸è¡æ¥ææ°æ®ä¸çåè½ç |
| | | public String upHex ;//è¡æ¥ææ°æ®åå
è¿å¶å½¢å¼ |
| | | public byte[] upBuffer ;//è¡æ¥ææ°æ®åèæ°ç» |
| | | public Data data ;//è§£æåçæ°æ® |
| | | |
| | | public ParseParamsForUpV202404(){} |
| | | |
| | | public void clear(){ |
| | | this.protocolName = null ; |
| | | this.rtuAddr = null ; |
| | | this.upCode = null ; |
| | | this.upHex = null ; |
| | | this.upBuffer = null ; |
| | | this.data = null ; |
| | | } |
| | | |
| | | public void setValue(String protocolName, |
| | | String rtuAddr, |
| | | String upCode, |
| | | String upHex, |
| | | byte[] upBuffer, |
| | | Data data){ |
| | | this.protocolName = protocolName ; |
| | | this.rtuAddr = rtuAddr ; |
| | | this.upCode = upCode ; |
| | | this.upHex = upHex ; |
| | | this.upBuffer = upBuffer ; |
| | | this.data = data ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | import com.dy.common.mw.channel.tcp.PrefixedDataAvailableStatus; |
| | | import com.dy.common.mw.protocol.AnnotationPrefixedDataAvailable; |
| | | import com.dy.common.mw.protocol.PrefixedDataAvailable; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | import org.apache.mina.core.buffer.BufferDataException; |
| | | import org.apache.mina.core.buffer.IoBuffer; |
| | | |
| | | |
| | | @AnnotationPrefixedDataAvailable( |
| | | protocolName = ProtocolConstantV206V202404.protocolName, |
| | | priority = ProtocolConstantV206V202404.priority, |
| | | onLineDataMinLength = ProtocolConstantV206V202404.onLineDataMinLength, |
| | | headMinLength = ProtocolConstantV206V202404.headMinLength) |
| | | @SuppressWarnings("unused") |
| | | public class PrefixedDataAvailableV202404 implements PrefixedDataAvailable { |
| | | |
| | | private static final Logger log = LogManager.getLogger(PrefixedDataAvailableV202404.class) ; |
| | | |
| | | private static final String protocolName = ProtocolConstantV206V202404.protocolName ; |
| | | |
| | | |
| | | /** |
| | | * åæä¸çº¿æ°æ®(ç½ç»è¿æ¥å第ä¸å
æ°æ®)æ¯å¦å¯è·å¾ |
| | | * @param in IoBuffer |
| | | * @param remain ä¸å®æ¶å¤§äº0çæ°æ® |
| | | * @param minDataLength æå°æ°æ®é¿åº¦ |
| | | * @param maxDataLength æå¤§æ°æ®é¿åº¦ï¼è¾¾å°æè¶
è¿æ¤é¿åº¦ï¼è®¤ä¸ºæ¯å徿°æ®ãä¾å¦ï¼æ°æ®å¤´é¨æ¯æ£ç¡®çï¼ä½åæ³æ°æ®ç»å°¾æ»ä¸åºç°ï¼è®¤ä¸ºæ¤æ°æ®å徿°æ® |
| | | * @return 䏿¯æ¬åè®®æ°æ®æ¶è¿å空 |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public PrefixedDataAvailableStatus forOnLine(IoBuffer in, |
| | | int remain, |
| | | int minDataLength, //对åºProtocolConstantV2_0.onLineDataMinLength |
| | | int maxDataLength //对åºProtocolConstant.errorMaxLength |
| | | ) throws Exception { |
| | | |
| | | int oldPosition = in.position() ; |
| | | byte[] preByte = new byte[remain]; |
| | | in.get(preByte) ; |
| | | //in.position(0) ;//éè¯¯ç¨æ³ï¼å¦æåçç²å
æ°æ®ï¼å°ä¼æ»å¾ªç¯ |
| | | in.position(oldPosition) ; |
| | | |
| | | return this.doForData(preByte, minDataLength, maxDataLength) ; |
| | | } |
| | | |
| | | /** |
| | | * åæä¸çº¿å(ç½ç»è¿æ¥åé第ä¸å
æ°æ®)æ¯å¦å¯è·å¾ |
| | | * @param in IoBuffer |
| | | * @param remain å©ä½ |
| | | * @param minDataLength æå°æ°æ®é¿åº¦ |
| | | * @param maxDataLength æå¤§æ°æ®é¿åº¦ |
| | | * @return PrefixedDataAvailableStatus |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | @Override |
| | | public PrefixedDataAvailableStatus forUpData(IoBuffer in, |
| | | int remain, |
| | | int minDataLength, |
| | | int maxDataLength) throws Exception { |
| | | int oldPosition = in.position() ; |
| | | byte[] preByte = new byte[remain]; |
| | | in.get(preByte) ; |
| | | //in.position(0) ;//éè¯¯ç¨æ³ï¼å¦æåçç²å
æ°æ®ï¼å°ä¼æ»å¾ªç¯ |
| | | in.position(oldPosition) ; |
| | | |
| | | return this.doForData(preByte, minDataLength, maxDataLength) ; |
| | | |
| | | } |
| | | /** |
| | | * è¿è¡å¤æ |
| | | * @param preByte byte[] |
| | | * @param minDataLength æå°æ°æ®é¿åº¦ |
| | | * @param maxDataLength æå¤§æ°æ®é¿åº¦ |
| | | * @return PrefixedDataAvailableStatus |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | private PrefixedDataAvailableStatus doForData(byte[] preByte, int minDataLength, int maxDataLength) throws Exception{ |
| | | int remain = preByte.length ; |
| | | |
| | | if (remain < minDataLength) { |
| | | log.warn("åºäºåè®®ï¼" + protocolName + "ï¼å¤ææ°æ®å¤´é¨åçæå
ç°è±¡ã") ; |
| | | return new PrefixedDataAvailableStatus().breaked() ; |
| | | } |
| | | |
| | | if(remain >= maxDataLength){ |
| | | //è¶
åºäºæå¤§é¿åº¦éå¶,ä¾å¦ï¼æ°æ®å¤´é¨æ¯æ£ç¡®çï¼ä½åæ³æ°æ®ç»å°¾æ»ä¸åºç°ï¼è®¤ä¸ºæ¤æ°æ®å徿°æ® |
| | | return new PrefixedDataAvailableStatus().rubbish(remain) ; |
| | | } |
| | | |
| | | |
| | | CommonV202404 parseCommon = new CommonV202404(); |
| | | boolean isThisProtocolData = parseCommon.isThisProtocolHead(preByte) ; |
| | | |
| | | if(!isThisProtocolData){ |
| | | //䏿¯æ¬åè®®æ°æ® |
| | | return null ; |
| | | } |
| | | |
| | | Integer frameLen = parseCommon.parseFrameLen(preByte) ; |
| | | |
| | | if(frameLen == null){ |
| | | String headHex = ByteUtil.bytes2Hex(preByte, true) ; |
| | | throw new BufferDataException("æ¶å°æ°æ®ä¹å¸§åé¨ï¼" + headHex + "ï¼ä½ä¸¥éé误ï¼å¨è¿è¡æå
ä¸ç²å
æ£æ¥æ¶ï¼æªè½å¾å°æ°æ®å¸§çé¿åº¦ã"); |
| | | } |
| | | |
| | | if (frameLen <= 0 || frameLen > maxDataLength) { |
| | | String headHex = ByteUtil.bytes2Hex(preByte, true) ; |
| | | throw new BufferDataException("æ¶å°æ°æ®ä¹å¸§åé¨ï¼" + headHex + "ï¼ä½ä¸¥éé误ï¼å¨è¿è¡æå
ä¸ç²å
æ£æ¥æ¶ï¼æ°æ®å¸§çé¿åº¦(" + frameLen + ")è¶
åºåæ³èå´ã"); |
| | | } |
| | | |
| | | if(remain == frameLen){ |
| | | //䏿ä¸ç² |
| | | return new PrefixedDataAvailableStatus().completed(frameLen) ; |
| | | }else if(remain > frameLen){ |
| | | String headHex = ByteUtil.bytes2Hex(preByte, true) ; |
| | | log.warn("æ¶å°æ°æ®ä¹å¸§åé¨ï¼" + headHex + "ï¼ä½åçç²å
ç°è±¡ã") ; |
| | | return new PrefixedDataAvailableStatus().adjoined(frameLen) ; |
| | | }else{ |
| | | // remain < dataLen |
| | | String headHex = ByteUtil.bytes2Hex(preByte, true) ; |
| | | log.warn("æ¶å°æ°æ®ä¹å¸§åé¨ï¼" + headHex + "ï¼ä½åçæå
ç°è±¡ã") ; |
| | | return new PrefixedDataAvailableStatus().breaked() ; |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404; |
| | | |
| | | public class ProtocolConstantV206V202404 { |
| | | |
| | | public static final String version = "202404" ; |
| | | |
| | | /** |
| | | * 注解ç¸å
³ |
| | | */ |
| | | public static final String protocolName = "p206V202404" ; |
| | | public static final int priority = 1 ;//ä¼å
级 |
| | | /** |
| | | * RTUä¸çº¿æ°æ®ï¼ä¸çº¿å第ä¸å
æ°æ®ï¼æå°é¿åº¦ï¼è®¾ç½®è¯¥å±æ§ä»¥å¤è¿è¡å®æ´æ§æ£æ¥ï¼ |
| | | * 峿å
æ£æ¥ï¼ä½¿å°½å¯è½æ¶å
¨ä¸çº¿æ°æ®ï¼åå¼èå´1-100ï¼ |
| | | */ |
| | | public static final int onLineDataMinLength = 13 ;//éç¨å¿è·³ä¸è¡æ°æ®é¿åº¦ |
| | | |
| | | /** |
| | | * RTU䏿¥æ°æ®ç头鍿å°é¿åº¦ï¼ä¸æ¥æ°æ®ä¸ï¼åè¿ä¸ªæå°é¿åº¦çé¨åæ°æ®ä¸ï¼ |
| | | * è¦ä¸å®å
嫿°æ®å¸§é¿åº¦ï¼ä»¥å¤ååºæ°æ®å¸§é¿åº¦æ¥ï¼è¿è¡å®æ´æ§æ£æ¥ï¼ |
| | | * 峿å
ä¸ç²å
æ£æ¥(åå¼èå´0-100ï¼å
¶ä¸åå¼ä¸º0æ¶ï¼è¡¨ç¤ºheadMinLengthæ°æ®æ ä½ç¨ï¼ç±åè®®å®ç°æ¥æ§å¶) |
| | | */ |
| | | public static final int headMinLength = 3 ; |
| | | |
| | | //å¸§èµ·å§ |
| | | public static final byte P_Head_Byte = (byte)0x68 ; |
| | | public static final byte P_Tail_Byte = (byte)0x16 ; |
| | | |
| | | //00Hæ¶é¥æµç»ç«¯å¨å
¼å®¹å·¥ä½ç¶æï¼01Hæ¶é¥æµç»ç«¯å¨èªæ¥å·¥ä½ç¶æï¼02Hæ¶é¥æµç»ç«¯å¨æ¥è¯¢/åºçå·¥ä½ç¶æï¼03Hæ¶é¥æµç»ç«¯å¨è°è¯/ç»´ä¿®ç¶æã |
| | | public static final byte P_Default_mode = (byte)0x00 ;//é»è®¤å·¥ä½æ¨¡å¼ |
| | | |
| | | public static final String P_Head_Hex = "68" ; |
| | | public static final String P_Tail_Hex = "16" ; |
| | | |
| | | public static final byte lenHead2ctrl = 3 ; //ä»å¤´å°æ§å¶åï¼ä¸å
æ¬ï¼åèæ°ç»é¿åº¦ |
| | | public static final byte lenHead2Code = 13 ; //ä»å¤´å°åè½ç ï¼å
æ¬ï¼åèæ°ç»é¿åº¦ |
| | | public static final byte lenTail = 2 ; //帧尾é¨åèæ°ç»é¿åº¦ |
| | | /** |
| | | * æå¨åèæ°ç»çä½ç½®ï¼ä¸æ ï¼ |
| | | */ |
| | | public static final int dataLenIndex = 1 ;//帧é¿åº¦æå¨ åèæ°ç»ä¸æ |
| | | public static final int ctrlIndex = 3 ;//æ§å¶åæå¨åèæ°ç»ä¸æ |
| | | public static final int rtuAddr1Index_start = 4 ;//æ§å¶å¨å°å åèæ°ç»å¼å§ä¸æ |
| | | public static final int rtuAddr1Index_end = 9 ;//æ§å¶å¨å°å åèæ°ç»å¼å§ä¸æ |
| | | public static final int rtuAddr2Index_start = 10 ;//æ§å¶å¨å°å åèæ°ç»æªæ¢ä¸æ |
| | | public static final int rtuAddr2Index_end = 11 ;//æ§å¶å¨å°å åèæ°ç»æªæ¢ä¸æ |
| | | public static final int codeIndex = 12 ;//åè½ç åèæ°ç»ä¸æ |
| | | public static final int dataIndex = 13 ;//å
·ä½æ°æ®åèæ°ç»ä¸æ |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd10Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public String rtuNewAddr ;//æ§å¶å¨æ°å°å |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd15Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public String icCardAddr ;//ICå¡å°å(8使°åæåæ¯) |
| | | public String icCardNo ;//ç¨æ·å¡åºåå·ï¼16使°åï¼ï¼6åèBCDï¼2åèHEXï¼ |
| | | public Double chargeMoney ;//åä½:å
2ä½å°æ°ç¹(æå¤§å¼ 99999999.99) |
| | | public Double chargeWater ;//åä½:m3 2ä½å°æ°ç¹(æå¤§å¼ 99999999.99) |
| | | public String flowNo ;//æµæ°´å·ï¼12使°åï¼ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd16Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public Integer waterAlarm ;//å©ä½æ°´éæ¥è¦å¼,åä½:m3ãæ´æ°ï¼åå¼èå´0~65535 |
| | | public Integer moneyAlarm ;//å©ä½é颿¥è¦å¼,åä½:å
ãæ´æ°ï¼åå¼èå´0~65535 |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd50Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd55Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public Integer page ;//å页ï¼åå¼èå´1ã2ã3ã4ã5ã6ã7ã8ã9ï¼ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd56Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd5BVo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd5CVo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public Integer page ;//å页ï¼åå¼èå´1ã2ã3ã4ã5ã6ã7ã8ã9ï¼ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd65Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public Integer page ;//å页ï¼åå¼èå´ï¼1ã2ã3ã4ã5ã6ã7ã8ã9ï¼ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd97Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.downVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ComCd98Vo { |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd02Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_02 |
| | | }) |
| | | public class Cd_02_Down implements CodeParse { |
| | | |
| | | //private static Logger log = LogManager.getLogger(Cd_02_Down.class); |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = false ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = true ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | DataCd02Vo cdData = (DataCd02Vo)para.param ; |
| | | byte[] bs = new byte[3] ; |
| | | bs[0] = (byte)(Integer.parseInt(cdData.controllerType, 16)); |
| | | bs[1] = cdData.projectNo.byteValue() ; |
| | | bs[2] = (byte)(Integer.parseInt(cdData.getStatus(), 16)); |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | public static void main(String[] args) throws Exception{ |
| | | ParseParamsForDownV202404 p = new ParseParamsForDownV202404() ; |
| | | p.commandCode = "02" ; |
| | | p.rtuAddr = "9672950001"; |
| | | |
| | | Cd_02_Down obj = new Cd_02_Down() ; |
| | | byte[] bs = obj.doParse(p) ; |
| | | |
| | | String hex1 = ByteUtil.bytes2Hex(bs,true) ; |
| | | String hex2 = ByteUtil.bytes2Hex(bs,false) ; |
| | | |
| | | System.out.println(hex1); |
| | | System.out.println(hex2); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd02Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_02 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_02_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_02_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ; |
| | | |
| | | String confirmComCode = para.upCode ; |
| | | ParseParamsForDownV202404 downCpParams = new ParseParamsForDownV202404() ; |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | | para.data.subData==null?null:(((DataV202404)para.data.subData).subData), |
| | | null); |
| | | //æé åºç |
| | | byte[] data = new Cd_02_Down().doParse(downCpParams) ; |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//åè®®åç§° |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | confirmCommand.commandId = Command.defaultId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | confirmCommand.downCode = confirmComCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | confirmCommand.downBuffer = data ;//ä¸è¡å½ä»¤æ°æ® |
| | | confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | confirmCommand.hasResponse = false ;//æ¯å¦æåºç |
| | | confirmCommand.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå2次)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | confirmCommand.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼å |
| | | |
| | | confirmCommand.isSendFirst = true ;//确认å½ä»¤ï¼ä¼å
åé |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd02Vo cdData = new DataCd02Vo() ; |
| | | dV1.subData = cdData ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V202404.dataIndex, 1) ; |
| | | cdData.projectNo = 0 + bs[ProtocolConstantV206V202404.dataIndex + 1]; |
| | | cdData.status = ByteUtil.bytes2Hex(bs, false, ProtocolConstantV206V202404.dataIndex + 2, 1) ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd10Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_10 |
| | | }) |
| | | public class Cd_10_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd10Vo cvo = JSON.parseObject(json, ComCd10Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd10Vo为null") ; |
| | | } |
| | | byte[] bs = new byte[17] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | index ++ ; |
| | | GlCreate.createRtuAddr(cvo.rtuNewAddr, bs, index); |
| | | |
| | | index += 8 ; |
| | | GlCreate.createPw(bs, index); |
| | | |
| | | index ++ ; |
| | | GlCreate.createS2D(bs, index) ; |
| | | |
| | | index += 4 ; |
| | | bs[index] = 0 ; //æ¶å»¶ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd10Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_10 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_10_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_10_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd10Vo cdData = new DataCd10Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | cdData.rtuNewAddr = new CommonV202404().parseRtuAddr(bs, index) ; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd10Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd15Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.NumUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_15 |
| | | }) |
| | | public class Cd_15_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd15Vo cvo = JSON.parseObject(json, ComCd15Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd15Vo为null") ; |
| | | } |
| | | if(cvo.icCardAddr.length() != 8){ |
| | | throw new Exception("ICå¡å°åå¿
é¡»æ¯8使°åæåæ¯") ; |
| | | } |
| | | if(!NumUtil.isPlusIntNumber(cvo.flowNo)){ |
| | | throw new Exception("æµæ°´å·å¿
é¡»æ¯12使°å") ; |
| | | } |
| | | if(cvo.flowNo.length() != 12){ |
| | | throw new Exception("æµæ°´å·å¿
é¡»æ¯12使°å") ; |
| | | } |
| | | byte[] bs = new byte[17] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | index ++ ; |
| | | GlCreate.createIcCardAddr(cvo.icCardAddr, bs, index); |
| | | |
| | | index += 4 ; ; |
| | | GlCreate.createIcCardNo(cvo.icCardNo, bs, index); |
| | | |
| | | index += 8 ; |
| | | if(cvo.chargeMoney != null){ |
| | | String chargeMoney = "" + (Double.valueOf(cvo.chargeMoney * 100)).longValue() ; |
| | | byte[] bTemp = ByteUtil.string2BCD_LE(chargeMoney) ; |
| | | int bTempLen = bTemp.length ; |
| | | int count = 0 ; |
| | | for(int i = 0 ; i < bTempLen; i++){ |
| | | bs[index++] = bTemp[i] ; |
| | | count ++ ; |
| | | if(count >= 5){ |
| | | break ; |
| | | } |
| | | } |
| | | for(; count < 5; count++){ |
| | | bs[index++] = 0 ; |
| | | } |
| | | }else{ |
| | | for(int i = 0 ; i < 5; i++){ |
| | | bs[index++] = 0 ; |
| | | } |
| | | } |
| | | if(cvo.chargeMoney != null){ |
| | | String chargeMoney = "" + (Double.valueOf(cvo.chargeWater * 100)).longValue() ; |
| | | byte[] bTemp = ByteUtil.string2BCD_LE(chargeMoney) ; |
| | | int bTempLen = bTemp.length ; |
| | | int count = 0 ; |
| | | for(int i = 0 ; i < bTempLen; i++){ |
| | | bs[index++] = bTemp[i] ; |
| | | count ++ ; |
| | | if(count >= 5){ |
| | | break ; |
| | | } |
| | | } |
| | | for(; count < 5; count++){ |
| | | bs[index++] = 0 ; |
| | | } |
| | | }else{ |
| | | for(int i = 0 ; i < 5; i++){ |
| | | bs[index++] = 0 ; |
| | | } |
| | | } |
| | | |
| | | ByteUtil.string2BCD_BE(bs, cvo.flowNo, index) ; |
| | | |
| | | index += 6 ; |
| | | GlCreate.createPw(bs, index); |
| | | |
| | | index ++ ; |
| | | GlCreate.createS2D(bs, index) ; |
| | | |
| | | index += 4 ; |
| | | bs[index] = 0 ; //æ¶å»¶ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd15Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_15 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_15_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_15_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主å¨ä¸æ¥ |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd15Vo cdData = new DataCd15Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | |
| | | index++ ; |
| | | byte result = bs[index]; |
| | | if(result == 1){ |
| | | cdData.success = true ; |
| | | }else{ |
| | | cdData.success = false ; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd16Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import com.dy.common.util.NumUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_16 |
| | | }) |
| | | public class Cd_16_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd16Vo cvo = JSON.parseObject(json, ComCd16Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd16Vo为null") ; |
| | | } |
| | | if(cvo.moneyAlarm < 0 || cvo.moneyAlarm > 65535){ |
| | | throw new Exception("å©ä½é颿¥è¦å¼å¿
é¡»æ¯0~65535èå´å
çæ´æ°") ; |
| | | } |
| | | if(cvo.waterAlarm < 0 || cvo.waterAlarm > 65535){ |
| | | throw new Exception("å©ä½æ°´éæ¥è¦å¼å¿
é¡»æ¯0~65535èå´å
çæ´æ°") ; |
| | | } |
| | | |
| | | |
| | | byte[] bs = new byte[13] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | index ++ ; |
| | | ByteUtilUnsigned.short2Bytes_BE(bs, cvo.waterAlarm, index); |
| | | |
| | | index ++ ; |
| | | ByteUtilUnsigned.short2Bytes_BE(bs, cvo.moneyAlarm, index); |
| | | |
| | | index ++ ; |
| | | GlCreate.createPw(bs, index); |
| | | |
| | | index ++ ; |
| | | GlCreate.createS2D(bs, index) ; |
| | | |
| | | index += 4 ; |
| | | bs[index] = 0 ; //æ¶å»¶ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd10Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd50Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_50 |
| | | }) |
| | | public class Cd_50_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd50Vo cvo = JSON.parseObject(json, ComCd50Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd10Vo为null") ; |
| | | } |
| | | byte[] bs = new byte[2] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_50 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_50_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_50_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主å¨ä¸æ¥ |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd50Vo cdData = new DataCd50Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | cdData.rtuAddr = new CommonV202404().parseRtuAddr(bs, index) ; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd55Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd65Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_55 |
| | | }) |
| | | public class Cd_55_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd55Vo cvo = JSON.parseObject(json, ComCd55Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd55Vo为null") ; |
| | | } |
| | | if(cvo.page < 1 || cvo.page > 8){ |
| | | throw new Exception("ComCd55Voçpageåå¼ä¸æ£ç¡®ï¼æ£ç¡®åå¼èå´æ¯ï¼1~9ï¼") ; |
| | | } |
| | | byte[] bs = new byte[3] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.page.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd55Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_55 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_55_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_55_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | String controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | Integer projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | byte hasRecord = bs[index]; |
| | | if(hasRecord == 1){ |
| | | //æè®°å½ |
| | | List<DataCd55Vo> list = new ArrayList<>() ; |
| | | DataCd55Vo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; |
| | | while(vo != null){ |
| | | index += 39 ; |
| | | list.add(vo) ; |
| | | vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; |
| | | } |
| | | dV1.subData = list ; |
| | | }else{ |
| | | //æ è®°å½ |
| | | } |
| | | } |
| | | |
| | | private DataCd55Vo doParseData(byte[] bs, int index, int bsLen, String controllerType,Integer projectNo) throws Exception{ |
| | | //æ¯æ¡æ°æ®å 39åè |
| | | if(bsLen - index > 35){ |
| | | DataCd55Vo cdData = new DataCd55Vo() ; |
| | | |
| | | cdData.controllerType = controllerType ; |
| | | cdData.projectNo = projectNo ; |
| | | |
| | | cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ; |
| | | |
| | | index += 4 ; |
| | | cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ; |
| | | |
| | | index += 8 ; |
| | | int chargeMoney = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.chargeMoney = chargeMoney/100.0D; |
| | | |
| | | index += 5 ; |
| | | int chargeWater = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.chargeWater = chargeWater/100.0D; |
| | | |
| | | index += 5 ; |
| | | cdData.flowNo = ByteUtil.BCD2String_BE(bs, index, index + 5) ; |
| | | |
| | | index += 6 ; |
| | | byte flag = bs[index] ; |
| | | if(flag == 1){ |
| | | cdData.success = true ; |
| | | }else{ |
| | | cdData.success = false ; |
| | | } |
| | | |
| | | index += 1 ; |
| | | String ss = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String mm = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String HH = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String dd = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String MM = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String yy = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | cdData.dt = "20" + yy + "-" + MM + "-" + dd + " " + HH + ":" + mm + ":" + ss ; |
| | | |
| | | return cdData ; |
| | | }else{ |
| | | return null ; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd55Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd56Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_56 |
| | | }) |
| | | public class Cd_56_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd56Vo cvo = JSON.parseObject(json, ComCd56Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd56Vo为null") ; |
| | | } |
| | | byte[] bs = new byte[2] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd56Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_56 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_56_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_56_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ;//主å¨ä¸æ¥ |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd56Vo cdData = new DataCd56Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | cdData.waterAlarm = ByteUtilUnsigned.bytes2Short_BE(bs, index) ; |
| | | |
| | | index += 2 ; |
| | | cdData.moneyAlarm = ByteUtilUnsigned.bytes2Short_BE(bs, index) ; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd50Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd5BVo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_5B |
| | | }) |
| | | public class Cd_5B_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd5BVo cvo = JSON.parseObject(json, ComCd5BVo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd5BVo为null") ; |
| | | } |
| | | byte[] bs = new byte[2] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5BVo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_5B |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_5B_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_5B_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd5BVo cdData = new DataCd5BVo() ; |
| | | dV1.subData = cdData ; |
| | | |
| | | GlParse.parseCd80And5B(bs, cdData); |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd55Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_5C |
| | | }) |
| | | public class Cd_5C_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd55Vo cvo = JSON.parseObject(json, ComCd55Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd55Vo为null") ; |
| | | } |
| | | if(cvo.page < 1 || cvo.page > 8){ |
| | | throw new Exception("ComCd55Voçpageåå¼ä¸æ£ç¡®ï¼æ£ç¡®åå¼èå´æ¯ï¼1~9ï¼") ; |
| | | } |
| | | byte[] bs = new byte[3] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.page.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5CVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_5C |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_5C_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_5C_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | String controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | Integer projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | byte hasRecord = bs[index]; |
| | | if(hasRecord == 1){ |
| | | //æè®°å½ |
| | | List<DataCd5CVo> list = new ArrayList<>() ; |
| | | DataCd5CVo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; |
| | | while(vo != null){ |
| | | index += 39 ; |
| | | list.add(vo) ; |
| | | vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; |
| | | } |
| | | dV1.subData = list ; |
| | | }else{ |
| | | //æ è®°å½ |
| | | } |
| | | } |
| | | |
| | | private DataCd5CVo doParseData(byte[] bs, int index, int bsLen, String controllerType,Integer projectNo) throws Exception{ |
| | | //æ¯æ¡æ°æ®å 39åè |
| | | if(bsLen - index > 16){ |
| | | DataCd5CVo cdData = new DataCd5CVo() ; |
| | | |
| | | cdData.controllerType = controllerType ; |
| | | cdData.projectNo = projectNo ; |
| | | |
| | | String HH = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String dd = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String MM = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String yy = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | cdData.dt = "20" + yy + "-" + MM + "-" + dd + " " + HH ; |
| | | |
| | | int meterAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.meterAmountDay = meterAmountDay/100.0D; |
| | | |
| | | index += 4 ; |
| | | int farmerAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.farmerAmountDay = farmerAmountDay/100.0D; |
| | | |
| | | index += 4 ; |
| | | int lossAmountDay = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.lossAmountDay = lossAmountDay/100.0D; |
| | | |
| | | return cdData ; |
| | | }else{ |
| | | return null ; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd5BVo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd65Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.DateTime; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_65 |
| | | }) |
| | | public class Cd_65_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd65Vo cvo = JSON.parseObject(json, ComCd65Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd65Vo为null") ; |
| | | } |
| | | if(cvo.page < 1 || cvo.page > 9){ |
| | | throw new Exception("ComCd65Voçpageåå¼ä¸æ£ç¡®ï¼æ£ç¡®åå¼èå´æ¯ï¼1~9ï¼") ; |
| | | } |
| | | byte[] bs = new byte[3] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.page.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd5BVo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd65Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_65 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_65_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_65_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | String controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | Integer projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | byte hasRecord = bs[index]; |
| | | if(hasRecord == 1){ |
| | | //æè®°å½ |
| | | List<DataCd65Vo> list = new ArrayList<>() ; |
| | | DataCd65Vo vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; |
| | | while(vo != null){ |
| | | index += 39 ; |
| | | list.add(vo) ; |
| | | vo = this.doParseData(bs, index, bsLen, controllerType, projectNo) ; |
| | | } |
| | | dV1.subData = list ; |
| | | }else{ |
| | | //æ è®°å½ |
| | | } |
| | | } |
| | | |
| | | private DataCd65Vo doParseData(byte[] bs, int index, int bsLen, String controllerType,Integer projectNo) throws Exception{ |
| | | //æ¯æ¡æ°æ®å 39åè |
| | | if(bsLen - index > 39){ |
| | | DataCd65Vo cdData = new DataCd65Vo() ; |
| | | |
| | | cdData.controllerType = controllerType ; |
| | | cdData.projectNo = projectNo ; |
| | | |
| | | cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ; |
| | | |
| | | index += 4 ; |
| | | cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ; |
| | | |
| | | index += 8 ; |
| | | int moneyRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.moneyRemain = moneyRemain/100.0D; |
| | | |
| | | index += 5 ; |
| | | int waterRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.waterRemain = waterRemain/100.0D; |
| | | |
| | | index += 5 ; |
| | | int thisEle = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.thisEle = thisEle/100.0D; |
| | | |
| | | index += 4 ; |
| | | int thisWater = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.thisWater = thisWater/100.0D; |
| | | |
| | | index += 4 ; |
| | | String mm = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String HH = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String dd = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String MM = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | cdData.rtuStartDt = MM + "-" + dd + " " + HH + ":" + mm ; |
| | | |
| | | index++ ; |
| | | mm = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | HH = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | dd = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | MM = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | cdData.rtuEndDt = MM + "-" + dd + " " + HH + ":" + mm ; |
| | | |
| | | index++ ; |
| | | cdData.useWaterType = bs[index]; |
| | | |
| | | return cdData ; |
| | | }else{ |
| | | return null ; |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd8AVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_80 |
| | | }) |
| | | public class Cd_80_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = false ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = true ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | DataCd80Vo cdData = (DataCd80Vo)para.param ; |
| | | byte[] bs = new byte[2] ; |
| | | bs[0] = (byte)(Integer.parseInt(cdData.getControllerType(), 16)); |
| | | bs[1] = cdData.projectNo.byteValue() ; |
| | | GlCreate.createTp(bs, 3) ; |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd8AVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_80 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_80_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_80_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//主å¨ä¸æ¥ |
| | | |
| | | String confirmComCode = para.upCode ; |
| | | ParseParamsForDownV202404 downCpParams = new ParseParamsForDownV202404() ; |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | | para.data.subData==null?null:(((DataV202404)para.data.subData).subData), |
| | | null); |
| | | //æé åºç |
| | | byte[] data = new Cd_80_Down().doParse(downCpParams) ; |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//åè®®åç§° |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | confirmCommand.commandId = Command.defaultId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | confirmCommand.downCode = confirmComCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | confirmCommand.downBuffer = data ;//ä¸è¡å½ä»¤æ°æ® |
| | | confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | confirmCommand.hasResponse = false ;//æ¯å¦æåºç |
| | | confirmCommand.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå2次)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | confirmCommand.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼å |
| | | |
| | | confirmCommand.isSendFirst = true ;//确认å½ä»¤ï¼ä¼å
åé |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd80Vo cdData = new DataCd80Vo() ; |
| | | dV1.subData = cdData ; |
| | | |
| | | GlParse.parseCd80And5B(bs, cdData); |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_81 |
| | | }) |
| | | public class Cd_81_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = false ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = true ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | DataCd81Vo cdData = (DataCd81Vo)para.param ; |
| | | byte[] bs = new byte[2] ; |
| | | bs[0] = (byte)(Integer.parseInt(cdData.getControllerType(), 16)); |
| | | bs[1] = cdData.projectNo.byteValue() ; |
| | | GlCreate.createTp(bs, 3) ; |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_81 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_81_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_81_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ;//主å¨ä¸æ¥ |
| | | |
| | | String confirmComCode = para.upCode ; |
| | | ParseParamsForDownV202404 downCpParams = new ParseParamsForDownV202404() ; |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | | para.data.subData==null?null:(((DataV202404)para.data.subData).subData), |
| | | null); |
| | | //æé åºç |
| | | byte[] data = new Cd_81_Down().doParse(downCpParams) ; |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//åè®®åç§° |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | confirmCommand.commandId = Command.defaultId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | confirmCommand.downCode = confirmComCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | confirmCommand.downBuffer = data ;//ä¸è¡å½ä»¤æ°æ® |
| | | confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | confirmCommand.hasResponse = false ;//æ¯å¦æåºç |
| | | confirmCommand.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå2次)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | confirmCommand.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼å |
| | | |
| | | confirmCommand.isSendFirst = true ;//确认å½ä»¤ï¼ä¼å
åé |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd81Vo cdData = new DataCd81Vo() ; |
| | | dV1.subData = cdData ; |
| | | |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | GlParse.parseAlarmAndState(bs, index, cdData) ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd8AVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_8A |
| | | }) |
| | | public class Cd_8A_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = false ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = true ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | DataCd8AVo cdData = (DataCd8AVo)para.param ; |
| | | byte[] bs = new byte[8] ; |
| | | bs[0] = (byte)(Integer.parseInt(cdData.getControllerType(), 16)); |
| | | bs[1] = cdData.projectNo.byteValue() ; |
| | | GlCreate.createTp(bs, 3) ; |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd8AVo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_8A |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_8A_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_8A_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = true ; |
| | | |
| | | String confirmComCode = para.upCode ; |
| | | ParseParamsForDownV202404 downCpParams = new ParseParamsForDownV202404() ; |
| | | downCpParams.setValue( |
| | | null, |
| | | ProtocolConstantV206V202404.protocolName, |
| | | para.rtuAddr, |
| | | Command.defaultId, |
| | | confirmComCode, |
| | | para.data.subData==null?null:(((DataV202404)para.data.subData).subData), |
| | | null); |
| | | //æé åºç |
| | | byte[] data = new Cd_8A_Down().doParse(downCpParams) ; |
| | | |
| | | MidResultToRtu confirmCommand = new MidResultToRtu() ; |
| | | confirmCommand.protocolName = para.protocolName ;//åè®®åç§° |
| | | confirmCommand.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | confirmCommand.commandId = Command.defaultId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | confirmCommand.downCode = confirmComCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | confirmCommand.downBuffer = data ;//ä¸è¡å½ä»¤æ°æ® |
| | | confirmCommand.downBufHex = ByteUtil.bytes2Hex(data, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | confirmCommand.hasResponse = false ;//æ¯å¦æåºç |
| | | confirmCommand.maxSendTimes = 1 ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå2次)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | confirmCommand.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼å |
| | | |
| | | confirmCommand.isSendFirst = true ;//确认å½ä»¤ï¼ä¼å
åé |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | confirmCommand.isQuickSend = true ; |
| | | } |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs, confirmCommand} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd8AVo cdData = new DataCd8AVo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | int lng = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.lng = lng/1000000.0D; |
| | | |
| | | index += 5 ; |
| | | int lat = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.lat = lat/1000000.0D; |
| | | |
| | | index += 5 ; |
| | | int softVersion = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.softVersion = softVersion/10.0F; |
| | | |
| | | index += 2 ; |
| | | int hardVersion = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.hardVersion = hardVersion/10.0F; |
| | | |
| | | index += 2 ; |
| | | int protocolVersion = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.protocolVersion = protocolVersion/10.0F; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd65Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd97Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_97 |
| | | }) |
| | | public class Cd_97_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd97Vo cvo = JSON.parseObject(json, ComCd97Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd97Vo为null") ; |
| | | } |
| | | byte[] bs = new byte[2] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlParse; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd50Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd65Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd97Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_97 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_97_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_97_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd97Vo cdData = new DataCd97Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | byte result = bs[index]; |
| | | if(result == 1){ |
| | | cdData.success = true ; |
| | | }else{ |
| | | cdData.success = false ; |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | import com.alibaba.fastjson2.JSON; |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.CodeV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ParseParamsForDownV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd97Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.downVos.ComCd98Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.parse.global.GlCreate; |
| | | import com.dy.common.util.ByteUtil; |
| | | |
| | | @AnnotationCodeDown(ifAny={ |
| | | CodeV202404.cd_98 |
| | | }) |
| | | public class Cd_98_Down implements CodeParse { |
| | | |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback) throws Exception { |
| | | ParseParamsForDownV202404 para = (ParseParamsForDownV202404) params ; |
| | | byte[] bs = this.doParse(para) ; |
| | | |
| | | MidResultToRtu midRs = new MidResultToRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.commandId = para.commandId ;//å½ä»¤IDï¼åèµ·å½ä»¤ç客æ·ç«¯(web端)çæï¼ä»¥å¹é
å½ä»¤ç»æ |
| | | midRs.downCode = para.commandCode ;//ä¸è¡å½ä»¤åè½ç ; |
| | | midRs.downBuffer = bs ;//ä¸è¡å½ä»¤æ°æ® |
| | | midRs.downBufHex = ByteUtil.bytes2Hex(bs, true) ;//ä¸è¡å½ä»¤æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.hasResponse = true ;//æ¯å¦æåºç |
| | | midRs.maxSendTimes = null ;//å½ä»¤æå¤§å鿬¡æ°(彿¶ä¸å°åºçæ¶ï¼å°éå)ï¼å¦æä¸è®¾ç½®ï¼å½ä»¤ç¼åå¨è¿è¡è¡¥å
设置 |
| | | midRs.isCachForOffLine = false ;//RTUä¸å¨çº¿ï¼å½ä»¤æ¯å¦ç¼åï¼ä½åèæ¶ä¸ºtrue |
| | | |
| | | midRs.isSendFirst = false ;//å½ä»¤åºçï¼é¦å
åéï¼é²æ¢RTU鿰䏿¥ |
| | | if(isLowPower != null && isLowPower.booleanValue()){ |
| | | //ä½åèæ¶ï¼å°½å¿«åé |
| | | midRs.isQuickSend = true ; |
| | | } |
| | | |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æé ä¸è¡æ°æ® |
| | | * @param para åæ° |
| | | * @return åèæ°ç» |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public byte[] doParse(ParseParamsForDownV202404 para) throws Exception { |
| | | byte[] bytes = GlCreate.createStart2Cd(para.rtuAddr, para.commandCode); |
| | | if(para.param != null){ |
| | | String json = (String)para.param; |
| | | ComCd98Vo cvo = JSON.parseObject(json, ComCd98Vo.class) ; |
| | | if(cvo == null){ |
| | | throw new Exception("json转ComCd98Vo为null") ; |
| | | } |
| | | byte[] bs = new byte[2] ; |
| | | int index = 0 ; |
| | | bs[index] = (byte)(Integer.parseInt(cvo.controllerType, 16)); |
| | | |
| | | index ++ ; |
| | | bs[index] = cvo.projectNo.byteValue() ; |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bs) ; |
| | | }else{ |
| | | throw new Exception("ä¸è¡å½ä»¤åæ°æ®ä¸ºnull") ; |
| | | } |
| | | GlCreate.createLen(bytes);//é¿åº¦æ¾åèæ°ç»ä¸ |
| | | |
| | | byte[] bsTail = GlCreate.createCrcTail(bytes) ;//CRCåå°¾ |
| | | |
| | | bytes = ByteUtil.bytesMerge(bytes, bsTail) ; |
| | | |
| | | return bytes ; |
| | | } |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse; |
| | | |
| | | |
| | | import com.dy.common.mw.protocol.*; |
| | | import com.dy.common.mw.protocol.p206V202404.*; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd98Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | @AnnotationCodeUp(ifAny={ |
| | | CodeV202404.cd_98 |
| | | }) |
| | | @SuppressWarnings("unused") |
| | | public class Cd_98_Up implements CodeParse{ |
| | | |
| | | private static final Logger log = LogManager.getLogger(Cd_98_Up.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ® |
| | | */ |
| | | @Override |
| | | public MidResult[] parse(Boolean isLowPower, CodeParseParams params, CodeParseCallback callback)throws Exception { |
| | | ParseParamsForUpV202404 para = (ParseParamsForUpV202404)params ; |
| | | int bsLen = new CommonV202404().parseDataLen(para.upBuffer) ; |
| | | if(bsLen > 0){ |
| | | this.doParse(para.upBuffer, |
| | | bsLen, |
| | | para.upCode, |
| | | para.data) ; |
| | | } |
| | | log.info("åæä¸è¡æ°æ®<" + CodeV202404.getCodeName(para.upCode) + " RTUå°å=" + para.rtuAddr + ">:\n" + para.data.toString()); |
| | | |
| | | MidResultFromRtu midRs = new MidResultFromRtu() ; |
| | | midRs.protocolName = para.protocolName ;//åè®®åç§° |
| | | midRs.rtuAddr = para.rtuAddr ;//Rtuå°å |
| | | midRs.upCode = para.upCode ;//ä¸è¡æ°æ®ä¸çåè½ç |
| | | midRs.upHex = para.upHex ;//ä¸è¡æ°æ®åå
è¿å¶å½¢å¼ |
| | | midRs.upBuffer = para.upBuffer ;//ä¸è¡æ°æ®åèæ°ç» |
| | | midRs.data = para.data ;//è§£æåçæ°æ® |
| | | |
| | | midRs.reportOrResponse_trueOrFalse = false ; |
| | | |
| | | callback.callback(midRs.reportOrResponse_trueOrFalse); |
| | | return new MidResult[]{midRs} ; |
| | | } |
| | | /** |
| | | * æ§è¡åæ |
| | | * @param bs åèæ°ç» |
| | | * @param bsLen åèé¿åº¦ï¼æ»å
é¿ï¼å
æ¬å
头åå
å°¾ï¼ |
| | | * @param dataCode åè½ç |
| | | * @param data æ°æ® |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | protected void doParse(byte[] bs, int bsLen, String dataCode, Data data) throws Exception { |
| | | DataV202404 dV1 = (DataV202404)data.getSubData() ; |
| | | DataCd98Vo cdData = new DataCd98Vo() ; |
| | | dV1.subData = cdData ; |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | byte result = bs[index]; |
| | | if(result == 1){ |
| | | cdData.success = true ; |
| | | }else{ |
| | | cdData.success = false ; |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse.global; |
| | | |
| | | import com.dy.common.mw.protocol.p206V1_0_0.ProtocolConstantV206V1_0_0; |
| | | import com.dy.common.mw.protocol.p206V202404.CommonV202404; |
| | | import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import com.dy.common.util.CRC8_for_2_0; |
| | | import com.dy.common.util.DateTime; |
| | | |
| | | public class GlCreate { |
| | | /** |
| | | * 6åèBCDç ï¼12ä½è¡æ¿åºåï¼ + 2åèHEX |
| | | * @param rtuAddr æ§å¶å¨å°å |
| | | * @param commandCode åè½ç |
| | | * @throws Exception |
| | | */ |
| | | public static byte[] createStart2Cd(String rtuAddr, String commandCode) throws Exception { |
| | | CommonV202404 commonV202404 = new CommonV202404() ; |
| | | byte[] bsHead = new byte[ProtocolConstantV206V202404.lenHead2Code] ; |
| | | byte index = 0 ; |
| | | bsHead[index] = ProtocolConstantV206V202404.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = 0 ;//帧é¿åº¦ |
| | | |
| | | index++ ; |
| | | bsHead[index] = ProtocolConstantV206V202404.P_Head_Byte ; |
| | | |
| | | index++ ; |
| | | bsHead[index] = commonV202404.createCtrl((byte)0, (byte)0) ; |
| | | |
| | | index++ ; |
| | | GlCreate.createRtuAddr(rtuAddr, bsHead, index); |
| | | index += 7 ; |
| | | |
| | | ByteUtil.hex2Bytes(commandCode, bsHead, index) ; |
| | | return bsHead ; |
| | | } |
| | | |
| | | /** |
| | | * çææ§å¶å¨å°å |
| | | * 6åèBCDç ï¼12ä½è¡æ¿åºåï¼ + 2åèHEX |
| | | * @param rtuAddr |
| | | * @param bs |
| | | * @param index |
| | | * @throws Exception |
| | | */ |
| | | public static void createRtuAddr(String rtuAddr, byte[] bs, int index) throws Exception { |
| | | String rtuAddr1 = rtuAddr.substring(0, 12) ; |
| | | String rtuAddr2 = rtuAddr.substring(12) ; |
| | | |
| | | ByteUtil.string2BCD_BE(bs, rtuAddr1, index) ; |
| | | index += 6 ; |
| | | |
| | | Integer rtuAddr2Int = Integer.parseInt(rtuAddr2) ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, rtuAddr2Int.shortValue(), index); |
| | | } |
| | | |
| | | /** |
| | | * çæICå¡å°å |
| | | * @param icCardAddr |
| | | * @param bs |
| | | * @param index |
| | | * @throws Exception |
| | | */ |
| | | public static void createIcCardAddr(String icCardAddr, byte[] bs, int index) throws Exception { |
| | | String s1 = icCardAddr.substring(0, 2) ; |
| | | String s2 = icCardAddr.substring(2, 4) ; |
| | | String s3 = icCardAddr.substring(4, 6) ; |
| | | String s4 = icCardAddr.substring(6, 8) ; |
| | | bs[index++] = (byte) (Integer.parseInt(s1, 16)) ; |
| | | bs[index++] = (byte) (Integer.parseInt(s2, 16)) ; |
| | | bs[index++] = (byte) (Integer.parseInt(s3, 16)) ; |
| | | bs[index++] = (byte) (Integer.parseInt(s4, 16)) ; |
| | | } |
| | | |
| | | /** |
| | | * çæICå¡ç¼ç |
| | | * 6åèBCDç ï¼12ä½è¡æ¿åºåï¼ + 2åèHEX |
| | | * @param icCardNo |
| | | * @param bs |
| | | * @param index |
| | | * @throws Exception |
| | | */ |
| | | public static void createIcCardNo(String icCardNo, byte[] bs, int index) throws Exception { |
| | | String icCardNo1 = icCardNo.substring(0, 12) ; |
| | | String icCardNo2 = icCardNo.substring(12) ; |
| | | |
| | | ByteUtil.string2BCD_BE(bs, icCardNo1, index) ; |
| | | index += 6 ; |
| | | |
| | | Integer icCardNo2Int = Integer.parseInt(icCardNo2) ; |
| | | ByteUtilUnsigned.short2Bytes_LE(bs, icCardNo2Int.shortValue(), index); |
| | | } |
| | | public static void createPw(byte[] bs, int index) throws Exception { |
| | | bs[index] = 0; |
| | | bs[index + 1] = 0; |
| | | } |
| | | |
| | | public static void createTp(byte[] bs, int index) throws Exception { |
| | | bs[index] = Byte.parseByte(DateTime.ss()) ; |
| | | bs[index + 1] = Byte.parseByte(DateTime.mm()) ; |
| | | bs[index + 2] = Byte.parseByte(DateTime.HH()) ; |
| | | bs[index + 3] = Byte.parseByte(DateTime.dd()) ; |
| | | bs[index + 4] = (byte)(DateTime.week_Int().byteValue() << 5 | Byte.parseByte(DateTime.MM())) ; |
| | | bs[index + 5] = Byte.parseByte(DateTime.yy()) ; |
| | | } |
| | | |
| | | public static void createS2D(byte[] bs, int index) throws Exception { |
| | | bs[index] = Byte.parseByte(DateTime.ss()) ; |
| | | bs[index + 1] = Byte.parseByte(DateTime.mm()) ; |
| | | bs[index + 2] = Byte.parseByte(DateTime.HH()) ; |
| | | bs[index + 3] = Byte.parseByte(DateTime.dd()) ; |
| | | } |
| | | |
| | | public static void createLen(byte[] bsNoTail) throws Exception { |
| | | int len = bsNoTail.length - ProtocolConstantV206V1_0_0.lenHead2ctrl; |
| | | bsNoTail[ProtocolConstantV206V1_0_0.dataLenIndex] = (byte)len ; |
| | | } |
| | | |
| | | public static byte[] createCrcTail(byte[] bsNoTail) throws Exception { |
| | | int crc = new CRC8_for_2_0().CRC8(bsNoTail, ProtocolConstantV206V1_0_0.ctrlIndex, bsNoTail.length -1) ; |
| | | byte[] bytes = new byte[ProtocolConstantV206V1_0_0.lenTail] ; |
| | | bytes[0] = (byte)crc ; |
| | | bytes[1] = ProtocolConstantV206V1_0_0.P_Tail_Byte ; |
| | | return bytes ; |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.parse.global; |
| | | |
| | | import com.dy.common.mw.protocol.p206V202404.ProtocolConstantV206V202404; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd80Vo; |
| | | import com.dy.common.mw.protocol.p206V202404.upVos.DataCd81Vo; |
| | | import com.dy.common.util.ByteUtil; |
| | | import com.dy.common.util.ByteUtilUnsigned; |
| | | import org.apache.logging.log4j.LogManager; |
| | | import org.apache.logging.log4j.Logger; |
| | | |
| | | public class GlParse { |
| | | |
| | | private static final Logger log = LogManager.getLogger(GlParse.class); |
| | | |
| | | /** |
| | | * åæä¸è¡æ°æ®ä¸çæ¶é |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @param index å¯å§ä½ |
| | | * @return æ§å¶å¨å°å |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public static String parseRtuDt(byte[] bs, int index)throws Exception{ |
| | | String ss = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String MM = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String HH = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String dd = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String mm = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | index++ ; |
| | | String yy = ByteUtil.BCD2String_BE(bs, index, index) ; |
| | | return yy + "-" + mm + "-" + dd + " " + HH + ":" + MM + ":" + ss ; |
| | | } |
| | | /** |
| | | * åæICå¡ç¼å· |
| | | * @param bs ä¸è¡åèæ°ç» |
| | | * @param index å¯å§ä½ |
| | | * @param len1 第ä¸é¨ååèæ° |
| | | * @param len2 第äºé¨ååèæ° |
| | | * @return æ§å¶å¨å°å |
| | | * @throws Exception å¼å¸¸ |
| | | */ |
| | | public static String parseIcCardNo(byte[] bs, int index, int len1, int len2)throws Exception{ |
| | | String rtuAddrBCD = "" + ByteUtil.BCD2Long_BE(bs, index, index + len1 - 1) ; |
| | | String rtuAddrStr = "" + ByteUtilUnsigned.bytes2Short_LE(bs, index + len1 + len2 -1 ) ; |
| | | while(rtuAddrStr.length() < 5){ |
| | | rtuAddrStr = "0" + rtuAddrStr ; |
| | | } |
| | | return rtuAddrBCD + rtuAddrStr ; |
| | | } |
| | | |
| | | /** |
| | | * åæç¶æä¸æ¥è¦ |
| | | * @param bs |
| | | * @param index |
| | | * @return |
| | | */ |
| | | public static void parseAlarmAndState(byte[] bs, int index, DataCd80Vo vo){ |
| | | byte b = bs[index] ; |
| | | vo.statePump = (byte)(b & 0x1) ; |
| | | vo.alarmWaterRemain = (byte)(b & 0x2) ; |
| | | vo.alarm0WaterRemain = (byte)(b & 0x4) ; |
| | | vo.alarmExceedYear = (byte)(b & 0x8) ; |
| | | vo.alarmWaterMeterFault = (byte)(b & 0x10) ; |
| | | vo.alarmSteal = (byte)(b & 0x20) ; |
| | | vo.alarmWaterMeterBreak = (byte)(b & 0x40) ; |
| | | vo.alarmEleMeterFault = (byte)(b & 0x80) ; |
| | | |
| | | index++ ; |
| | | b = bs[index] ; |
| | | vo.alarm0MoneyRemain = (byte)(b & 0x1) ; |
| | | vo.alarmInnerDoor = (byte)(b & 0x2) ; |
| | | vo.alarmOuterDoor = (byte)(b & 0x4) ; |
| | | vo.alarmEleMiss = (byte)(b & 0x8) ; |
| | | vo.alarmEleExceed = (byte)(b & 0x10) ; |
| | | vo.alarmEleLowVolt = (byte)(b & 0x20) ; |
| | | vo.stateIcEnable = (byte)(b & 0x40) ; |
| | | } |
| | | /** |
| | | * åæç¶æä¸æ¥è¦ |
| | | * @param bs |
| | | * @param index |
| | | * @return |
| | | */ |
| | | public static void parseAlarmAndState(byte[] bs, int index, DataCd81Vo vo){ |
| | | byte b = bs[index] ; |
| | | vo.statePump = (byte)(b & 0x1) ; |
| | | vo.alarmWaterRemain = (byte)(b & 0x2) ; |
| | | vo.alarm0WaterRemain = (byte)(b & 0x4) ; |
| | | vo.alarmExceedYear = (byte)(b & 0x8) ; |
| | | vo.alarmWaterMeterFault = (byte)(b & 0x10) ; |
| | | vo.alarmSteal = (byte)(b & 0x20) ; |
| | | vo.alarmWaterMeterBreak = (byte)(b & 0x40) ; |
| | | vo.alarmEleMeterFault = (byte)(b & 0x80) ; |
| | | |
| | | index++ ; |
| | | b = bs[index] ; |
| | | vo.alarm0MoneyRemain = (byte)(b & 0x1) ; |
| | | vo.alarmInnerDoor = (byte)(b & 0x2) ; |
| | | vo.alarmOuterDoor = (byte)(b & 0x4) ; |
| | | vo.alarmEleMiss = (byte)(b & 0x8) ; |
| | | vo.alarmEleExceed = (byte)(b & 0x10) ; |
| | | vo.alarmEleLowVolt = (byte)(b & 0x20) ; |
| | | vo.stateIcEnable = (byte)(b & 0x40) ; |
| | | } |
| | | |
| | | public static String parseTp(byte[] bs, short index){ |
| | | String dt = "" ; |
| | | try{ |
| | | dt = dt + ByteUtil.BCD2String_BE(bs, index, index) ;//ç§ |
| | | index++ ; |
| | | dt = ByteUtil.BCD2String_BE(bs, index, index) + ":" + dt ;//å |
| | | index++ ; |
| | | dt = ByteUtil.BCD2String_BE(bs, index, index) + ":" + dt ;//æ¶ |
| | | index++ ; |
| | | dt = ByteUtil.BCD2String_BE(bs, index, index) + " " + dt ;//æ¥ |
| | | index++ ; |
| | | //bs[index] = (byte)(bs[index] & 0x10); |
| | | dt = ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//æ |
| | | index++ ; |
| | | dt = "20" + ByteUtil.BCD2String_BE(bs, index, index) + "-" + dt ;//å¹´ |
| | | }catch (Exception e){ |
| | | log.error("è§£ææ§å¶å¨æ¶éæ¶å¼å¸¸ï¼" + e.getMessage(), e); |
| | | } |
| | | return dt ; |
| | | } |
| | | |
| | | /** |
| | | * åæåè½80å5Bæ°æ® |
| | | * @param bs |
| | | * @param cdData |
| | | * @throws Exception |
| | | */ |
| | | public static void parseCd80And5B(byte[] bs, DataCd80Vo cdData) throws Exception{ |
| | | |
| | | int index = ProtocolConstantV206V202404.dataIndex ; |
| | | cdData.controllerType = ByteUtil.bytes2Hex(bs, false, index, 1) ; |
| | | |
| | | index++ ; |
| | | cdData.projectNo = 0 + bs[index]; |
| | | |
| | | index++ ; |
| | | cdData.useWaterType = bs[index]; |
| | | |
| | | index++ ; |
| | | cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 4) ; |
| | | |
| | | index += 8 ; |
| | | cdData.icCardAddr = ByteUtil.bytes2Hex(bs, false, index, 4) ; |
| | | |
| | | index += 4 ; |
| | | cdData.icCardNo = GlParse.parseIcCardNo(bs, index, 6, 2) ; |
| | | |
| | | index += 8 ; |
| | | cdData.rtuDt = GlParse.parseRtuDt(bs, index) ; |
| | | |
| | | index += 6 ; |
| | | int waterLevel = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.waterLevel = waterLevel/1000.0D; |
| | | |
| | | index += 4 ; |
| | | int waterPress = ByteUtil.BCD2Int_BE(bs, index, index + 2) ; |
| | | cdData.waterPress = waterPress/100.0D; |
| | | |
| | | index += 3 ; |
| | | int waterInstant = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.waterInstant = waterInstant/100.0D; |
| | | |
| | | index += 4 ; |
| | | int waterTotal = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.waterTotal = waterTotal/100.0D; |
| | | |
| | | index += 5 ; |
| | | int eleTotal = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.eleTotal = eleTotal/100.0D; |
| | | |
| | | index += 5 ; |
| | | int moneyRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.moneyRemain = moneyRemain/100.0D; |
| | | |
| | | index += 5 ; |
| | | int waterRemain = ByteUtil.BCD2Int_BE(bs, index, index + 4) ; |
| | | cdData.waterRemain = waterRemain/100.0D; |
| | | |
| | | index += 5 ; |
| | | int thisEle = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.thisEle = thisEle/100.0D; |
| | | |
| | | index += 4 ; |
| | | int thisWater = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.thisWater = thisWater/100.0D; |
| | | |
| | | index += 4 ; |
| | | int thisMoney = ByteUtil.BCD2Int_BE(bs, index, index + 3) ; |
| | | cdData.thisMoney = thisMoney/100.0D; |
| | | |
| | | index += 4 ; |
| | | cdData.thisDuration = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | |
| | | index += 2 ; |
| | | int waterPrice = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.waterPrice = waterPrice/100.0D; |
| | | |
| | | index += 2 ; |
| | | int elePrice = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.elePrice = elePrice/100.0D; |
| | | |
| | | index += 2 ; |
| | | GlParse.parseAlarmAndState(bs, index, cdData) ; |
| | | |
| | | index += 2 ; |
| | | int aVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.aVolt = aVolt/10.0D; |
| | | |
| | | index += 2 ; |
| | | int bVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.bVolt = bVolt/10.0D; |
| | | |
| | | index += 2 ; |
| | | int cVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.cVolt = cVolt/10.0D; |
| | | |
| | | index += 2 ; |
| | | int aCurrent = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.aCurrent = aCurrent/10.0D; |
| | | |
| | | index += 2 ; |
| | | int bCurrent = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.bCurrent = bCurrent/10.0D; |
| | | |
| | | index += 2 ; |
| | | int cCurrent = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.cCurrent = cCurrent/10.0D; |
| | | |
| | | index += 2 ; |
| | | int batteryVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.batteryVolt = batteryVolt/100.0D; |
| | | |
| | | index += 2 ; |
| | | int waterMeterTransVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.waterMeterTransVolt = waterMeterTransVolt/100.0D; |
| | | |
| | | index += 2 ; |
| | | int waterMeterWorkVolt = ByteUtil.BCD2Int_BE(bs, index, index + 1) ; |
| | | cdData.waterMeterWorkVolt = waterMeterWorkVolt/100.0D; |
| | | |
| | | index += 2 ; |
| | | cdData.csq = ByteUtil.BCD2Int_BE(bs, index, index) ; |
| | | |
| | | } |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //é¾è·¯æ£æµ |
| | | @Data |
| | | public class DataCd02Vo { |
| | | |
| | | public String controllerType ;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public String status ;//ä¿æå¨çº¿ç¶æ: F0 ç»å½ï¼F1 éåºç»å½ï¼F2 å¨çº¿ä¿æ |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" é¾è·¯æ£æµ : \n") ; |
| | | sb.append(" 请æ±ç¶æ : ") ; |
| | | sb.append(status == null?"æªç¥":(status.equals("F0")?"ç»å½":(status.equals("F1")?"éåºç»å½":(status.equals("F2")?"å¨çº¿ä¿æ":status)))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //设置设å¤ç»ç«¯å°å |
| | | @Data |
| | | public class DataCd10Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public String rtuNewAddr ;//æ§å¶å¨æ°å°å |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" 设置ç»ç«¯å°ååºç : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨æ°å°å : ") ; |
| | | sb.append(rtuNewAddr == null?"æªç¥":rtuNewAddr) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //è¿ç¨ç¨æ·å
å¼ |
| | | @Data |
| | | public class DataCd15Vo { |
| | | |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public Boolean success ;//å½ä»¤ç»æï¼trueæå, falseå¤±è´¥ï¼ |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å½ä»¤ç»æ : ") ; |
| | | sb.append(success == null?"æªç¥":(success?"æå":"失败")) ; |
| | | sb.append("\n") ; |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¥è¯¢è®¾å¤ç»ç«¯å°å |
| | | @Data |
| | | public class DataCd50Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public String rtuAddr;//æ§å¶å¨æ°å°å |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" 设置ç»ç«¯å°ååºç : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨å°å : ") ; |
| | | sb.append(rtuAddr == null?"æªç¥": rtuAddr) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¥è¯¢è®¾å¤ç»ç«¯å
å¼è®°å½ |
| | | @Data |
| | | public class DataCd55Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public String icCardAddr ;//ICå¡å°å(8使°åæåæ¯) |
| | | public String icCardNo ;//ç¨æ·å¡åºåå·ï¼16使°åï¼ï¼6åèBCDï¼2åèHEXï¼ |
| | | public Double chargeMoney ;//åä½:å
2ä½å°æ°ç¹(æå¤§å¼ 99999999.99) |
| | | public Double chargeWater ;//åä½:m3 2ä½å°æ°ç¹(æå¤§å¼ 99999999.99) |
| | | public String flowNo ;//æµæ°´å·ï¼12使°åï¼ |
| | | public Boolean success ;//å½ä»¤ç»æï¼trueæå, falseå¤±è´¥ï¼ |
| | | public String dt ;//å
弿¶é´ï¼yyyy-mm-dd HH:mm:ssï¼ |
| | | |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¥è¯¢è®¾å¤ç»ç«¯å
å¼è®°å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ICå¡å°å : ") ; |
| | | sb.append(icCardAddr == null?"æªç¥":icCardAddr) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å¡åºåå· : ") ; |
| | | sb.append(icCardNo == null?"æªç¥":icCardNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å
å¼éé¢ : ") ; |
| | | sb.append(chargeMoney == null?"æªç¥":chargeMoney) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å
弿°´é : ") ; |
| | | sb.append(chargeWater == null?"æªç¥":chargeWater) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æµæ°´å· : ") ; |
| | | sb.append(flowNo == null?"æªç¥":flowNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å
å¼ç»æ : ") ; |
| | | sb.append(success == null?"æªç¥":(success.booleanValue()?"æå":"失败")) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å
弿¶é´ : ") ; |
| | | sb.append(dt == null?"æªç¥":dt) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¥è¯¢è®¾å¤ç»ç«¯å©ä½æ°´éåå©ä½é颿¥è¦å¼ |
| | | @Data |
| | | public class DataCd56Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public Integer waterAlarm ;//å©ä½æ°´éæ¥è¦å¼,åä½:m3ãæ´æ°ï¼åå¼èå´0~65535 |
| | | public Integer moneyAlarm ;//å©ä½é颿¥è¦å¼,åä½:å
ãæ´æ°ï¼åå¼èå´0~65535 |
| | | |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¥è¯¢è®¾å¤ç»ç«¯å©ä½æ°´éåå©ä½é颿¥è¦å¼ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å©ä½æ°´éæ¥è¦å¼ : ") ; |
| | | sb.append(moneyAlarm == null?"æªç¥":moneyAlarm) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //设å¤ç»ç«¯å·¥ä½ä¸æ¥ |
| | | @Data |
| | | public class DataCd5BVo extends DataCd80Vo { |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¥è¯¢è®¾å¤ç»ç«¯çå岿¥è®°å½ |
| | | @Data |
| | | public class DataCd5CVo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å 01ï¼0x01ï¼:æµæ§ä¸ä½éï¼57(0x57):äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//æ§å¶å¨ç±»å 0x01:æµæ§ä¸ä½éï¼0x57:äºçµæ§å¶å¨ |
| | | public String dt ;//è§å¯æ¶é´ï¼yyyy-mm-dd HHï¼ |
| | | public Double meterAmountDay ;//彿¥æ°´è¡¨åæµéï¼2ä¸ªå°æ°ç¹ |
| | | public Double farmerAmountDay ;//彿¥ç¨æ·ç¨æ°´éï¼2ä¸ªå°æ°ç¹ |
| | | public Double lossAmountDay ;//彿¥æ¼ææ°´éï¼2ä¸ªå°æ°ç¹ |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¥è¯¢è®¾å¤ç»ç«¯çå岿¥è®°å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" è§å¯æ¶é´ : ") ; |
| | | sb.append(dt == null?"æªç¥":dt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 彿¥æ°´è¡¨åæµé : ") ; |
| | | sb.append(meterAmountDay == null?"æªç¥":meterAmountDay) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 彿¥ç¨æ·ç¨æ°´é : ") ; |
| | | sb.append(farmerAmountDay == null?"æªç¥":farmerAmountDay) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 彿¥æ¼ææ°´é : ") ; |
| | | sb.append(lossAmountDay == null?"æªç¥":lossAmountDay) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¥è¯¢è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ |
| | | @Data |
| | | public class DataCd65Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public String icCardAddr ;//ICå¡å°å(è¿ç¨å¼æ³µ/éæ¶æ¤æ°æ®ä¸º0) |
| | | public String icCardNo ;//ç¨æ·å¡åºåå·ï¼16使°åï¼ |
| | | public Double moneyRemain ;//ç¨æ·å©ä½éé¢(åä½0.01å
) |
| | | public Double waterRemain ;//ç¨æ·å©ä½æ°´é(åä½0.01m3) |
| | | public Double thisEle ;//æ¬æ¬¡ä½¿ç¨çµé(åä½0.01度) |
| | | public Double thisWater ;//æ¬æ¬¡ä½¿ç¨æ°´é(åä½0.01ç«æ¹ç±³) |
| | | public String rtuStartDt ;//æ¬æ¬¡å¼å§æ¶é´ (åæ¶æ¥æ) |
| | | public String rtuEndDt ;//æ¬æ¬¡ç»ææ¶é´ (åæ¶æ¥æ) |
| | | public Byte useWaterType ;//ç¨æ°´æ¹å¼ï¼0x00:æ£å¸¸å·å¡å¼æ³µ/éç¨æ°´ 0x01:å¹³å°è¿ç¨å¼æ³µ/éç¨æ°´ 0x02:ç¨æ·è¿ç¨å¼æ³µ/éç¨æ°´ 0x03:æµè¯å¡ï¼0x04:å
¶å®ï¼ |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¥è¯¢è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ°´æ¹å¼ : ") ; |
| | | sb.append(useWaterType == null?"æªç¥":(useWaterType.byteValue()==0?"å·å¡å¼æ³µ/é":(useWaterType.byteValue()==1?"å¹³å°è¿ç¨å¼æ³µ/é":(useWaterType.byteValue()==2?"APPè¿ç¨å¼æ³µ/é":(useWaterType.byteValue()==3?"æµè¯å¡å¼æ³µ/é":(useWaterType.byteValue()==4?"å
¶ä»":"æªç¥")))))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ICå¡å°å : ") ; |
| | | sb.append(icCardAddr == null?"æªç¥":icCardAddr) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å¡åºåå· : ") ; |
| | | sb.append(icCardNo == null?"æªç¥":icCardNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å©ä½éé¢ : ") ; |
| | | sb.append(moneyRemain == null?"æªç¥":moneyRemain) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å©ä½æ°´é : ") ; |
| | | sb.append(waterRemain == null?"æªç¥":waterRemain) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ä½¿ç¨çµé : ") ; |
| | | sb.append(thisEle == null?"æªç¥":thisEle) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ä½¿ç¨æ°´é : ") ; |
| | | sb.append(thisWater == null?"æªç¥":thisWater) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡å¼å§æ¶é´ : ") ; |
| | | sb.append(rtuStartDt == null?"æªç¥":rtuStartDt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ç»ææ¶é´ : ") ; |
| | | sb.append(rtuEndDt == null?"æªç¥":rtuEndDt) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //设å¤ç»ç«¯å·¥ä½ä¸æ¥ |
| | | @Data |
| | | public class DataCd80Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public Byte useWaterType ;//ç¨æ°´æ¹å¼ï¼0x00:æ£å¸¸å·å¡å¼æ³µ/éç¨æ°´ 0x01:å¹³å°è¿ç¨å¼æ³µ/éç¨æ°´ 0x02:ç¨æ·è¿ç¨å¼æ³µ/éç¨æ°´ 0x03:æµè¯å¡ï¼0x04:å
¶å®ï¼ |
| | | public String orderNo ;//订åå·ï¼16使°åï¼ |
| | | public String icCardAddr ;//ICå¡å°å(è¿ç¨å¼æ³µ/éæ¶æ¤æ°æ®ä¸º0) |
| | | public String icCardNo ;//ç¨æ·å¡åºåå·ï¼16使°åï¼ |
| | | public String rtuDt ;//è§å¯æ¶é´: 6åèçBCDç (ç§åæ¶æ¥æå¹´) |
| | | public Double waterLevel ;//æ°´ä½ï¼åä½0.001ç±³ï¼ |
| | | public Double waterPress ;//æ°´åï¼åä½0.01åå¸ï¼ |
| | | public Double waterInstant ;//ç¬æ¶æµéï¼åä½0.01ç«æ¹ç±³/å°æ¶ï¼ |
| | | public Double waterTotal ;//水表累计æµé(åä½0.01m3) |
| | | public Double eleTotal ;//çµè¡¨ç´¯è®¡çµé(åä½0.01度) |
| | | public Double moneyRemain ;//ç¨æ·å©ä½éé¢(åä½0.01å
) |
| | | public Double waterRemain ;//ç¨æ·å©ä½æ°´é(åä½0.01m3) |
| | | public Double thisEle ;//æ¬æ¬¡ä½¿ç¨çµé(åä½0.01度) |
| | | public Double thisWater ;//æ¬æ¬¡ä½¿ç¨æ°´é(åä½0.01ç«æ¹ç±³) |
| | | public Double thisMoney ;//æ¬æ¬¡ä½¿ç¨éé¢(åä½0.01å
) |
| | | public Integer thisDuration ;//æ¬æ¬¡ä½¿ç¨æ¶é¿(åä½:åé æå¤§9999åé) |
| | | public Double waterPrice ;//å½åæ°´éåä»·(åä½0.01å
æå¤§99.99å
) |
| | | public Double elePrice ;//å½åçµéåä»·(åä½0.01å
æå¤§99.99å
) |
| | | public Double aVolt ;//交æµAç¸çµåæ°æ®(åä½0.1ä¼ç¹) |
| | | public Double bVolt ;//交æµBç¸çµåæ°æ®(åä½0.1ä¼ç¹) |
| | | public Double cVolt ;//交æµCç¸çµåæ°æ®(åä½0.1ä¼ç¹) |
| | | public Double aCurrent ;//交æµAç¸çµæµæ°æ®(åä½0.1å®å¹) |
| | | public Double bCurrent ;//交æµBç¸çµæµæ°æ®(åä½0.1å®å¹) |
| | | public Double cCurrent ;//交æµCç¸çµæµæ°æ®(åä½0.1å®å¹) |
| | | public Double batteryVolt ;//åå¤çµæ± çµå(åä½0.01ä¼ç¹) |
| | | public Double waterMeterTransVolt ;//水表è¿ä¼ çµå(åä½0.01ä¼ç¹) |
| | | public Double waterMeterWorkVolt ;//水表工ä½çµå(åä½0.01ä¼ç¹) |
| | | /* |
| | | CSQå¼åºå¨0å°31ä¹é´ï¼å
¶ä¸99表示æ ä¿¡å·ã |
| | | ç½ç»è´¨éè¯ä¼°ï¼ |
| | | CSQå¼å°äº10ï¼å¯ä»¥è®¤ä¸ºç½ç»è¾å·®ã |
| | | CSQå¼å¨10å25ä¹é´ï¼å¯ä»¥è®¤ä¸ºç½ç»ä¸çã |
| | | CSQå¼å¤§äº25ï¼å¯ä»¥è®¤ä¸ºç½ç»è¾å¥½ã |
| | | CSQå¼å°äº11ï¼ä¸å®¹æéçç½ç»ã |
| | | 11 < CSQ < 18ï¼ç½ç»ä¸ç¨³å®ï¼å¯è½ä¼å¯¼è´è¯¯ç è¾å¤ã |
| | | CSQå¼å¤§äº18ï¼è½ç¨³å®éä¿¡ |
| | | */ |
| | | public Integer csq ;//ææºä¿¡å·å¼ºåº¦ CSQå¼ï¼ï¼ |
| | | |
| | | public Byte statePump ; //æ³µ/éç¶æ (1ï¼å¼æ³µ/éï¼0ï¼å
³æ³µ/é) |
| | | public Byte alarmWaterRemain ; //å©ä½æ°´éæ¥è¦ (1ï¼å°äºæ¥è¦ä¸éæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarm0WaterRemain ; //å©ä½æ°´é为0å
³æ³µ/é (1ï¼å©ä½æ°´é为0å
³æ³µ 0ï¼æ£å¸¸) |
| | | public Byte alarmExceedYear ; //年度è¶
éæ¥è¦ (1ï¼å¹´ç¨æ°´é大äºéå¶æ°´éæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmWaterMeterFault ; //å¤é¨æµé计æ
é (1ï¼æµé计æ
éæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmSteal ; //å·æ°´æ¥è¦ (1ï¼ç»å¼æ§å¶å¨ç¨æ°´æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmWaterMeterBreak ; //æµé计æåæ¥è¦ (1ï¼æ£å¸¸é讯ä½ç¬æ¶ä¸º0æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleMeterFault ; //çµè¡¨æ
éæ¥è¦ (1ï¼åçµè¡¨éè®¯æææ°æ®ä¸æ£å¸¸ 0ï¼æ£å¸¸) |
| | | public Byte alarm0MoneyRemain ; //å©ä½éé¢ä¸º0å
³æ³µ/é (1ï¼å©ä½éé¢ä¸º0æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmInnerDoor ; //æ§å¶å¨å
鍿¥è¦ (1ï¼å
鍿弿¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmOuterDoor ; //æ§å¶å¨å¤é¨æ¥è¦ (1ï¼å¤é¨æå¼æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleMiss ; //交æµç¼ºé¡¹æ¥è¦ (1ï¼ä¸ç¸ç¼ºé¡¹æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleExceed ; //交æµè¿æµæ¥è¦ (1ï¼äº¤æµè¿æµæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleLowVolt ; //ä¸ç¸çµæ¬ åæ¥è¦ (1ï¼æ¬ åæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte stateIcEnable ; //ICå¡ä½¿è½ (1ãICæå·å¡æ¯æ 0ï¼ä¸æ¯æ) |
| | | |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" 设å¤ç»ç«¯å·¥ä½ä¸æ¥ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ°´æ¹å¼ : ") ; |
| | | sb.append(useWaterType == null?"æªç¥":(useWaterType.byteValue()==0?"å·å¡å¼æ³µ/é":(useWaterType.byteValue()==1?"å¹³å°è¿ç¨å¼æ³µ/é":(useWaterType.byteValue()==2?"APPè¿ç¨å¼æ³µ/é":(useWaterType.byteValue()==3?"æµè¯å¡å¼æ³µ/é":(useWaterType.byteValue()==4?"å
¶ä»":"æªç¥")))))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 订åå· : ") ; |
| | | sb.append(orderNo == null?"æªç¥":orderNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ICå¡å°å : ") ; |
| | | sb.append(icCardAddr == null?"æªç¥":icCardAddr) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å¡åºåå· : ") ; |
| | | sb.append(icCardNo == null?"æªç¥":icCardNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" è§å¯æ¶é´ : ") ; |
| | | sb.append(rtuDt == null?"æªç¥":rtuDt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ°´ä½ : ") ; |
| | | sb.append(waterLevel == null?"æªç¥":waterLevel) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ°´å : ") ; |
| | | sb.append(waterPress == null?"æªç¥":waterPress) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¬æ¶æµé : ") ; |
| | | sb.append(waterInstant == null?"æªç¥":waterInstant) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 水表累计æµé : ") ; |
| | | sb.append(waterTotal == null?"æªç¥":waterTotal) ; |
| | | sb.append("\n") ; |
| | | sb.append(" çµè¡¨ç´¯è®¡çµé : ") ; |
| | | sb.append(eleTotal == null?"æªç¥":eleTotal) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å©ä½éé¢ : ") ; |
| | | sb.append(moneyRemain == null?"æªç¥":moneyRemain) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¨æ·å©ä½æ°´é : ") ; |
| | | sb.append(waterRemain == null?"æªç¥":waterRemain) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ä½¿ç¨çµé : ") ; |
| | | sb.append(thisEle == null?"æªç¥":thisEle) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ä½¿ç¨æ°´é : ") ; |
| | | sb.append(thisWater == null?"æªç¥":thisWater) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ä½¿ç¨éé¢ : ") ; |
| | | sb.append(thisMoney == null?"æªç¥":thisMoney) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ¬æ¬¡ä½¿ç¨æ¶é¿ : ") ; |
| | | sb.append(thisDuration == null?"æªç¥":thisDuration) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å½åæ°´éåä»· : ") ; |
| | | sb.append(waterPrice == null?"æªç¥":waterPrice) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å½åçµéåä»· : ") ; |
| | | sb.append(elePrice == null?"æªç¥":elePrice) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµAç¸çµå : ") ; |
| | | sb.append(aVolt == null?"æªç¥":aVolt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµBç¸çµå : ") ; |
| | | sb.append(bVolt == null?"æªç¥":bVolt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµCç¸çµå : ") ; |
| | | sb.append(cVolt == null?"æªç¥":cVolt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµAç¸çµæµ : ") ; |
| | | sb.append(aCurrent == null?"æªç¥":aCurrent) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµBç¸çµæµ : ") ; |
| | | sb.append(bCurrent == null?"æªç¥":bCurrent) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµCç¸çµæµ : ") ; |
| | | sb.append(cCurrent == null?"æªç¥":cCurrent) ; |
| | | sb.append("\n") ; |
| | | sb.append(" åå¤çµæ± çµå : ") ; |
| | | sb.append(batteryVolt == null?"æªç¥":batteryVolt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 水表è¿ä¼ çµå : ") ; |
| | | sb.append(waterMeterTransVolt == null?"æªç¥":waterMeterTransVolt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 水表工ä½çµå : ") ; |
| | | sb.append(waterMeterWorkVolt == null?"æªç¥":waterMeterWorkVolt) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ³µç¶æ : ") ; |
| | | sb.append(statePump == null?"æªç¥":(statePump.byteValue()==1?"æ³µ/éå¼":(statePump.byteValue()==0?"æ³µ/éå
³":"æªç¥"))) ; |
| | | sb.append(" å©ä½æ°´éæ¥è¦ : ") ; |
| | | sb.append(alarmWaterRemain == null?"æªç¥":(alarmWaterRemain.byteValue()==1?"å°äºæ¥è¦ä¸é":(alarmWaterRemain.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å©ä½æ°´é为0å
³æ³µ/é : ") ; |
| | | sb.append(alarm0WaterRemain == null?"æªç¥":(alarm0WaterRemain.byteValue()==1?"å½é¶å
³æ³µ/é":(alarm0WaterRemain.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 年度è¶
é : ") ; |
| | | sb.append(alarmExceedYear == null?"æªç¥":(alarmExceedYear.byteValue()==1?"æ¥è¦":(alarmExceedYear.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å¤é¨æµé计æ
é : ") ; |
| | | sb.append(alarmWaterMeterFault == null?"æªç¥":(alarmWaterMeterFault.byteValue()==1?"æ¥è¦":(alarmWaterMeterFault.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å·æ°´ : ") ; |
| | | sb.append(alarmSteal == null?"æªç¥":(alarmSteal.byteValue()==1?"æ¥è¦":(alarmSteal.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æµé计æå : ") ; |
| | | sb.append(alarmWaterMeterBreak == null?"æªç¥":(alarmWaterMeterBreak.byteValue()==1?"æ¥è¦":(alarmWaterMeterBreak.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" çµè¡¨æ
é : ") ; |
| | | sb.append(alarmEleMeterFault == null?"æªç¥":(alarmEleMeterFault.byteValue()==1?"æ¥è¦":(alarmEleMeterFault.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å©ä½éé¢ä¸º0å
³æ³µ/é : ") ; |
| | | sb.append(alarm0MoneyRemain == null?"æªç¥":(alarm0MoneyRemain.byteValue()==1?"æ¥è¦":(alarm0MoneyRemain.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨å
é¨ : ") ; |
| | | sb.append(alarmInnerDoor == null?"æªç¥":(alarmInnerDoor.byteValue()==1?"æ¥è¦":(alarmInnerDoor.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨å¤é¨ : ") ; |
| | | sb.append(alarmOuterDoor == null?"æªç¥":(alarmOuterDoor.byteValue()==1?"æ¥è¦":(alarmOuterDoor.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµç¼ºé¡¹ : ") ; |
| | | sb.append(alarmEleMiss == null?"æªç¥":(alarmEleMiss.byteValue()==1?"æ¥è¦":(alarmEleMiss.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµè¿æµ : ") ; |
| | | sb.append(alarmEleExceed == null?"æªç¥":(alarmEleExceed.byteValue()==1?"æ¥è¦":(alarmEleExceed.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ä¸ç¸çµæ¬ å : ") ; |
| | | sb.append(alarmEleLowVolt == null?"æªç¥":(alarmEleLowVolt.byteValue()==1?"æ¥è¦":(alarmEleLowVolt.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ICå¡ä½¿è½ : ") ; |
| | | sb.append(stateIcEnable == null?"æªç¥":(stateIcEnable.byteValue()==1?"æ¯æ":(stateIcEnable.byteValue()==0?"䏿¯æ":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //设å¤ç»ç«¯éæºèªæ¥ |
| | | @Data |
| | | public class DataCd81Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | |
| | | public Byte statePump ; //æ³µ/éç¶æ (1ï¼å¼æ³µ/éï¼0ï¼å
³æ³µ/é) |
| | | public Byte alarmWaterRemain ; //å©ä½æ°´éæ¥è¦ (1ï¼å°äºæ¥è¦ä¸éæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarm0WaterRemain ; //å©ä½æ°´é为0å
³æ³µ/é (1ï¼å©ä½æ°´é为0å
³æ³µ 0ï¼æ£å¸¸) |
| | | public Byte alarmExceedYear ; //年度è¶
éæ¥è¦ (1ï¼å¹´ç¨æ°´é大äºéå¶æ°´éæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmWaterMeterFault ; //å¤é¨æµé计æ
é (1ï¼æµé计æ
éæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmSteal ; //å·æ°´æ¥è¦ (1ï¼ç»å¼æ§å¶å¨ç¨æ°´æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmWaterMeterBreak ; //æµé计æåæ¥è¦ (1ï¼æ£å¸¸é讯ä½ç¬æ¶ä¸º0æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleMeterFault ; //çµè¡¨æ
éæ¥è¦ (1ï¼åçµè¡¨éè®¯æææ°æ®ä¸æ£å¸¸ 0ï¼æ£å¸¸) |
| | | public Byte alarm0MoneyRemain ; //å©ä½éé¢ä¸º0å
³æ³µ/é (1ï¼å©ä½éé¢ä¸º0æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmInnerDoor ; //æ§å¶å¨å
鍿¥è¦ (1ï¼å
鍿弿¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmOuterDoor ; //æ§å¶å¨å¤é¨æ¥è¦ (1ï¼å¤é¨æå¼æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleMiss ; //交æµç¼ºé¡¹æ¥è¦ (1ï¼ä¸ç¸ç¼ºé¡¹æ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleExceed ; //交æµè¿æµæ¥è¦ (1ï¼äº¤æµè¿æµæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte alarmEleLowVolt ; //ä¸ç¸çµæ¬ åæ¥è¦ (1ï¼æ¬ åæ¥è¦ 0ï¼æ£å¸¸) |
| | | public Byte stateIcEnable ; //ICå¡ä½¿è½ (1ãICæå·å¡æ¯æ 0ï¼ä¸æ¯æ) |
| | | |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" 设å¤ç»ç«¯éæºèªæ¥ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ³µç¶æ : ") ; |
| | | sb.append(statePump == null?"æªç¥":(statePump.byteValue()==1?"æ³µ/éå¼":(statePump.byteValue()==0?"æ³µ/éå
³":"æªç¥"))) ; |
| | | sb.append(" å©ä½æ°´éæ¥è¦ : ") ; |
| | | sb.append(alarmWaterRemain == null?"æªç¥":(alarmWaterRemain.byteValue()==1?"å°äºæ¥è¦ä¸é":(alarmWaterRemain.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å©ä½æ°´é为0å
³æ³µ/é : ") ; |
| | | sb.append(alarm0WaterRemain == null?"æªç¥":(alarm0WaterRemain.byteValue()==1?"å½é¶å
³æ³µ/é":(alarm0WaterRemain.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 年度è¶
é : ") ; |
| | | sb.append(alarmExceedYear == null?"æªç¥":(alarmExceedYear.byteValue()==1?"æ¥è¦":(alarmExceedYear.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å¤é¨æµé计æ
é : ") ; |
| | | sb.append(alarmWaterMeterFault == null?"æªç¥":(alarmWaterMeterFault.byteValue()==1?"æ¥è¦":(alarmWaterMeterFault.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å·æ°´ : ") ; |
| | | sb.append(alarmSteal == null?"æªç¥":(alarmSteal.byteValue()==1?"æ¥è¦":(alarmSteal.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æµé计æå : ") ; |
| | | sb.append(alarmWaterMeterBreak == null?"æªç¥":(alarmWaterMeterBreak.byteValue()==1?"æ¥è¦":(alarmWaterMeterBreak.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" çµè¡¨æ
é : ") ; |
| | | sb.append(alarmEleMeterFault == null?"æªç¥":(alarmEleMeterFault.byteValue()==1?"æ¥è¦":(alarmEleMeterFault.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å©ä½éé¢ä¸º0å
³æ³µ/é : ") ; |
| | | sb.append(alarm0MoneyRemain == null?"æªç¥":(alarm0MoneyRemain.byteValue()==1?"æ¥è¦":(alarm0MoneyRemain.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨å
é¨ : ") ; |
| | | sb.append(alarmInnerDoor == null?"æªç¥":(alarmInnerDoor.byteValue()==1?"æ¥è¦":(alarmInnerDoor.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" æ§å¶å¨å¤é¨ : ") ; |
| | | sb.append(alarmOuterDoor == null?"æªç¥":(alarmOuterDoor.byteValue()==1?"æ¥è¦":(alarmOuterDoor.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµç¼ºé¡¹ : ") ; |
| | | sb.append(alarmEleMiss == null?"æªç¥":(alarmEleMiss.byteValue()==1?"æ¥è¦":(alarmEleMiss.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 交æµè¿æµ : ") ; |
| | | sb.append(alarmEleExceed == null?"æªç¥":(alarmEleExceed.byteValue()==1?"æ¥è¦":(alarmEleExceed.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ä¸ç¸çµæ¬ å : ") ; |
| | | sb.append(alarmEleLowVolt == null?"æªç¥":(alarmEleLowVolt.byteValue()==1?"æ¥è¦":(alarmEleLowVolt.byteValue()==0?"æ£å¸¸":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ICå¡ä½¿è½ : ") ; |
| | | sb.append(stateIcEnable == null?"æªç¥":(stateIcEnable.byteValue()==1?"æ¯æ":(stateIcEnable.byteValue()==0?"䏿¯æ":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //设å¤ç»å½ |
| | | @Data |
| | | public class DataCd8AVo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public Double lng ;//ç»åº¦ |
| | | public Double lat ;//纬度 |
| | | public Float softVersion ;//è½¯ä»¶çæ¬å· |
| | | public Float hardVersion ;//ç¡¬ä»¶çæ¬å· |
| | | public Float protocolVersion ;//åè®®çæ¬å· |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" 设å¤ç»å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç»åº¦ : ") ; |
| | | sb.append(lng == null?"æªç¥":lng) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 纬度 : ") ; |
| | | sb.append(lat == null?"æªç¥":lat) ; |
| | | sb.append("\n") ; |
| | | sb.append(" è½¯ä»¶çæ¬å· : ") ; |
| | | sb.append(softVersion == null?"æªç¥":softVersion) ; |
| | | sb.append("\n") ; |
| | | sb.append(" ç¡¬ä»¶çæ¬å· : ") ; |
| | | sb.append(hardVersion == null?"æªç¥":hardVersion) ; |
| | | sb.append("\n") ; |
| | | sb.append(" åè®®çæ¬å· : ") ; |
| | | sb.append(protocolVersion == null?"æªç¥":protocolVersion) ; |
| | | sb.append("\n") ; |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ |
| | | @Data |
| | | public class DataCd97Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public Boolean success ;//å½ä»¤ç»æï¼trueæå, falseå¤±è´¥ï¼ |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å½ä»¤ç»æ : ") ; |
| | | sb.append(success == null?"æªç¥":(success?"æå":"失败")) ; |
| | | sb.append("\n") ; |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.dy.common.mw.protocol.p206V202404.upVos; |
| | | |
| | | import lombok.Data; |
| | | |
| | | //æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ |
| | | @Data |
| | | public class DataCd98Vo { |
| | | |
| | | public String controllerType;//æ§å¶å¨ç±»å: 01:æµæ§ä¸ä½éï¼57:äºçµæ§å¶å¨ |
| | | public Integer projectNo ;//项ç®ç¼å·: |
| | | public Boolean success ;//å½ä»¤ç»æï¼trueæå, falseå¤±è´¥ï¼ |
| | | |
| | | public String toString(){ |
| | | StringBuffer sb = new StringBuffer() ; |
| | | sb.append(" æ¸
é¤è®¾å¤ç»ç«¯ç¨æ·ç¨æ°´è®°å½ : \n") ; |
| | | sb.append(" æ§å¶å¨ç±»å : ") ; |
| | | sb.append(controllerType == null?"æªç¥":(controllerType.equals("01")?"æµæ§ä¸ä½é":(controllerType.equals("57")?"äºçµæ§å¶å¨":"æªç¥"))) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 项ç®ç¼å· : ") ; |
| | | sb.append(projectNo == null?"æªç¥":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" å½ä»¤ç»æ : ") ; |
| | | sb.append(success == null?"æªç¥":(success?"æå":"失败")) ; |
| | | sb.append("\n") ; |
| | | |
| | | return sb.toString() ; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | æ ¹æ®çæ±æµ·å¶å®çæ°åè®®ãæºè½æ§å¶ç»ç«¯ä¸ç®¡çå¹³å°ä¼ è¾åè®®è§è240424.docãå®ç° |
| | | |
| | | 鳿»çæµæ§ä¸ä½éä¸çæ±æµ·çæµæ§ä¸ä½éä¸è½å¨åä¸ä¸ªä¸é´ä»¶è¿è¡ï¼ |
| | | å ä¸ºä¸¤ä¸ªçæ¬çåè®®å议头é½ä¸æ ·ï¼æ²¡æ³åºå弿¥ï¼å¦æä¸¤ç§è®¾å¤ |
| | | é½è¦åºç¨ï¼éè¦é¨ç½²ä¸¤ä¸ªéä¿¡ä¸é´ä»¶ã |
| | |
| | | } |
| | | |
| | | /** |
| | | * 大端模å¼ãæ°æ®ä½ä½å¨æ°ç»é«åèã |
| | | * å°ç«¯æ¨¡å¼ãæ°æ®ä½ä½å¨æ°ç»é«åèã |
| | | * åç¬¦ä¸²è½¬æ¢æbyteæ°ç» |
| | | * @value bs byte[] |
| | | * @value str String |
| | |
| | | } |
| | | public static Integer week_Int(){ |
| | | String str = week_Str() ; |
| | | return switch (str) { |
| | | case "Mon" -> 1; |
| | | case "Tue" -> 2; |
| | | case "Wed" -> 3; |
| | | case "Thu" -> 4; |
| | | case "Fri" -> 5; |
| | | case "Sat" -> 6; |
| | | case "Sun" -> 7; |
| | | default -> 0; |
| | | }; |
| | | if(str.startsWith("å¨")){ |
| | | return switch (str) { |
| | | case "å¨ä¸" -> 1; |
| | | case "å¨äº" -> 2; |
| | | case "å¨ä¸" -> 3; |
| | | case "å¨å" -> 4; |
| | | case "å¨äº" -> 5; |
| | | case "å¨å
" -> 6; |
| | | case "å¨ä¸" -> 7; |
| | | default -> 0; |
| | | }; |
| | | }else{ |
| | | return switch (str) { |
| | | case "Mon" -> 1; |
| | | case "Tue" -> 2; |
| | | case "Wed" -> 3; |
| | | case "Thu" -> 4; |
| | | case "Fri" -> 5; |
| | | case "Sat" -> 6; |
| | | case "Sun" -> 7; |
| | | default -> 0; |
| | | }; |
| | | } |
| | | } |
| | | /** |
| | | * ä¸¤ä¸ªæ¥æé´ç¸å·®ç§éæ° |
| | |
| | | String[] s = new String[3] ; |
| | | s[0] = ymd.substring(0 , 4) ; |
| | | s[1] = ymd.substring(5 , 7) ; |
| | | if(s[1].charAt(0) == '0'){ |
| | | s[1] = s[1].substring(1) ; |
| | | } |
| | | s[2] = ymd.substring(8,10) ; |
| | | if(s[2].charAt(0) == '0'){ |
| | | s[2] = s[2].substring(1) ; |
| | | } |
| | | return s ; |
| | | } |
| | | /** |