該程序產生一個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)