该程序产生一个Sin 数据,通过UDP Publish 发送,有一个Python 程序接收并显示。演示IEC61499 功能块与外部程序的通信。
4DIAC 功能块程序
Python 程序代码
import socket
import struct
from matplotlib import pyplot as plt
def bytesToFloat(h1,h2,h3,h4):
ba = bytearray()
ba.append(h1)
ba.append(h2)
ba.append(h3)
ba.append(h4)
return struct.unpack("!f",ba)[0]
HOST = '192.168.31.108'
PORT = 8888
BUFSIZ = 32
ADDR = (HOST,PORT)
udpSerSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udpSerSock.bind(ADDR)
x=[]
y=[]
for i in range(360):
x.append(i)
y.append(0)
plt.show()
while True:
data, addr = udpSerSock.recvfrom(BUFSIZ)
print ('Received bytes%d\n' ,len(data))
waveData=bytesToFloat(data[1],data[2],data[3],data[4])
for i in range(359):
y[i]=y[i+1]
y[359]=waveData
plt.clf()
plt.plot(x,y)
plt.pause(0.0005)