从蓝牙设备获取响应

2024-09-28 22:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图写一个简单的模块,将使发送短信。我使用蓝牙连接到手机,使用以下示例:

文件:bt-发送短信.py在

import bluetooth

target = '00:32:AC:32:36:E8' #  Mobile address 
print "Trying to send SMS on %s" %  target

BTSocket = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
BTSocket.connect((target, 2)) # BT Address
BTSocket.send('ATZ\r')
BTSocket.send('AT+CMGF=1\r')
#sockfd.send('AT+CSCA="+972547716507"\r') # This line changes the SMSC address - do not modify unless required 
BTSocket.send('AT+CMGS="+972547877763"\r') # TO Phone Number
BTSocket.send('This is a test message - port 2.\n')
BTSocket.send(chr(26)) # CTRL+Z

print "SMS sent"
sockfd.close()
print "Closed" 

我的问题是我无法验证或获取SMS发送或任何套接字操作的错误代码。在

任何推荐给正确的方向将不胜感激


Tags: 模块send示例targetaddressthissms短信
1条回答
网友
1楼 · 发布于 2024-09-28 22:21:24

在Python中,您看起来就像打开了任何旧的RFCOMM通道,并希望它能够神奇地接受AT命令并执行消息传递。在

我认为(我可能是错的)你需要连接到一个特定的配置文件/服务频道,我认为对于短信来说,这是消息传递访问配置文件(MAP),这还没有标准化,所以要找到一个有它的手机,好吧,我不会说不可能,但非常,非常不可能。否则,有些手机将支持AT命令的消息,但这是不在规格范围内的,例如,我有权索尼爱立信手机将支持它通过拨号网络配置文件(DUN)。在

那么,首先,您的移动设备是否支持一些不合规格的AT命令,如果是,在某个配置文件上还是在一个特别的专有配置文件上?接下来,您需要连接到该配置文件。在

您可以浏览支持的服务等。。。使用下面的Python(检查所有周围的BT设备)。。。在

import bluetooth

def whats_nearby():
    name_by_addr = {}
    nearby = bluetooth.discover_devices(flush_cache=True)
    for bd_addr in nearby:
        name = bluetooth.lookup_name( bd_addr, 5)
        print bd_addr, name
        name_by_addr[bd_addr] = name
    return name_by_addr

def what_services( addr, name ):
    print " %s - %s" % ( addr, name )
    for services in bluetooth.find_service(address = addr): 
        print "\t Name:           %s" % (services["name"]) 
        print "\t Description:    %s" % (services["description"]) 
        print "\t Protocol:       %s" % (services["protocol"]) 
        print "\t Provider:       %s" % (services["provider"]) 
        print "\t Port:           %s" % (services["port"]) 
        print "\t service-classes %s" % (services["service-classes"])
        print "\t profiles        %s" % (services["profiles"])
        print "\t Service id:  %s" % (services["service-id"]) 
        print "" 

if __name__ == "__main__":
    name_by_addr = whats_nearby()
    for addr in name_by_addr.keys():
        what_services(addr, name_by_addr[addr])

一旦你找到了正确的服务/配置文件,你的下一个问题将是协商安全性(配对的pin码),我还没有想出怎么做!在

查看www.bluetooth.org了解所有蓝牙需求!在

相关问题 更多 >