You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派Linux启动后在小型TFT屏运行程序的技术咨询

问题解答

1/ 是否需要禁用gettys?如何操作?

需要禁用。启动时出现的login:提示就是getty进程在tty1上运行的结果,它会占用屏幕输出,和你的程序冲突。操作步骤如下:

  • 永久禁用tty1对应的getty服务:
    sudo systemctl disable getty@tty1.service
    
  • 若只是临时测试,可临时停止该服务:
    sudo systemctl stop getty@tty1.service
    

重启系统后login:提示就不会出现,后续需要恢复的话,执行sudo systemctl enable getty@tty1.service即可。

2/ 如何让Python或C程序在启动结束后自动运行,并将控制台作为标准输出?(无键盘)

用systemd服务实现最可靠,步骤如下:

  1. 创建服务配置文件,比如/etc/systemd/system/my_app.service,内容根据程序类型调整:
    [Unit]
    Description=启动后自动运行的应用
    After=multi-user.target  # 确保系统进入多用户模式后再启动程序
    
    [Service]
    Type=simple
    # Python程序替换为脚本路径
    ExecStart=/usr/bin/python3 /home/pi/your_script.py
    # C程序替换为编译后的可执行文件路径
    # ExecStart=/home/pi/your_compiled_c_program
    TTYPath=/dev/tty1  # 指定输出到TFT对应的终端
    StandardOutput=tty
    StandardError=tty
    Restart=always  # 程序意外退出时自动重启,可按需调整
    User=root  # 程序需要权限时用root,无需权限可换成普通用户如pi
    
    [Install]
    WantedBy=multi-user.target
    
  2. 重载systemd配置并启用服务:
    sudo systemctl daemon-reload
    sudo systemctl enable my_app.service
    

重启系统后,程序会自动运行,输出直接显示在TFT屏幕上。

3/ 是否应使用libcurses(文本模式)?

根据需求决定:

  • 若程序是复杂文本界面(需要菜单、光标控制、颜色区分、布局排版),libcurses非常合适,它能帮你处理终端底层控制逻辑,不用自己写繁琐的终端命令,无X环境下适配性好。
  • 若只是简单输出文本/日志,不需要交互或复杂布局,直接用Python的print或C的printf即可,没必要用libcurses。
  • 若为图形程序,libcurses不适用,应使用直接操作framebuffer的工具或库,比如你已在用的fbi,Python可用Pillow库直接写入/dev/fbTFT,C可通过open/mmap操作fb设备文件。

内容的提问来源于stack exchange,提问作者KrissNC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 17:02:26