# mavsdk傳輸 ###### tags: `迴圈動不了` ```python=1 var s = "python syntax highlighting"; import socket import time import asyncio from mavsdk import Syste(https://) 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!') async def run(): # Init the drone drone = System() await drone.connect(system_address="udp://:14550") try: async for eulerangle in drone.telemetry.eulerangle(): roll = eulerangle.roll_deg async for eulerangle in drone.telemetry.eulerangle(): pitch = eulerangle.pitch_deg async for position in drone.telemetry.position(): altitude = position.relative_altitude_m latitude = position.latitude_deg longitude = position.longitude_deg break async for battery in drone.telemetry.battery(): battery_remain = battery.remaining_percent battery_volt = battery.voltage_v break data = { #"rollVal" : roll, #"pitchVal" : pitch, #"yawVal" : cs.yaw, "latVal" : latitude, "lngVal" : longitude, #"heading" : cs.groundcourse, #"altVal" : altitude, #"altoffsethomeVal" : cs.altoffsethome, #"gpsstatusVal" : drone.telemetry.GpsInfo, #"gpshdopVal" : cs.gpshdop, #"satcountVal" : cs.satcount, #"altd100Val" : cs.altd100, #"altd1000Val" : cs.altd1000, #"airspeedVal" : drone.telemetry.FixedwingMetrics.airspeed_m_s, #"targetairspeedVal" : cs.targetairspeed, #"groundspeedVal" : drone.telemetry.velocity_ned(), #"verticalspeedVal" : cs.verticalspeed, #"wind_dirVal" : cs.wind_dir, #"wind_velVal" : cs.wind_vel, #"axVal" : drone.telemetry.VelocityBody.x_m_s, #"ayVal" : drone.telemetry.VelocityBody.y_m_s, #"azVal" : drone.telemetry.VelocityBody.z_m_s, #"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" : battery_volt, "battery_remainingVal" :battery_remain, #"armed" : drone.telemetry.Telemetry.armed } print(battery_remain) 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") if __name__ == "__main__": # Start the main function asyncio.ensure_future(run()) # Runs the event loop until the program is canceled with e.g. CTRL-C asyncio.get_event_loop().run_forever() ```