2009-06-01 48 views
2

私はSMSを送信できるようにする簡単なモジュールを作成しようとしています。私は例の下に使用して携帯電話に接続するには、Bluetoothを使用して:Bluetoothデバイスからの応答を取得

ファイル: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" 

私の問題は、私が送るSMSのエラーコードを確認するか、または取得することができませんよということですまたはソケット操作のいずれかを実行します。

右方向への任意の紹介は、あなたが任意の古いRFCOMMチャネルを開き、それが魔法のようにATコマンドを取るとメッセージングを行うことを望んでいるように見えるのPythonから

+0

いくつかの説明:非モバイル側のプラットフォーム/ Bluetoothスタックとは何ですか? –

+0

携帯電話の機種もお試しください。 –

答えて

3

を理解されるであろう。

特定のプロファイル/サービスチャンネルに接続する必要があると思うし(私は間違っているかもしれない)、SMSのためにはメッセージングアクセスプロファイル(MAP)だと思います。それで、私は不可能だとは言わないが、非常に起こりそうもない。それ以外の場合、一部の電話機はメッセージング用のATコマンドをサポートしますが、これは仕様外です。私はソニー・エリクソンの電話機がダイヤルアップネットワークプロファイル(DUN)を通じてそれをサポートするという権限を持っています。

あなたのモバイルデバイスは、SMSの仕様外のATコマンドをサポートしていますか?もしそうなら、特定のプロファイルまたは特別なプロプライエタリのATコマンドをサポートしていますか?次に、そのプロファイルに接続する必要があります。

あなたは正しいサービス/プロファイルを見つけたら、あなたの次の問題は交渉になります

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]) 

...次のPython(小切手すべての周囲のBTデバイス)を使用して...など、サポートサービスを閲覧することができますセキュリティ(ペアリングのためのピンコード)ですが、私はまだやり方を工夫していません!

すべてのBluetoothのニーズについては、www.bluetooth.orgを参照してください。

+0

ご回答いただきありがとうございますが、私は発見の問題をカバーしました。私の問題が接続とATコマンドに有効な応答を得ることである前に書いたように、 – eLAN

+0

私はpybluez(http://code.google.com/p/pybluez/) – eLAN

+0

を使用します。したがって、モバイルデバイスがこれらのATをサポートしていると確信していますRFCOMMチャネルのコマンド? –

関連する問題