标签: raspberry-pi

无法禁用systemd serial-getty服务

在使用Arch Linux的Raspberry Pi上,有一个名为的服务活动serial-getty@AMA0.

单元文件是:/usr/lib/systemd/system/serial-getty@.service

作为root我可以调用

systemctl stop serial-getty@ttyAMA0
systemctl disable serial-getty@ttyAMA0
Run Code Online (Sandbox Code Playgroud)

但重启后,服务已启用并再次运行.

禁用后为什么启用服务?如何永久禁用它?

UPDATE

systemd使用发电机在/ usr/lib中/ systemd /系统发电机/是称为systemd-getty的发电机二进制.此二进制文件在系统启动时运行,并将符号链接serial-getty@ttyAMA0.service添加到/run/systemd/generator/getty.target.wants.

我终于找到了一个肮脏的解 我在/usr/lib/systemd/system/serial-getty@.service中注释掉了所有操作.无论如何,服务确实似乎已开始,但没有阻止ttyAMA0.

tty archlinux gpio raspberry-pi systemd

17
推荐指数
1
解决办法
1万
查看次数

'IOError:[Errno 5]输入/输出错误',同时使用SMBus通过RPi进行模拟读取

我一直在寻找标题中提到的错误的答案,但这是我第一次得到答案.我试图让我的Raspberry pi读取模拟数据,但是当我在终端窗口中运行代码时,它给出了'IOError:[Errno 5]输入/输出错误'.

用于读取模拟数据的代码如下所示.我正在使用PCF8591 ADC转换器.

from smbus import SMBus

bus = SMBus(0)

print "read a/d press ctrl + c to stop"

bus.write_byte(0x48, 0)
lastval = -1

while True:
  reada = bus.read_byte(0x48)
  if(abs(lastval-reada) > 2):
    print(reada)
    lastval=reada
Run Code Online (Sandbox Code Playgroud)

我理解这可能是因为树莓派中的版本发生了变化,我应该将SMBus(0)更改为SMBus(1).为此我检查了我的RPi版本,这不是修改后的版本.但我仍然试图通过更改SMBus号来运行程序,但仍然没有运气.

我得到的错误如下所示:

Traceback (most recent call last):
  File "analogread.py", line 7, in <module>
    bus.write_byte(0x48, 0)
IOError: [Errno 5] Input/output error
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.这是我试图执行的更大项目中的基本块.因此,我可以更好地工作,我可以构建我的应用程序.谢谢

python analog-digital-converter python-2.7 raspberry-pi

17
推荐指数
4
解决办法
4万
查看次数

使用Leiningen在Raspberry Pi上改善Clojure REPL的启动时间

我得到了Rasperry Pi 512 MB版本(2012年末)并在其上安装了用于ARM的Java SE 8开发人员预览版.当我用Leiningen创建一个新的Clojure项目并启动nREPL时,lein repl需要花费两分多于两分钟(大约130-140 秒),直到REPL初始化并且可以使用.

直接启动JAR文件时java -jar clojure-1.4.0/clojure-1.4.0,REPL将在25秒内启动.

我正在使用快速10级SD卡(SanDisk Extreme,最高30 MB/s).为什么使用Leiningen和nRepl与启动JAR文件之间的区别是如此之大?如何通过Leiningen为Raspberry Pi改善启动时间?

clojure leiningen raspberry-pi

16
推荐指数
1
解决办法
3316
查看次数

Raspberry Pi上的龙卷风使用websockets以及监控串口Arduino通信

基本上,我希望实现的是基于画布的Web界面,通过Raspberry Pi控制Arduino.的使用情况下是用户导航到其显示画布.然后在移动滑块时,将websocket消息发送到Raspberry Pi上的Tornado服务器.Tornado然后向Arduino发送一条串行消息,改变LEDRGB值.到目前为止,我已经能够在开发人员Raspberry Pi Android HTML5实时伺服控制的文档的帮助下做到这一点.raspberrypi:8080

但是,通信只是从Raspberry Pi到Arduino的单向通信.我希望Tornado能够监控串口以将任何传感器数据恢复到前端.这是我不确定如何继续的地方.我能够使用Node.js来完成这样的事情,Node.js同时监视websocket消息和串行消息.

