繁体   English   中英

我的(工作)树莓派程序在启动时运行不正常

[英]My (working) raspberry pi program doesn't work right when I run it on boot

我正在编写一个脚本(基本上)从 raspi gpio 引脚控制一些电机。 我已经做了一段时间了,当我启动 pi 并手动运行程序时,它工作得很好。 我还有一部分代码允许我使用我的手机通过蓝牙连接并发送一些数据来控制电机。 这也适用于手动运行程序。

现在我试图让程序在启动时自动启动,因为这最终会进入更大的机器(船),我不会将监视器等挂在它上面。 我目前正在通过带有 @reboot 标签的 cron 作业来执行此操作。 看起来像这样:

#This enables GPIO (as far as I know). The program fails without this command being run first.
@reboot sudo pigpiod

#This runs the python program. ampersand forks the process because it should run continuously.
@reboot python3 /home/pi/Desktop/BoatBrain.py &

#and this lets me connect my phone over bluetooth. The python program has
#a portion takes data from that connection. ampersand forks the process, which
#seems like the right thing to do, since it looks like it blocks other things.
#That is also why it is at the end of the cron table.
@reboot sudo rfcomm watch hci0 &

当我重新启动时,作业全部运行,并且我可以连接我的手机,所以它肯定已经通过了执行 python 脚本的线路,但是我连接的伺服器只是无法控制地抖动到位。 让我重申一下,当我拿走 cronjobs 并手动运行它时,程序可以正常工作,几乎没有抖动,所以感觉不像是电气问题......

如果您需要更多信息,请告诉我,我很乐意提供。 我倾向于在没有意识到的情况下忽略事情XD

谢谢!

你有没有在~/.profile添加任何东西? 这可能就是当您自己调用命令时它起作用的原因。 如果是这样,请在sudo vi /etc/profile.d/servo.sh创建一个文件,其中包含添加到~/.profile的相同几行。 然后系统将在重新启动时具有这些。

此外,您可以将所有三个命令放在一个 shell 脚本中,然后将脚本放在 crontab 中。 然后脚本可以控制它们按顺序启动。 您还可以让 cronjob 将输出写入日志文件,然后查看它的内容。 您还可以通过查看/var/log/syslog来检查 cron 何时运行

哦,同样为了测试,您可以将 @reboot 更改为10 * * * *类的开始时间,然后您就可以让 cron 工作而无需重新启动。 稍后,将其更改回@reboot 以尝试重新启动。

要么您的登录名 (.profile) 缺少某些东西,要么同时启动命令太快,需要以受控顺序启动,要么系统尚未完全准备好,但我对此表示怀疑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM