在使用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.
我一直在寻找标题中提到的错误的答案,但这是我第一次得到答案.我试图让我的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)
任何帮助表示赞赏.这是我试图执行的更大项目中的基本块.因此,我可以更好地工作,我可以构建我的应用程序.谢谢
我得到了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改善启动时间?
基本上,我希望实现的是基于画布的Web界面,通过Raspberry Pi控制Arduino.的使用情况下是用户导航到其显示画布.然后在移动滑块时,将websocket消息发送到Raspberry Pi上的Tornado服务器.Tornado然后向Arduino发送一条串行消息,改变LED的RGB值.到目前为止,我已经能够在开发人员Raspberry Pi Android HTML5实时伺服控制的文档的帮助下做到这一点.raspberrypi:8080
但是,通信只是从Raspberry Pi到Arduino的单向通信.我希望Tornado能够监控串口以将任何传感器数据恢复到前端.这是我不确定如何继续的地方.我能够使用Node.js来完成这样的事情,Node.js同时监视websocket消息和串行消息.
是否应该生成一个不断监视端口的异步进程?我已经看到了这种解决方案的几种选择.
tornado.gen.Task,但对于单个HTTP请求,不是针对常量串行数据.tornado.ioloop.PeriodicCallback 我可以设置每毫秒检查一次串行数据,但这听起来像很多开销.或者我应该设置一个单独的Python应用程序来监视串行,然后与Tornado应用程序通信,它可以理解如下所示的内容?
所以有很多选择......有哪些建议和一些理由可以尝试或避免上述任何选项?
这就是我所需要的,并且需要将串行监控添加到:
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) 是否可以使用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文件的情况吗?
我有一个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.),还是......?
任何帮助是极大的赞赏 :-)
我正在玩我的全新覆盆子与adafruit touch-tft和覆盆子Cam.
我注意到,如果我跑raspivid -p,它会在bash顶部的框架中显示预览.
如何创建一个应用程序(java,python,c ++(首选))来显示GUI而不必startx?
我喜欢将adafruit touch-tft用于项目,但startx需要大量资源.当然,拥有触控功能也会很酷.
编辑:
也许我表达自己有点困惑:我想创建一个不需要startx但有某种GUI的应用程序.
以下答案并非100%准备好,但他们指出了正确的方向.由于我看到了许多类似的问题,我将尝试逐步解决问题:
使用adafruit的TFT设置您的覆盆子:https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/overview (您不必将HDMI替换为HDMI作为标准显示)
确保FRAMEBUFFER=/dev/fb1 startx在TFT屏幕上正确运行,我将电视插入HDMI端口,这样我就可以在电视屏幕上使用bash并在TFT上运行x
按照本教程创建你的第一个pygame:http://www.pygame-doku.laymaxx.de/tut/intro/intro.html
(你可以只复制和粘贴wget ball.gif)
在beggining处插入这2行:(github.com/notro/fbtft/wiki/Pygame)
import os
os.environ["SDL_FBDEV"] = "/dev/fb1"
Run Code Online (Sandbox Code Playgroud)如果要测试触摸屏,可以更改第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)
如果您触摸屏幕,这将退出应用程序
保存文件,例如pygame1.py并执行 $python pygame1.py
您现在应该在TFT上看到一个弹跳球,而HDMI输出仍然在电视上显示BASH(但当然没有激活)如果您完成了第6步,触摸屏将退出游戏
为什么我这样做?通过这种方式,您可以显示一个简单的GUI,例如按钮来执行某些操作,例如,如果您使用RPI进行家庭控制,请打开/关闭灯.
这是我第一次尝试使用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) 我在Raspberry Pi上,我正在使用一个叫做的程序fswebcam,它允许你用网络摄像头拍照.
~$ fswebcam image.jpg
Run Code Online (Sandbox Code Playgroud)
如果在终端输入该命令拍摄照片并将其保存到您的计算机,但是我想构建一个简单的python程序,它可以访问终端并执行与上面列出的相同的命令.
我试过import os并使用os.system('fswebcam image.jpg')但它不适合我.
我怎么能有python执行终端命令?
我正在尝试在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) raspberry-pi ×10
python ×4
raspbian ×2
archlinux ×1
arduino ×1
clojure ×1
gpio ×1
gzip ×1
iceweasel ×1
leiningen ×1
node.js ×1
perl6 ×1
python-2.7 ×1
python-3.x ×1
raku ×1
rakudo ×1
rakudo-star ×1
selenium ×1
subprocess ×1
systemd ×1
tornado ×1
tty ×1
websocket ×1