是否应该生成一个不断监视端口的异步进程?我已经看到了这种解决方案的几种选择.

  1. 有人建议tornado.gen.Task,但对于单个HTTP请求,不是针对常量串行数据.
  2. tornado.ioloop.PeriodicCallback 我可以设置每毫秒检查一次串行数据,但这听起来像很多开销.
  3. 我也看过像Swirl这样的独立工具.(根据它的Github回购, Swirl已经过时了)

或者我应该设置一个单独的Python应用程序来监视串行,然后与Tornado应用程序通信,它可以理解如下所示的内容?

  1. websocket消息使用websocket客户端
  2. ZeroMQ(工作示例:pyzmq/examples/eventloop/web.py)

所以有很多选择......有哪些建议和一些理由可以尝试或避免上述任何选项?

这就是我所需要的,并且需要将串行监控添加到:

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import tornado.websocket

from tornado.options import define, options
define("port", default=8080, help="run on the given port", type=int)

class IndexHandler(tornado.web.RequestHandler):
    def get(self):
        self.render('index.html')

class WebSocketHandler(tornado.websocket.WebSocketHandler):
    def …
Run Code Online (Sandbox Code Playgroud)

arduino tornado websocket raspberry-pi

16
推荐指数
2
解决办法
1万
查看次数

Python Gzip - 即时附加到文件

是否可以使用Python动态附加到gzip压缩文本文件?

基本上我这样做: -

import gzip
content = "Lots of content here"
f = gzip.open('file.txt.gz', 'a', 9)
f.write(content)
f.close()
Run Code Online (Sandbox Code Playgroud)

每隔6秒左右就会在文件中附加一行(注意"附加"),但生成的文件与标准的未压缩文件一样大(完成时大约为1MB).

明确指定压缩级别似乎也没有什么区别.

如果我之后gzip一个现有的未压缩文件,它的大小可以降低到大约80kb.

我猜它不可能动态"附加"到gzip文件并让它压缩?

这是写入String.IO缓冲区然后在完成后刷新到gzip文件的情况吗?

python gzip raspberry-pi raspbian

16
推荐指数
1
解决办法
7147
查看次数

将Node.js和Node.js应用程序部署到Raspberry Pi

我有一个Node.js应用程序,我想在Raspberry Pi上运行.

而且,我希望能够远程部署我的应用程序的新版本以及新版本的Node.js到Raspberry Pi.

基本上,如:

$ pi-update 192.168.0.37 node@0.11.4
$ pi-update 192.168.0.37 my-app@latest
Run Code Online (Sandbox Code Playgroud)

我对如何将我的应用程序转移到Pi没有任何偏好,可能是推或拉.我不在乎(虽然我应该补充说,应用程序的代码可以从私有GitHub存储库获得).

此外,一旦部署了Node.js和/或我的应用程序,我希望可能正在运行的Node.js应用程序重新启动.

我怎么能这样做?我应该研究哪种软件?这是否可以使用Raspbian的工具轻松完成,或者我应该寻找第三方软件(devop工具,如Chef&co.),还是......?

任何帮助是极大的赞赏 :-)

software-distribution node.js raspberry-pi

16
推荐指数
1
解决办法
5612
查看次数

在没有startx的情况下在Raspberry Pi上显示GUI

我正在玩我的全新覆盆子与adafruit touch-tft和覆盆子Cam.

我注意到,如果我跑raspivid -p,它会在bash顶部的框架中显示预览.

如何创建一个应用程序(java,python,c ++(首选))来显示GUI而不必startx

我喜欢将adafruit touch-tft用于项目,但startx需要大量资源.当然,拥有触控功能也会很酷.

编辑:

也许我表达自己有点困惑:我想创建一个不需要startx但有某种GUI的应用程序.

