2009-06-01 127 views
2

我正在嘗試編寫一個簡單的模塊來啓用發送短信。從藍牙設備獲取響應

文件:我使用藍牙使用下面的示例連接到移動bt-sendsms.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" 

我的問題是,我無法覈實或獲取短信的錯誤代碼發送或任何套接字操作。

任何轉診到正確的方向可以理解

+0

一些說明:什麼是非移動端的平臺/藍牙堆棧? – 2009-06-01 11:47:58

+0

請讓我們也有手機型號。 – 2009-06-01 18:44:18

回答

3

從Python你看起來像你打開任何舊RFCOMM通道,並希望它會奇蹟般地把AT命令並執行的消息。

我想(我可能是錯的),你需要連接到一個特定的配置文件/服務渠道,我認爲對於短信它是消息接入配置文件(MAP),它還沒有標準化,所以找到一個手機有了它,我不會說不可能,但非常非常不可能。否則,某些電話將支持用於消息傳遞的AT命令,但這超出了規範的範圍,例如我有權利通過撥號網絡配置文件(DUN)索尼-Ericson手機將支持它。

因此,首先,您的移動設備是否支持SMS的某些特定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]) 

一旦你找到了正確的服務/ profile文件,你的下一個問題將是談判安全(配對的PIN碼),我還沒有制定出如何做!

查看www.bluetooth.org滿足您所有的藍牙需求!