创建新驱动程序的策略
请参阅其他现有模块,了解其中部分内容的实现方式。
准备新的协议模块
为你的协议创建一个新的
protocol模块。为新模块创建
pom.xml文件。在
src/main/release/中创建一个新的mspec文件,其中只包含一两个虚拟类型。在
src/main/java中创建一个新的Protocol类,实现org.apache.plc4x.plugins.codegenerator.protocol.Protocol。getName()返回的值将用于 maven 驱动代码生成。
创建一个名为
src/main/resources/META-INF/services/org.apache.plc4x.plugins.codegenerator.protocol.Protocol的新文件,并在其中列出新的协议类。测试能否成功构建新的协议模块。
准备新的驱动模块
在
plc4j/drivers下创建一个新的driver模块为新模块创建
pom.xml文件。- 务必添加对你的协议模块的 maven 依赖。
- 务必确保其中包含
update-generated-codeprofile。 - 务必引用你在协议模块中使用的协议名称。
在
src/main/java中创建Driver类,实现org.apache.plc4x.java.api.PlcDriver。创建一个名为
src/main/resources/META-INF/services/org.apache.plc4x.java.api.PlcDriver的文件,并在其中列出新的驱动类。测试能否成功构建新的驱动模块,并且代码生成正常工作。
开始实现协议解析器与序列化器
抓取你想要为其创建驱动的通信数据。
在 WireShark 中打开抓包文件
开始在你的 mspec 文件中定义你看到的类型
在协议模块的
src/test/resources目录中创建一个ParserSerializerTestsuite.xml文件。为录制文件中的每个数据包添加空的测试用例:在 Wireshark 中将 TCP/UDP/其他协议的负载以
hex-stream形式复制出来,并粘贴到测试用例的raw元素中。在驱动模块中,在
src/test/java中创建一个继承org.apache.plc4x.test.parserserializer.ParserSerializerTestsuiteRunner的 ParserSerializer 测试,并引用你的协议模块的ParserSerializerTestsuite.xml文件。迭代实现处理抓包文件所需的全部
mspec类型:- 在
mspec文件中添加/更新类型 - 重新构建协议模块
- 重新构建驱动模块(启用
update-generate-codeprofile) - 运行 ParserSerializer 测试
- 在
开始实现驱动逻辑
一旦你能够处理所有已观测通信的抓包文件,就可以开始实现驱动协议逻辑了。
TODO:继续编写这部分内容。
评论
登录后参与评论
KnowForge