Kısa cevap evet, Bluetooth'u eşleştirmeden kullanmak mümkündür. Ancak yine de her zaman noktadan noktaya bir bağlantı olacak. Eşleştirmeyi kullanmamaya ilişkin olası sorunlar da vardır (esas olarak güvenlik eksikliği ve bu çalışma modu için iyi destek eksikliği). Bunun yapılıp yapılmayacağı alıcınızın Bluetooth donanımına bağlıdır. Bluetooth düşük enerji yerine 'standart' Bluetooth kullandığınızı farz ediyorum (bu tamamen farklı ve özellikle cep telefonlarında iyi bir şekilde desteklenmiyor). Düşük enerjili kullanıyorsanız vericiniz düşük enerjili bir cihaz olacak ve alıcının mesajları dinleyen bir şey olacaksınız. Bunu kullanmadım, bu yüzden size bu konuda herhangi bir bilgi veremem, bu yüzden 'normal' Bluetooth'a bağlı kalacağım.
Gördüğüm gibi aşılması gereken iki konu var:
Pim eşleştirmesini kapatma
Otomatik bağlantı başlatma
Bu gerçekten ilgilendiğiniz şey olduğu izlenimini edindiğimde ilk 2 numarayı ele alacağım (özür dilerim). Bunu bir telefondan veya başka bir 'ana' cihazdan yapmak için, uzak Bluetooth cihazlarını sürekli aramak zorunda kalır. Uygulanabilir olanı tanıdığında, otomatik olarak ona bağlanacak ve ne yapılması gerekiyorsa onu başlatacak bir veri veya başka bir veri gönderecektir. Diğerleri bu işlem için Bluetooth dostu adın kullanılmasından bahsetmiştir ve bu kesinlikle bunu yapmanın bir yoludur. Bluetooth dostu adlarla ilgili deneyimlerim (özellikle de yalnızca Microsoft Bluetooth yığınıyla değil), bu kadar sağlam olmadıkları bir tarama yöntemi değil. Bluetooth Device Class'ı kullanmak için muhtemelen çok daha iyisini yaparsınız, benzersiz cihaz adresiyle aynı anda yayınlanır. Bu cihaz sınıfı, cep telefonları, dizüstü bilgisayarlar, masaüstü bilgisayarlar vb. Şeyler için önceden belirlenmiş sayıda girişe sahiptir. Standart olmayan cihaz sınıflarından birini kullanıyorsanız (örneğin, 00:00:00), Bluetooth cihazlarının büyük çoğunluğunu filtrelemek için. Ardından kalan cihaza bağlanabilir ve işleminizi başlatmak için bir tür istek onay iletişimi yapabilirsiniz. Bunu uygun şekilde gizletirseniz (veya dost adını ikinci bir değerlendirme olarak kontrol edin), kalan yanlış cihazları örtük olarak filtrelemelidir.
1 numaraya gelince, geçici bağlantılar oluşturuyorsanız pin eşleştirme özellikle mantıklı değildir, ancak yine de yapmak istediğinizi elde etmenin en iyi yolu olabilir. Pim eşlemesinden kaçınmak istiyorsanız, kapatılabilir ve eşleştirilmemiş bir bağlantı yapılabilir. Bunu nasıl yapacağınız Bluetooth alıcısı uygulamasına bağlıdır, ancak işte birkaç örnek:
- Bluegiga WT12: SET BT AUTH * komutunu kullanın.
- Ulusal Yarı İletken LMX9838: GAP_SET_SECURITY_MODE komutunu güvenlik modu 1 ile kullanın (eşleştirme yok)
vb.
Cihaza bağlanma daha sonra eşleştirmeden yapılabilir. Bağlantıyı başlatan cihaz alıcıyla aynıysa, bu çok basittir. Windows PC kullanıyorsanız, zahmetli bir şekilde yeni bir bağlantı süreci oluşturabilir ve "pim kullanmayın" ı seçebilirsiniz, ancak Windows muhtemelen bağlandığınızda hala bir pim isteyecektir (genellikle 0000 çalışır, ancak çok lapa lapa). Pybluez ile python kullanıyorsanız, çok basit:
import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))
Ancak, bir cep telefonundan bağlanmak istiyorsanız, çok daha karmaşık bir hale gelir. Android SDK, eşlenmemiş bağlantıları gerçekten desteklemiyor gibi görünüyor:
Mevcut Android Bluetooth API'leri, bir RFCOMM bağlantısı kurulmadan önce cihazların eşleştirilmesini gerektirir. (Bluetooth API'leri ile şifreli bir bağlantı başlattığınızda eşleştirme otomatik olarak yapılır.)
( http://developer.android.com/guide/topics/connectivity/bluetooth.html adresinden ). Bunun için yollar var, ama çok karmaşıklar ve iyi desteklenmiyorlar. Bir iPhone kullanıyorsanız, Bluetooth bağlantısı tamamen farklı bir solucanlar kutusudur (lisanslama vb.), Bu yüzden şimdilik bırakacağım.
Bütün bunları söyledikten sonra, hemen hemen her API şimdiye verir eşleştirme baktım vegerçekleştirilecek eşleştirme (önemli python / pybluez istisnası dışında, ancak bu Windows'taki Microsoft yığınının etrafındaki bir sarmalayıcıdır, bu nedenle her zaman düşük seviye işlevini doğrudan çağırabilirsiniz). Bu nedenle, doğru cihaz sınıfına sahip bir cihaz tespit ettiğinizde neden sadece otomatik olarak eşleşmiyorsunuz (önceden tanımlanmış bir eşleştirme pin numarasıyla), bağlantıyı yap, gerekli olan verileri gönder, bağlantıyı kes ve sonra da eşleşmeyi kaldır. Bunların hiçbiri herhangi bir kullanıcı müdahalesi gerektirmez ve binlerce kez yapmadığınız sürece (potansiyel olarak EEPROM aşınmasına neden olabilir), size herhangi bir soruna neden olmamalıdır. Ayrıca, Bluetooth kullanmanın standart dışı bir yöntem olarak algılananlarla iyi çalışması için farklı API'ler almaya çalışırken size büyük bir zorluk kazandırır.