# 經由mission planner 的傳輸 ###### tags: ver beta ```python=1 # Artificial Data provider for the Aircraft_YEE implementation # sends artificial data to an specified UDP port import socket import time UDP_IP = "127.0.0.1" #standard ip udp (localhost) UDP_PORT =50020 #chosen port to OpenMCT (same as in telemetry server object) MESSAGE = "23,567,32,4356,456,132,4353467" #init message data = 0 #artificial data keys = [ # those are the keys for the Aircraft_YEE, which are declared in the dictionary on OpenMCT side # since they are not sent, we have ti initialize them here "rollVal","pitchVal","yawVal","latVal","lngVal","heading","altVal","gpsstatusVal","airspeedVal","groundspeedVal","azVal","battery_voltageVal","battery_remainingVal" ] #print(len(topics)) data = 0 # initiate socket and send first message sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # Internet, UDP try: sock.sendto(MESSAGE.encode(), (UDP_IP, UDP_PORT)) except: print('Initial message failed!') i = 0 try: while True: # Counter to check for concurrency # if i == 1000: # i = 0 # else: # i += 1 #choose your values (more available, check MP documentation https://ardupilot.org/planner/docs/using-python-scripts-in-mission-planner.html) data = { "rollVal" : cs.roll, "pitchVal" : cs.pitch, #"yawVal" : cs.yaw, "latVal" : cs.lat, "lngVal" : cs.lng, "heading" : cs.groundcourse, "altVal" : cs.alt, #"altoffsethomeVal" : cs.altoffsethome, "gpsstatusVal" : cs.gpsstatus, #"gpshdopVal" : cs.gpshdop, #"satcountVal" : cs.satcount, #"altd100Val" : cs.altd100, "altd1000Val" : cs.altd1000, "airspeedVal" : cs.airspeed, #"targetairspeedVal" : cs.targetairspeed, "groundspeedVal" : cs.groundspeed, #"verticalspeedVal" : cs.verticalspeed, #"wind_dirVal" : cs.wind_dir, #"wind_velVal" : cs.wind_vel, "axVal" : cs.ax, "ayVal" : cs.ay, "azVal" : cs.az, #"gxVal" : cs.gx, #"gyVal" : cs.gy, #"gzVal" : cs.gz, ### Servo Channels Input # "chx1inVal" : cs.chx1in, # "chx2inVal" : cs.chx2in, # "chx3inVal" : cs.chx3in, # "chx4inVal" : cs.chx4in, # "chx5inVal" : cs.chx5in, # "chx6inVal" : cs.chx6in, # "chx7inVal" : cs.chx7in, # "chx8inVal" : cs.chx8in, ### Servo Channels Output # "chx1outVal" : cs.chx1out, # "chx2outVal" : cs.chx2out, # "chx3outVal" : cs.chx3out, # "chx4outVal" : cs.chx4out, # "chx5outVal" : cs.chx5out, # "chx6outVal" : cs.chx6out, # "chx7outVal" : cs.chx7out, # "chx8outVal" : cs.chx8out, "battery_voltageVal" : cs.battery_voltage, "battery_remainingVal" : cs.battery_remaining, "armed" : cs.armed } timeStamp = time.time() for key, value in data.items(): MESSAGE = "{},{},{}".format(key, value, timeStamp) print(MESSAGE) print('\n') # Pumping out the values sock.sendto(MESSAGE, (UDP_IP, UDP_PORT)) time.sleep(0.01) except KeyboardInterrupt: print("Over") ```