我需要通过TCP套接字发送一个结构(由布尔,整数和字符串组成)。发送方(PLC)在CoDeSys中实现,接收方在Java中实现。
一种解决方案是使用数据创建一个大字符串,通过套接字发送它并用Java进行插入。但这似乎非常低效(因为结构有50多个变量)。
是否有其他方式发送结构(例如:在Java中有序列化,但在CoDeSys中不支持)?
如果没有,那么格式化数据的好方法是什么? (e.g.: "variableName1:value1;variableName2:value2;...")
是否有任何“技巧”自动将字符串中的值分配给Java端的对象?
答案 0 :(得分:0)
我个人使用XML。地球上每一种体面的语言都可以解析它,而且在Codesys中创造它并不荒谬。
您还忘记了序列化数据可能包含特定于平台的奇怪数据,例如Java double
与Codesys REAL
。这些可能并不总是在不考虑的情况下以序列化方式传递和平。字节交换问题也取决于平台。
有针对Codesys的Base64编码/解码库,尽管这比我认为的XML效率要高得多。
另外,如果你真的担心效率问题,那就是XML ......谁说它必须格式良好。只要您知道您的语言可以将它们粘合在一起就会有所作为。