2016-03-21 23 views
1

私はODROID(Ubuntu 14.04がインストールされたシングルボードコンピュータ)とシリアル通信するためにArduino Nanoを使用しています。 Arduinoのコード:ODROIDでpython-serial OSError:[Errno 11]リソースが一時的に利用できません

void setup() { 
    Serial.begin(9600); // set the baud rate 
    Serial.println("Ready"); // print "Ready" once 
} 
void loop() { 
    char inByte = ' '; 
    if(Serial.available()){ // only send data back if data has been sent 
    char inByte = Serial.read(); // read the incoming data 
    Serial.println(inByte); 
} 
    delay(100); // delay for 1/10 of a second 
} 

ザ・Pythonコード:

#!/usr/bin/env python 

from time import sleep 
import serial 
ser = serial.Serial('/dev/LIDAR', 9600, timeout=1) # Establish the connection on a specific port 

sleep(1) 
print "Arduino is initialized" 

counter = 32 # Below 32 everything in ASCII is gibberish 

while True: 
    if (ser.inWaiting()>0): 
     counter +=1 
     ser.write(str(chr(counter))) # Convert the decimal number to ASCII then send it to the Arduino 
     print ser.readline() # Read the newest output from the Arduino 
     sleep(.1) # Delay for one tenth of a second 
     if counter == 255: 
      counter = 32 

ser.close 

トレースバック(最後の直近):次に

File "./serial_test1.py", line 16, in <module>   
    print ser.readline() # Read the newest output from the Arduino  
File "/usr/lib/python2.7/dis-package/serial/serialposix.py", line 43, in read 
    buf = os.read(self.fd, size-len(read))  
OSError: [Errno 11]Resource temporarily unavailable 

は、私は、印刷後にいくつかの値を、この問題を持っていました、私はこの問題が現在の時点で利用可能なデータがないかもしれないことを知っています。しかし、どうすればこの問題を把握できますか?ご協力いただきありがとうございます。

+1

スタックトレース全体を提供してください。 –

+0

こんにちはMr.Eさん、スタックトレースを更新してください。アドバイスをお願いします。どうも – crazymumu

答えて

0

これがODROIDで機能するかどうかわかりませんが、similar problem with Raspberry PIについての投稿が見つかりました。その記事の中で存在答えの1 redirected to this link

それは問題はあなたがあなた自身の目的

のためにそれを使用しようとすると、競合システムコンソールを使用するようにデフォルトで使用されたラズベリーパイシリアルポート、によって引き起こされると言います

コンソールのシリアルポールを無効にするには、ファイル/etc/inittabを編集して、T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100のコメントを書き込む必要があります(これは、pythonのように、最初の行に#とコメントしています)。あなたはODROIDを再起動しなければなりません。それはうまくいくはずです

私はあなたがコマンドライン(これはsshを使って示唆します)にアクセスするためにシリアルポートを置き換えることができる方法についてもう少し説明します。ラズベリーPI(そしてODROIDが同様に動作することを前提とする)は、ブート時にArduinoが受信するシリアルポートを介してメッセージを送信します。あなたはそのメッセージを削除することができ、それはそこには、これはあなたのシリアルデバイスは、OS自身が使用しているので、あなたはこのエラーを受信して​​いるあなたに

1

を助け

・ホープ説明しています。このデバイスを使用するには、OSを停止する必要があります。

シリアルgettyは今のサービスであり、あなたが停止および/またはそれを無効にする必要があります。私のネイティブシリアルデバイスIDがttyAMA0ある

sudo systemctl stop [email protected] 
sudo systemctl disable [email protected] 

注意を。

シリアルサービスを永久に無効にするには、 sudo systemctl mask [email protected] この場合、再起動してもシリアルサービスは開始されません。

関連する問題