我有一个相当奇怪的问题。我通过USB串行接口将DCcduino Uno(Arduino Uno copy)插入我的Xubuntu盒子。使用Arduino GUI串行监视器,我可以按预期与电路板通信。此外,当串行监视器打开时,我可以ssh到框中并运行命令
echo 1700 > /dev/ttyUSB0
完全没问题。但是,只要我关闭串行监视器(即使Arduino GUI仍在运行),该命令就不再执行任何操作。
我尝试使用stty
个参数的几种组合打开串口,包括
stty -F /dev/ttyUSB0 9600 cs8 cread clocal
到
stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
但它不会写入arduino。我做错了什么?
修改
我只是设法使用
使其工作stty -F /dev/ttyUSB0 raw ispeed 9600 ospeed 9600 cs8 -ignpar -cstopb -echo
cat < /dev/ttyUSB0 > /dev/null &
echo "1700" > /dev/ttyUSB0
但是,这仅适用于后台cat
正在运行。有没有办法让它在没有那条线的情况下工作?
答案 0 :(得分:1)
据我所知,Arduino通过串行通信端口进行通信,要求在发送任何串行命令之前存在连接。我认为这可能是一种防止AtMega芯片卡在等待命令的方法。它还必须与USB协议兼容,以防止设备在没有连接的情况下运行。
答案 1 :(得分:0)
我能想到的最好的解决方案是使用pyserial
库并通过python与arduino进行通信,使用它像bash和arduino之间的桥梁。我确定这只是一个问题,没有使用stty
设置正确的配置,但python工作正常。