2013-03-17 23 views
5

Ubuntu 12.04 ile Arduino'ya bağlı bir JY-MCU bluetooth seri modülü arasında seri iletişim yapmaya çalışıyorum.İşleme/dev/rfcomm0 işleminde seri iletişim nasıl yapılır

Ben/dev/rfcomm0 seri port ile iletişim kurmak için macun kullanabilirsiniz

rfcomm0 { 
# # Automatically bind the device at startup 
    bind yes; 
# 
# # Bluetooth address of the device  
    device 00:12:11:19:08:54 
# # RFCOMM channel for the connection 
    channel 1; 
# # Description of the connection 
    comment "Linvor Bluetooth Module"; 
} 

/etc/bluetooth/rfcomm.conf

bu yapılandırmayı oluşturduk ve bu mükemmel çalışıyor.

Ancak, birçok denemeye rağmen, herhangi bir şekilde işlenen İşleme'de nasıl bir seri bağlantı noktası oluşturacağımı göremiyorum. Örneğin

: Hiç

println(Serial.list()); 

baskılar şey.

Ben çalıştırırsak: Sonra ararsanız

[email protected] 

Ama:

:

myPort.write('9'); 

istisna almak

String portName = "/dev/rfcomm0"; 
myPort = new Serial(this, portName, 9600); 
println(myPort); 

ben monitörden de görüyoruz

java.lang.NullPointerException 
    at processing.serial.Serial.write(Serial.java:572) 
    ... 

Bunun neden başarısız olduğunu anlayamıyorum. Tom Igoe'un “Making Things Talk” un tüm yönergelerini takip ettim, ama bu sadece söylediği gibi çalışmıyor ...

Herhangi bir yardım harika olurdu! Sadece bir şey

sayesinde

Bob

+0

Eğer myPort gerçekten oluşturuluyorsa hata ayıklayabilir misiniz? Belki bir şey yazmak istediğinizde myPort içinde bir şey boştur ve istisna veriyor. Ayrıca, her iki tarafta bir terminal kullanmayı deneyin, böylece bağlantının doğru kurulduğunu biliyorsunuz. Arduino tarafında, eğer varsa, başka bir linux aygıtı kullanabilirsiniz. –

+0

İşlemde gerçekten cahil değilim ... Python'da veya macunla rutin bir yazı yazıyorsam, ancak işimde sadece arduino ile iletişim kurabilirim, bu benim hedefim ... – gratefulfrog

+0

Bir işlem izleyicisi gibi görünüyor. Buna aşina, ne yazık ki. Sudo/admin haklarına mı ihtiyacınız var? Eğer yaparsan daha önce hata yapardım. –

cevap

0

zihnimde açıldı. Kanal 1'in kullanılmasına bağlı olarak benzer sorunlar yaşadım. Halihazırda kullanımda olan bir kanala bağlanırsanız, kötü şeyler olabilir.

sdptool browse local 

Ubuntu cihazınızda hangi kanalları kullanabileceğinizi görmek için bu komutu kullanın.

+0

aracılığıyla seri ile ilgili yanlış talimatlar verir, Teşekkürler, ama bu hala yardımcı olmaz. Rtcomm0 cihazını Putty'den veya python bluethooth bluez paketi ile görebiliyorum, ama işlenemiyorum ... Eminim ki bu benim kendi cehaletimdir, fakat ileriye doğru bir yol görmüyor ... – gratefulfrog

8

Yüksek ve alçak aramaları yaptıktan sonra, bu çalışmayı yaptım. Temel sorun, işlemin seri iletişim için rxtx java kütüphanesini (RXTX-2.1-7) kullanmasıdır.

RXTX wiki diyor ki:

böyle 'ttyS', 'ttym' olarak bilinen iyi önekleri kümesi herhangi eşleşen dosyalar için tarama/dev tarafından portları tespit etmeye çalışır rxtx

" ve böylece 2.2 'ttyUSB' ve. "beri

ve bluetooth cihazı rfcomm* adlı beri tespit edilemez

.

hile RXTX aptal (henüz atanmamış bir ttyS aygıtı kullanın) bir sym bağlantısını oluşturmaktır: Sonra

$ sudo ln -s /dev/rfcomm0 /dev/ttyS99 

bağlamak:

$ sudo rfcomm connect 0 
Connected /dev/rfcomm0 to 00:12:11:19:08:54 on channel 1 
Press CTRL-C for hangup 

Bu noktada kırmızı anda JY-MCU'da led katı hale gelir ve işleme bunu algılayabilir:

println(Serial.list()); 

çıktısı:

[0] "/dev/ttyACM0" 
[1] "/dev/ttyS99" 

Bu nedenle, seri iletişim çalışabilir. Özetlemek gerekirse

, aşağıdaki işlem bir işlem komut dosyası BlueZ linux çerçevesinde bir JY-MCU cihazı ile bir seri port üzerinden

Bir defalık kurulum iletişim sağlayacak:

  1. gücü yukarı JY-MCU,

  2. donanım adresini almak için aşağıdaki komutu kullanın benim 00: 12: 11: 19: 08: 54

    $ hcitool scan 
    
  3. /etc/bluetooth/rfcomm.conf dosyasını oluşturmak için bunu kullanın;

    $ cat /etc/bluetooth/rfcomm.conf 
    rfcomm0 { 
        bind yes; 
        device 00:12:11:19:08:54; 
        channel 1; 
        comment "Linvor Bluetooth Module"; 
    } 
    
  4. kullanım BlueMan JY-MCU eşleştirmek: Eğer ben RFCOMM cihaz için 0 seçti dikkat edeceğiz, daha sonra bağlantı için bu gereklidir.

Eğer sym bağlantı oluşturmak JY-MCU

  1. kullanmak istediğiniz her zaman:

    $ sudo ln -s /dev/rfcomm0 /dev/ttyS99 
    
  2. JY-MCU bağlanmak:

    $ sudo rfcomm connect 0 
        Connected /dev/rfcomm0 to 00:12:11:19:08:54 on channel 1 
        Press CTRL-C for hangup 
    
  3. şimdi bir proc çalıştırabilirsiniz Senaryoyu ESSING ve ile JY-MCU kodu bağlamak:

    String portName = "/dev/ttyS99"; 
    myPort = new Serial(this, portName, 9600); 
    
  4. işleme komut dosyasını çalıştırdıktan sonra, JY-MCU bağlantısını kesmek için komut satırında CTRL C emin olun.

Bunu yapmalı! Ciao, Bob

+0

Bunu bildirdiğiniz için teşekkürler! :) –

+0

Teşekkürler, adımlarını takip ettim. İşleme çizimini bir kez yürütebiliyorum, sonra iletişim kaybediliyor ve programı her yeniden çalıştırdığımda, Port Meşgul istisnası veriyor. Herhangi bir tavsiye? – UserK