2017-04-11 66 views
0

我一直在研究需要通過USB與(Debian)Linux NAS進行通信的Arduino項目。Arduino USB與Linux的兼容性

它與Windows終端完美可靠地通信。

與Linux的通信非常糟糕。

這裏是我此通信測試應用程序:

void setup(void) { 
    Serial.begin(9600, SERIAL_8N1); 
} 

void loop(void) { 
    do { 
    Serial.println("1234567890"); 

    delay(1000); 
    } while (true); 
} 

OSEPP納米的Arduino到Windows: 隨着OSEPP納米的Arduino,通信看起來是這個樣子的Windows:

1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
(forever, ok) 

OSEPP Nano Arduino到QNAP NAS上的Linux: 使用OSEPP Nano Arduino,通信看起來像這樣:^h的Linux上的QNAP NAS:

[~] # busybox stty -F /dev/ttyUSB0 cs8 9600 opost -ixon -ixoff -cstopb -parenb 
[~] # screen /dev/ttyUSB0 –fn 
/var/run/utmp: No such file or directory 
15 
    59 
    1351159113 
       51115353579779 
          9 
          79111137311371 
              11131131359 
                 11579 
                  11711359 
                    7139 
                     357 
                      35 
                      3130577917931359 
      39 
       913717117 
         31 
         1313315791113579 
             133 
              373 

,即使數字幾乎從來沒有出現應該是一個線索,這個問題的事實。我在Arduino程序和Linux命令中都選擇了不同的串口參數,但只能使其變得更糟糕(更糟糕的是,我沒有正確接收字符)。

OSEPP ATMega2560 Arduino到Linux上的QNAP NAS: 這看起來很有用,但它並沒有長時間工作。

[~] # busybox stty -F /dev/ttyUSB0 cs8 9600 opost -ixon -ixoff -cstopb -parenb 
[~] # screen /dev/ttyUSB0 –fn 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
1234567890 
CC�������CC�����C�������CC����CC� 

我試了幾次,出乎意料的相似(不相同)的結果。

的Arduino Duemilanove:

[~] # busybox stty -F /dev/ttyUSB0 cs8 9600 opost -ixon -ixoff -cstopb -parenb 
[~] # screen /dev/ttyUSB0 –fn 
/var/run/utmp: No such file or directory 
    1713 
     371 
      3579 
       137557 
        5379 
         359599 
           371591311533609 
              597 
               3579 

                1391913 
                  15359 
                   16813579 
                     15 
                      715715379 
    11375 
     551135 
       7 
       135513311993 
          51791357 
            15959 
             1111919 
               113 

Arduino的利利帕德 類似的結果,以納米& Duemilanove。

問題: 有誰知道爲什麼會發生這種情況嗎?我更喜歡使用「Nano」Arduino,因爲這個項目只需要少量的I/O線,任何大一點的東西都可能會導致過度殺傷。

Arduino USB實現是否與Linux以某種方式不兼容?

感謝您給出的任何見解!

+1

您在串口上打開了多個連接。 –

+0

你是*正確*!系統守護進程(?)ups_yec一直在收集來自端口的字符。感謝您的幫助!我原本以爲兩個進程不能同時打開同一個端口,並認爲這是不可能的。 –

+0

@ IgnacioVazquez-Abrams:你可以把它放入答案中;我想標記你的是正確的。謝謝! –

回答

0

Linux不會阻止多個進程打開一個串行端口,並且如果它們中的多個進程從端口讀取,那麼其他進程將錯過任何這樣的數據讀取。驗證沒有其他進程打開串口。