发布时间:2022-08-19 12:26
相信很多小伙伴都苦恼于PlantSimulation的学习资料太少,双方之间的交互成为我们科研或工程应用上的绊脚石。博主也正处于不断学习和摸索的阶段,今天给大家分享一下python与Plant的socket交互过程,希望大家有所收获。后续还会继续更新一些与Plant和python的相关内容。
Python与PlantSimulation的socket交互可以实现双方的实时数据通讯问题,不过传输为bytes格式传输。数据传输完成记得转码。
博主只走通了TCP的连接,如果有人懂得UDP连接的,希望也教一下博主。
其实可以任选python或plantsimulation作为客户端,博主因研究需要,将python设为客户端。plant设为服务器。
"""
Created on Sat December 14 21:00:00 2021
@author: Zhang Litong- Nanjing University of Aeronautics and Astronautics
"""
from socket import *
host = "127.0.0.1"
port = 30000
client = socket(AF_INET, SOCK_STREAM)
client.connect((host, port))
while True:
str='python_to_plant successful!!'
str=str.encode()
client.send(str)
response = client.recv(4096)
print(response)
if response: # 如果接收服务器信息失败,或没有消息回应
break
client.close()
小伙伴可以根据自己的需要将上述代码转换为函数。
上述代码中 host为服务器地址,127.0.0.1地址段代表本电脑自身的地址。
Plant里需要创建两个方法,socket配置如下图所示,这里我命名为MyServerSocket,记得启用socket。
SentMessage方法示例内容如下:使用时运行此方法!!传输大量数据可以将plant中的表直接转换为string格式,再用write指令发送。
var word:string:="Plant_to_python successful"
MyServerSocket.write(0,word)--0代表服务器
print "finished"
MyCallbackMethod方法示例内容如下:将此方法放到MyServerSocket的回调方法这里。
param channelNo: integer, message: string
print message
双方都创建完成之后,运行python就可以观察到,PlantSimulation里的控制台会有python的python_to_plant successful!! 字样,运行Plant的SentMessage方法,会在python输出plant_to_python successful 字样。
至此分享结束,欢迎大家交流学习。
Java开发学习(十三)----基于注解开发定义第三方bean及注解开发总结
程序员都想去国企?技术落后薪资低,躺平几年出来都找不到工作...
5天学会mysql_5天学完《MySQL必知必会》学习笔记之第四天
Springboot 使用Quartz定时器执行多个定时任务 配置篇
MindSpore报错"TypeError: parse() missing 1 required positional."
vuex 的基础:关于vuex中用户组件、dispatch、actions、commit、mutations、state的一些概念、关系的整理
这些Java基础知识,诸佬们都还记得嘛(学习,复习,面试均可)