发布时间:2022-09-12 18:30
相信很多小伙伴都苦恼于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 字样。
至此分享结束,欢迎大家交流学习。