【问题标题】:Arduino USB compatibility with LinuxArduino USB 与 Linux 的兼容性
【发布时间】:2017-10-23 04:12:39
【问题描述】:

我一直在从事一个需要通过 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)

OSEPP Nano Arduino 到 QNAP NAS 上的 Linux: 使用 OSEPP Nano Arduino,与 QNAP NAS 上的 Linux 的通信如下所示:

[~] # 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 与 Nano 和 Duemilanove 的结果相似。

问题: 有谁知道为什么会发生这种情况?我更喜欢使用“Nano”Arduino,因为这个项目只需要几条 I/O 线,任何更大的线都将是过度杀戮。

Arduino USB 实现是否在某些方面与 Linux 不兼容?

感谢您提供的任何见解!

【问题讨论】:

  • 您在串口上打开了多个连接。
  • 你是正确的!系统守护程序 (?) ups_yec 一直在从端口收集字符。谢谢您的帮助!我曾预计两个进程无法同时打开同一个端口,并认为这是不可能的。
  • @IgnacioVazquez-Abrams:你能把它放到答案中吗?我想将您的标记为正确。谢谢!

标签: linux arduino usb qnap


【解决方案1】:

Linux 不会阻止多个进程打开一个串行端口,如果多个进程从该端口读取数据,那么其他进程将错过任何此类数据读取。确认没有其他进程打开串口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2019-10-28
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多