以下答案并非100%准备好,但他们指出了正确的方向.由于我看到了许多类似的问题,我将尝试逐步解决问题:

  1. 使用adafruit的TFT设置您的覆盆子:https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/overview (您不必将HDMI替换为HDMI作为标准显示)

  2. 确保FRAMEBUFFER=/dev/fb1 startx在TFT屏幕上正确运行,我将电视插入HDMI端口,这样我就可以在电视屏幕上使用bash并在TFT上运行x

  3. 按照本教程创建你的第一个pygame:http://www.pygame-doku.laymaxx.de/tut/intro/intro.html (你可以只复制和粘贴wget ball.gif)

  4. 在beggining处插入这2行:(github.com/notro/fbtft/wiki/Pygame)

    import os
    os.environ["SDL_FBDEV"] = "/dev/fb1"
    
    Run Code Online (Sandbox Code Playgroud)
  5. 如果要测试触摸屏,可以更改第15行:从:

    if event.type == pygame.QUIT: sys.exit()
    
    Run Code Online (Sandbox Code Playgroud)

    至:

    if event.type == pygame.MOUSEBUTTONDOWN: sys.exit()
    
    Run Code Online (Sandbox Code Playgroud)

    如果您触摸屏幕,这将退出应用程序

  6. 保存文件,例如pygame1.py并执行 $python pygame1.py

您现在应该在TFT上看到一个弹跳球,而HDMI输出仍然在电视上显示BASH(但当然没有激活)如果您完成了第6步,触摸屏将退出游戏

为什么我这样做?通过这种方式,您可以显示一个简单的GUI,例如按钮来执行某些操作,例如,如果您使用RPI进行家庭控制,请打开/关闭灯.

raspberry-pi

16
推荐指数
2
解决办法
3万
查看次数

在Raspberry Pi无头上使用Selenium

这是我第一次尝试使用Iceweasel浏览器在树莓派上运行Selenium.我今晚尝试了一个简单的测试

# selenium test for /mod2 
# verify: posts, and page name
class TestMod2Selenium(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_validate_page_elements(self):
        driver = self.driver
        driver.get("127.0.0.1:5000/mod2")
        self.assertIn("Home - microblog", driver.title)
    def tearDown(self):
        self.driver.close()
Run Code Online (Sandbox Code Playgroud)

我在运行时得到的错误是:

=====================================================================
ERROR: test_validate_page_elements (__main__.TestMod2Selenium)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test.py", line 58, in setUp
    self.driver = webdriver.Firefox()
  File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 61, in launch_browser
    self._wait_until_connectable()
  File "/home/pi/naughton_python/flask/flask/local/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 100, in _wait_until_connectable …
Run Code Online (Sandbox Code Playgroud)

python selenium raspberry-pi iceweasel

16
推荐指数
2
解决办法
2万
查看次数

在python3中执行终端命令

我在Raspberry Pi上,我正在使用一个叫做的程序fswebcam,它允许你用网络摄像头拍照.

~$ fswebcam image.jpg
Run Code Online (Sandbox Code Playgroud)

如果在终端输入该命令拍摄照片并将其保存到您的计算机,但是我想构建一个简单的python程序,它可以访问终端并执行与上面列出的相同的命令.

我试过import os并使用os.system('fswebcam image.jpg')但它不适合我.

我怎么能有python执行终端命令?

python subprocess python-3.x raspberry-pi raspbian

16
推荐指数
1
解决办法
1万
查看次数

是否可以在Raspberry Pi 3上编译/安装Perl6?

我正在尝试在Raspberry Pi 3上安装Rakudo Star 2018.04.

我做:

sudo perl Configure.pl --gen-moar --gen-nqp --prefix ~/rakudo
Run Code Online (Sandbox Code Playgroud)

它成功完成.

然后我尝试:

sudo make-install
Run Code Online (Sandbox Code Playgroud)

但它失败了:

The following step can take a long time, please be patient.
/home/pi/rakudo/bin/moar --libpath="blib" --libpath="/home/pi/rakudo/share/nqp/lib" --libpath="/home/pi/rakudo/share/nqp/lib" perl6.moarvm --nqp-lib=blib --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=CORE.setting.moarvm gen/moar/CORE.setting
Stage start      :   0.000
Stage parse      : 459.019
Stage syntaxcheck:   0.000
Stage ast        :   0.000
Stage optimize   : Killed
Makefile:504: recipe for target 'CORE.setting.moarvm' failed
make[1]: *** [CORE.setting.moarvm] Error 137
make[1]: Leaving directory '/home/pi/rakudo-star-2018.04/rakudo'
Makefile:43: recipe for target …
Run Code Online (Sandbox Code Playgroud)

rakudo perl6 rakudo-star raspberry-pi raku

16
推荐指数
2
解决办法
455
查看次数