Python与PlantSimulation的socket交互

相信很多小伙伴都苦恼于PlantSimulation的学习资料太少,双方之间的交互成为我们科研或工程应用上的绊脚石。博主也正处于不断学习和摸索的阶段,今天给大家分享一下python与Plant的socket交互过程,希望大家有所收获。后续还会继续更新一些与Plant和python的相关内容。

Python与PlantSimulation的socket交互可以实现双方的实时数据通讯问题,不过传输为bytes格式传输。数据传输完成记得转码。

博主只走通了TCP的连接,如果有人懂得UDP连接的,希望也教一下博主。

声明:本博客只为记录和学术交流!!!

 1.python的socket TCP客户端建立

其实可以任选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地址段代表本电脑自身的地址。

2.PlantSimulation的socket服务器设置

Plant里需要创建两个方法,socket配置如下图所示,这里我命名为MyServerSocket,记得启用socket。

Python与PlantSimulation的socket交互_第1张图片

 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

3.运行实验

双方都创建完成之后,运行python就可以观察到,PlantSimulation里的控制台会有python的python_to_plant successful!! 字样,运行Plant的SentMessage方法,会在python输出plant_to_python successful 字样。

至此分享结束,欢迎大家交流学习。

你可能感兴趣的:(python,PlantSimulation,python,交互,服务器)