我一直在研究需要通过USB与(Debian)Linux NAS进行通信的Arduino项目。
它与Windows终端完美可靠地通信。
与Linux的通信非常糟糕。
这是我的沟通测试应用程序:
void setup(void) {
Serial.begin(9600, SERIAL_8N1);
}
void loop(void) {
do {
Serial.println("1234567890");
delay(1000);
} while (true);
}
OSEPP Nano Arduino到Windows: 使用OSEPP Nano Arduino,通信在Windows中看起来像这样:
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
1234567890
(forever, ok)
在QNAP NAS上使用OSEPP Nano Arduino到Linux: 使用OSEPP Nano Arduino,在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到QNAP NAS上的Linux: 这看起来很有用,但它不能长时间工作。
[~] # 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 Lilypad 纳米与纳米相似的结果Duemilanove。
问题: 有谁知道为什么会发生这种情况?我更喜欢使用“Nano”Arduino,因为这个项目只需要一些I / O线,任何更大的都是过度杀死。
Arduino USB实现在某种程度上与Linux不兼容吗?
感谢您提供任何见解!
答案 0 :(得分:0)
Linux不会阻止多个进程打开串口,如果有多个进程从端口读取,那么其他进程将错过任何此类数据读取。验证没有其他进程打开串行端口。