2

シリアル ポート経由で組み込みデバイスにファームウェアをロードするスクリプトがあります。このスクリプトは、シリアル ポートの /dev/xxx アドレスを引数として受け取ります。Bluetooth経由でこれを行う特別なセットアップがあります。Bluetooth経由でPythonのモジュールに接続できました。ただし、/dev/rfcomm0 のようなシリアル デバイスにローカル ソケットを登録する方法に関する例/情報が見つかりません。

####### ORCA Bluetooth uploader Script #######
#As an input argument the script needs the BT Adress of the racer.
#if none is given, the script looks for nearby devices.

import bluetooth
import subprocess
import sys
import os

 #Check if we received a BT ADDR
if sys.argv[-1] != 'bt_comm.py':
  #Define the Pin for binding and the connection Port
  #Our Pin is 0000
  pin = "0000"
  #The Bootoader is listening on Port 1 for a connection
  port = 1
  rfcomm_port = 0
  #The BT Addr we get from the command line input
  #TAG:TODO:Check the input for sanity
  addr = sys.argv[-1]

  #Build the Firmware image
  subprocess.call("python ./px_mkfw.py --image ../../Firmware_orca/Images/px4fmu.bin  >    orca_fw",shell=True)

  #Create an RFCOMM Socket
  server_sock=bluetooth.BluetoothSocket( bluetooth.RFCOMM )

  #Connect to the device
  server_sock.connect((addr, port))
  print "Connected to ",addr

ここで、server_sock を /dev/rfcomm0 に登録する方法が必要です

  #Call the px_uploader script
  subprocess.call("python ./px_uploader.py --port /dev/rfcomm%d orca_fw" % rfcomm_port,shell=True)

  #Close the connection
  server_sock.close()

else:
  #Look for BT Devices and print them
  discovered_devices = bluetooth.discover_devices(lookup_names = True, flush_cache = True, duration = 20)
  if discovered_devices is not None:
    for addr in discovered_devices:
      print "Found bluetooth device: ", addr
  else:
    print "Could not find any bluetooth device nearby"
4

0 に答える 0