最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】用Java代码解析104协议收到的数据

代码 crifan 1635浏览 0评论
折腾:
【整理】Java版本的104协议解析
期间,去先参考别人的代码
mujave/iec_analysis: 国家电网规约101/104协议解析与组装
iec_analysis/Analysis.java at master · mujave/iec_analysis · GitHub
去尝试解析,104协议,收到的示例的二进制数据。
EB90EB90(端口号:21站0)[2020/1/6 18:18:58] 发送:
68 04 07 00 00 00 
EB90EB90(端口号:21站5)[2020/1/6 18:19:07] 接收:
68 12 E6 B7 00 00 0F 81 05 00 05 00 01 0C 00 95 42 03 00 00 
中的:
68 12 E6 B7 00 00 0F 81 05 00 05 00 01 0C 00 95 42 03 00 00
看看能否运行起来上述java代码,从数据中解析出要的内容。
去下载代码:
➜  java git clone https://github.com/mujave/iec_analysis.git
Cloning into 'iec_analysis'...
remote: Enumerating objects: 57, done.
remote: Counting objects: 100% (57/57), done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 226 (delta 17), reused 21 (delta 3), pack-reused 169
Receiving objects: 100% (226/226), 1.80 MiB | 15.00 KiB/s, done.
Resolving deltas: 100% (69/69), done.
然后想要去调试java代码。
记得之前IntelliJ IDEA是可以的,但是貌似太重了。
还是希望可以用VSCode,所以去试试:
【未解决】Mac中用VSCode调试java代码
然后继续调试:
再按2次跳出:
然后继续 单步进入
然后从字符解析出 int数组:
然后进入asdu的解析:
刚才解析出code=100,是:
CALL_COMMAND(100, "召唤命令"),
以及:6是激活:
抽空去:
【未解决】VSCode中调试java报错:Build failed do you want to continue
然后继续调试代码
*APCI应用规约控制信息*
启动字符[1 byte]: 0x68
应用规约数据单元(APDU)长度[2 byte]:14字节
控制域[3 byte - 6 byte]:
(I格式控制域标志)
发送序列号:0
接受序列号:1
*ASDU应用服务数据单元*
类属性标识符[7 byte]:召唤命令
可变结构限定词[8 byte]:可变结构限定词:0x01 SQ=0 信息元素地址非顺序 信息元素个数:1
传送原因[9 byte - 10 byte]:[T(test) bit7:0 未实验][P/N bit6:0 肯定确认][原因 bit5~bit0:激活]
应用服务数据单元公共地址[11 byte - 12 byte]:0001H
信息对象地址:0(000000H)
召唤限定词QOI:20
然后自己去把之前示例数据,多弄几个过来,看看能否都可以正常解析
然后先去:
【已解决】java中实现字符串数组
再去实现:
【已解决】java中for循环从字符串数组中获取单个字符串
不过接着要去:
【已解决】java代码println报错:The method println(String) in the type PrintStream is not applicable for the arguments (String, String)
继续写代码。
结果:
【已解决】java解析104数据出错异常:未知类型标识符 at com.iec.analysis.common.TypeIdentifier.getDescribe TypeIdentifier.java
然后又出现其他错误:
【已解决】java的com.iec.analysis.解析104出错:类型标识出错,无法解析信息对象
然后再去:
【部分解决】VSCode中System.out输出的内容不方便选择和全部复制
当然对于log的话,最好还是使用专门的log库。
所以去找找java的好用的log库:
【已解决】java中好用的log日志的库
另外顺带记录:
Maven Support, Java Package, and Dependency Management in Visual Studio Code
抽空好好看看。

转载请注明:在路上 » 【已解决】用Java代码解析104协议收到的数据

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
81 queries in 0.179 seconds, using 22.06MB memory