ping

Ping ํ…Œ์ŠคํŠธ

  • ์กฐ์ข…๊ธฐ์— Ping์„ ๋ณด๋‚ด๊ณ , Ack ์‘๋‹ต์„ ๋ฐ›์•„์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

  • sendPing() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— sleep() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ๊ณผ์ •์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ Ack๋ฅผ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 1์ดˆ ๋™์•ˆ ์‘๋‹ต์ด ์—†์œผ๋ฉด ์ˆ˜์‹ ์ฒ˜๋ฆฌ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒŒ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

from time import sleep

from e_drone.drone import *
from e_drone.protocol import *


if __name__ == '__main__':

    drone = Drone(False)
    drone.open()

    drone.sendPing(DeviceType.Controller)

    timeStart = time.time()

    while True:
        sleep(0.01)
        dataType = drone.check()

        if dataType == DataType.Ack:
            ack = drone.getData(DataType.Ack)
            print("{0} / {1} / {2:04X}".format(ack.dataType.name, ack.systemTime, ack.crc16))
            print("T: {0}".format(time.time() - timeStart))
            break;

        # 1์ดˆ ๋™์•ˆ ์‘๋‹ต์ด ์—†์„ ๊ฒฝ์šฐ ์‘๋‹ต ํ™•์ธ์„ ๋น ์ ธ๋‚˜๊ฐ
        if time.time() > timeStart + 1:
            print("Time Over")
            break;

    drone.close()

Ping ํ…Œ์ŠคํŠธ(์ด๋ฒคํŠธ ํ•จ์ˆ˜ ๋“ฑ๋ก)

  • ์กฐ์ข…๊ธฐ์— Ping์„ ๋ณด๋‚ด๊ณ , Ack ์‘๋‹ต์„ ๋ฐ›์•„์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

  • ์ˆ˜์‹  ๋ฐ›์„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด setEventHandler(DataType, function)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋“ฑ๋กํ•˜๋ฉด ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•˜์„ ๋•Œ ๋ฏธ๋ฆฌ ์—ฐ๊ฒฐํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

  • ๋งˆ์ง€๋ง‰ sleep(0.1)์€ Ping ์ „์†ก ํ›„ Ack ์‘๋‹ต์ด ๋“ค์–ด์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜์˜€์Šต๋‹ˆ๋‹ค.

from time import sleep

from e_drone.drone import *
from e_drone.protocol import *


def eventAck(ack):
    print("eventAck()")
    print("{0} / {1} / {2:04X}".format(ack.dataType.name, ack.systemTime, ack.crc16))


if __name__ == '__main__':

    drone = Drone()
    drone.open()

    # ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง ํ•จ์ˆ˜ ๋“ฑ๋ก
    drone.setEventHandler(DataType.Ack, eventAck)

    # Ping ์ „์†ก
    drone.sendPing(DeviceType.Controller)
    
    sleep(0.1)

    drone.close()

Last updated