⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apitest

📁 这是Linux环境下的蓝牙源代码
💻
📖 第 1 页 / 共 2 页
字号:
#!/usr/bin/env pythonimport dbusimport dbus.decoratorsimport dbus.glibimport gobjectimport sysimport getoptfrom signal import *mgr_cmds = [ "InterfaceVersion", "ListAdapters", "DefaultAdapter" ]mgr_signals = [ "AdapterAdded", "AdapterRemoved" ]dev_cmds = [ "GetAddress",             "GetVersion",             "GetRevision",             "GetManufacturer",             "GetCompany",             "GetMode",             "SetMode",             "GetDiscoverableTimeout",             "SetDiscoverableTimeout",             "IsConnectable",             "IsDiscoverable",             "IsConnected",             "ListConnections",             "GetMajorClass",             "ListAvailableMinorClasses",             "GetMinorClass",             "SetMinorClass",             "GetServiceClasses",             "GetName",             "SetName",             "GetRemoteVersion",             "GetRemoteRevision",             "GetRemoteManufacturer",             "GetRemoteCompany",             "GetRemoteMajorClass",             "GetRemoteMinorClass",             "GetRemoteServiceClasses",             "GetRemoteClass",             "GetRemoteName",             "GetRemoteAlias",             "SetRemoteAlias",             "ClearRemoteAlias",             "LastSeen",             "LastUsed",             "DisconnectRemoteDevice",             "CreateBonding",             "CancelBondingProcess",             "RemoveBonding",             "HasBonding",             "ListBondings",             "GetPinCodeLength",             "GetEncryptionKeySize",             "DiscoverDevices",             "DiscoverDevicesWithoutNameResolving",             "CancelDiscovery",             "ListRemoteDevices",             "ListRecentRemoteDevices" ]dev_signals = [ "ModeChanged",                "NameChanged",                "MinorClassChanged",                "DiscoveryStarted",                "DiscoveryCompleted",                "RemoteDeviceFound",                "RemoteNameUpdated",                "RemoteNameFailed",                "RemoteAliasChanged"                "RemoteAliasCleared",                "RemoteDeviceConnected",                "RemoteDeviceDisconnectRequested",                "RemoteDeviceDisconnected",                "BondingCreated",                "BondingRemoved" ]dev_signals_filter = [ "/org/bluez/hci0", "/org/bluez/hci1",                       "/org/bluez/hci2", "/org/bluez/hci3",                       "/org/bluez/hci4", "/org/bluez/hci5",                       "/org/bluez/hci6", "/org/bluez/hci7" ]class Tester:    exit_events = []    dev_path = None    need_dev = False    listen = False    at_interrupt = None    def __init__(self, argv):        self.name = argv[0]        self.parse_args(argv[1:])        try:            self.dbus_setup()        except dbus.DBusException, e:            print 'Failed to do D-Bus setup: %s' % e            sys.exit(1)    def parse_args(self, argv):        try:            opts, args = getopt.getopt(argv, "hli:")        except getopt.GetoptError:            self.usage()            sys.exit(1)        for o, a in opts:            if o == "-h":                self.usage()                sys.exit()            elif o == "-l":                self.listen = True            elif o == "-i":                if a[0] == '/':                    self.dev_path = a                else:                    self.dev_path = '/org/bluez/%s' % a        if not (args or self.listen):            self.usage()            sys.exit(1)        if args:            self.cmd = args[0]            self.cmd_args = args[1:]    def dbus_dev_setup(self):        if not self.dev_path:            try:                self.dbus_mgr_setup()                self.dev_path = self.manager.DefaultAdapter()            except dbus.DBusException, e:                print 'Failed to get default device: %s' % e                sys.exit(1)        try:            obj = self.bus.get_object('org.bluez', self.dev_path)            self.device = dbus.Interface(obj, 'org.bluez.Adapter')        except dbus.DBusException, e:            print 'Failed to setup device path: %s' % e            sys.exit(1)    def dbus_dev_sig_setup(self):        try:           for signal in dev_signals:                for path in dev_signals_filter:                    self.bus.add_signal_receiver(self.dev_signal_handler,                                             signal, 'org.bluez.Adapter',                                             'org.bluez', path,                                             message_keyword='dbus_message')        except dbus.DBusException, e:            print 'Failed to setup signal handler for device path: %s' % e            sys.exit(1)    def dbus_mgr_sig_setup(self):        try:            for signal in mgr_signals:                self.bus.add_signal_receiver(self.mgr_signal_handler,                                         signal,'org.bluez.Manager',                                         'org.bluez', '/org/bluez')        except dbus.DBusException, e:            print 'Failed to setup signal handler for manager path: %s' % e            sys.exit(1)    def dbus_mgr_setup(self):        self.manager_obj = self.bus.get_object('org.bluez', '/org/bluez')        self.manager = dbus.Interface(self.manager_obj, 'org.bluez.Manager')    def dbus_setup(self):        self.bus = dbus.SystemBus()    def usage(self):        print 'Usage: %s [-i <dev>] [-l] [-h] <cmd> [arg1..]' % self.name        print '  -i <dev>   Specify device (e.g. "hci0" or "/org/bluez/hci0")'        print '  -l         Listen for events (no command required)'        print '  -h         Show this help'        print 'Manager commands:'        for cmd in mgr_cmds:            print '\t%s' % cmd        print 'Adapter commands:'        for cmd in dev_cmds:            print '\t%s' % cmd    #@dbus.decorators.explicitly_pass_message    def dev_signal_handler(*args, **keywords):        dbus_message = keywords["dbus_message"]        print '%s - %s: ' % (dbus_message.get_member(), dbus_message.get_path()),        for arg in args[1:]:            print '%s   ' % arg,        print    #@dbus.decorators.explicitly_pass_message    def mgr_signal_handler(*args, **keywords):        dbus_message = keywords["dbus_message"]        print '%s: ' % dbus_message.get_member()        for arg in args[1:]:            print '%s   ' % arg,        print    def signal_cb(self, sig, frame):        print 'Caught signal, exiting'        if self.at_interrupt:            self.at_interrupt()        self.main_loop.quit()    def call_mgr_dbus_func(self):        if self.cmd == 'InterfaceVersion':            try:                print self.manager.InterfaceVersion()            except dbus.DBusException, e:                print 'Sending %s failed: %s' % (self.cmd, e)        if self.cmd == 'ListAdapters':            try:                devices = self.manager.ListAdapters()            except dbus.DBusException, e:                print 'Sending %s failed: %s' % (self.cmd, e)                sys.exit(1)            for device in devices:                print device        elif self.cmd == 'DefaultAdapter':            try:                print self.manager.DefaultAdapter()            except dbus.DBusException, e:                print 'Sending %s failed: %s' % (self.cmd, e)                sys.exit(1)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -