标签: raspberry-pi2

树莓派 - 致命错误:sys/cdefs.h:没有这样的文件或目录

我正在尝试使用最新的 Raspbian 系统映像在我的 Raspberry Pi 上编译 gcc5.3.0。

$ ./configure --enbale-checking=release --enable-languages=c,c++,fortran --host=arm-cortexa7_neon-linux-gnueabihf --build=arm-cortexa7_neon-linux-gnueabihf --target=arm-cortexa7_neon-linux-gnueabihf
$ make
Run Code Online (Sandbox Code Playgroud)

但是,原始编译器 (gcc4.9) 在编译 libgcc 时抱怨未创建 sys/cdefs.h。

我检查我有libc6-devbuild-essential安装。

所以我曾经grep -R 'cdefs' /usr/include/搜索过它,我在/usr/include/bsd/找到了它。我创建了 sys 目录并在 /usr/include/bsd/sys 下建立了到这些头文件的硬链接。

这次它给了我一个更奇怪的错误,/usr/include/stdio.h:312:8: error: unknown type name 'FILE'。

我在 stackoverflow 上搜索了这个,还有一个类似的问题,/sf/answers/1473306621/。但是当我删除/usr/include/sys和/usr/include/bsd,然后重新安装libc6-dev时,我在/usr/include下找不到sys/cdefs.h,编译器仍然报错。

我现在完全迷失了。任何建议将不胜感激。

libgcc gcc5 raspberry-pi2

6
推荐指数
1
解决办法
3998
查看次数

导入错误:没有名为 boto3 的模块

安装了 boto3 并将其升级到最新版本。我尝试了简易安装 pip 进行安装。我安装了多个版本的 python,所以我什至尝试在 virtualenv venv 中安装。但我得到了同样的错误:“没有名为 boto3 的模块”。

pip install boto3

python
Python 2.7.11 (default, Mar 10 2016, 14:12:44)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named boto3
>>>
Run Code Online (Sandbox Code Playgroud)

我尝试使用 / 不使用 sudo:

sudo pip install boto3
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 Raspberry Pi 上安装 AWS SDK。

pip freeze
Run Code Online (Sandbox Code Playgroud)

显示“boto3==1.3.0”已安装。

sudo pip install boto3

Requirement already satisfied (use …
Run Code Online (Sandbox Code Playgroud)

boto3 raspberry-pi2

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

Python 日志记录模块 - 从命令行运行时输出到文本文件

我有一个 python 程序,它使用日志记录模块将数据输出到文本文件,我遇到的问题是,当我在PyCharm中运行脚本时,文本文件的输出工作正常(1-10 值输出到两个控制台屏幕并写入Log_Test_File.txt),但是当我从命令行运行脚本时,仅显示控制台输出(没有任何内容写入 *.txt 文件)。这发生在两者Ubuntu或我的Raspberry Pi.

我将在启动时自动运行脚本Pi(如 sudo),有没有办法配置Pi或 脚本以使文本输出正常工作?

#!/usr/bin/python
# -*- coding: utf-8 -*-

import logging

logging.basicConfig(filename="Log_Test_File.txt",
                level=logging.DEBUG,
                format='%(levelname)s: %(asctime)s %(message)s',
                datefmt='%m/%d/%Y %I:%M:%S')

i=0
while i<10:
    logging.info("Logging test: {}".format(i))
    i+=1
Run Code Online (Sandbox Code Playgroud)

python logging raspberry-pi raspberry-pi2

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

UWP - 通过Socket到MediaElement将WebCam流式传输 - 破碎的图片?

背景

我编写的代码记录了来自网络摄像头的视频片段,将它们写入内存流,然后通过Socket连接传输数据,然后将其重新组合成视频并在媒体元素上播放.

最终目标是创建一个婴儿监视器系统,服务器/摄像头运行在Windows IOT Raspberry Pi上,以及我的女朋友和我可以在我们的手机或笔记本电脑上查看的UWP应用程序.除了从房子的另一部分观看摄像机外,我们还能够在我们其中一个人离家时登录,并且我还会及时连接PIR运动传感器和警报系统,但首先是第一.

整个系统工作得相当好,视频中有5秒的延迟,这是我可以接受的(现在),并且使用MediaPlaybackList,视频以相当恒定的速率无缝流式传输(尽可能无缝连接)现在)视频之间的转换.MediaPlaybackList在播放时删除项目,使内存占用保持相对恒定.

问题

当视频在客户端播放时,它会频繁出现但是随机的部分是破碎的图片.它没有任何模式,也不是我能找到的模式,我能描述的唯一方法是将图片的一部分水平分割成两半,两半交换,图片的右侧显示在左边,反之亦然.它就像一个闪烁,因为在破碎的位中只显示了几分之一秒,因为另一个在图片的其他地方出现了大约一秒左右.

这是一个例子:

在这里你可以看到框架的一部分处于错误的位置 现在,这里有几个有趣的点......

1)在我开始使用MediaPlaybackList排队数据流之前,我使用的方法是从传入的套接字流中提取每个视频,将其作为StorageFile保存到本地磁盘,然后排队这些StorageFiles,按顺序播放它们然后删除它们(我仍然有源代码控制中的这个代码的版本,我可以挖掘出来,但我不喜欢创建和销毁StorageFiles的想法,因为它看起来非常低效).然而,使用这种方法并没有导致我现在看到的破碎的图片...这让我相信视频本身很好,并且这可能是它被重新组合并流式传输的方式的问题媒体元素?

2)我的女朋友的猫把网络摄像头(微软Lifecam HD-3000)撞到了一边,没有我意识到,我没有意识到,直到我运行服务器并注意到图片是90度角...有趣(和这令人费解的是,传递给客户的图片没有像我上面描述的那样分解.我能看到的唯一不同之处在于图片的尺寸是480 x 640(来自相机坐在它的侧面),而不是标准的640 x 480.这意味着什么,我不确定......

关于这个问题的想法

  • 与视频的大小/尺寸有关(它在侧面播放得很好,所以它与此有关)?
  • 与比特率有关?
  • 与客户端重新组装字节的方式有关吗?
  • 与流的编码有关?

资源

这里有一些我认为可能相关的代码片段,完整的解决方案源可以在GitHub上找到,这里是: Video Socket Server .

服务器

while (true)
{
    try
    {
        //record a 5 second video to stream
        Debug.WriteLine($"Recording started");
        var memoryStream = new InMemoryRandomAccessStream();
        await _mediaCap.StartRecordToStreamAsync(MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Vga), memoryStream);
        await Task.Delay(TimeSpan.FromSeconds(5));
        await _mediaCap.StopRecordAsync();
        Debug.WriteLine($"Recording finished, {memoryStream.Size} bytes");

        //create a CurrentVideo object to hold stream data and give it a unique id
        //which the client app can use …
Run Code Online (Sandbox Code Playgroud)

c# sockets video-streaming raspberry-pi2 uwp

6
推荐指数
1
解决办法
3462
查看次数

raspberry2上的eglfs - *无法添加服务 - 已经在使用?

这是我在这里的第一篇文章.

我想保持简短......

以下问题:

我想运行一个qt5/qtquickcontrols2应用程序,利用覆盆子-pi 2b上的eglfs后端,当然是由vc4加速.理想情况下,它应该在kiosk模式下运行,它肯定需要加速gl功能.为了尽量减少问题,我使用命令测试:

LD_PRELOAD="/opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so" qmlscene ./gallery.qml

其中gallery.qml只是qt-creator的小部件预览示例项目(遵循这些说明......).我得到以下错误输出:

[manjaro@Loki gallery]$ LD_PRELOAD="/opt/vc/lib/libGLESv2.so /opt/vc/lib/libEGL.so" qmlscene ./gallery.qml
qt.qpa.egldeviceintegration: EGL device integration plugin keys: ("eglfs_brcm", "eglfs_kms", "eglfs_x11")
qt.qpa.egldeviceintegration: EGL device integration plugin keys (sorted): ("eglfs_brcm", "eglfs_kms", "eglfs_x11")
qt.qpa.egldeviceintegration: Trying to load device EGL integration "eglfs_brcm"
qt.qpa.egldeviceintegration: Using EGL device integration "eglfs_brcm"
* failed to add service - already in use?
Run Code Online (Sandbox Code Playgroud)

我也测试了同样运行交叉编译的二进制文件 - 同样的错误.除最后一行之外的所有行都来自qt5的详细调试输出,我通过环境变量设置,详细信息将随之而来.

系统/环境:

  • raspberry-pi 2b
  • QT-5.7.0
  • Manjaro-ARM(基于Arch Linux ARM)
  • 所有固件东西,工具,启动内容,内核都已安装并且是最新的

其他设置......

[manjaro@Loki gallery]$ uname -a
Linux Loki 4.4.28-1-MANJARO-ARM #1 …
Run Code Online (Sandbox Code Playgroud)

qt5 archlinux-arm raspberry-pi2 qtquickcontrols2 eglfs

6
推荐指数
1
解决办法
5057
查看次数

chromedriver 意外退出。状态代码为:127

在我的树莓派上,我最近在使用时遇到了一些奇怪的问题,webdriver.Firefox所以我决定切换到 chromedriver,无论如何我更习惯它,因为我在桌面上测试东西时使用它。我新安装了 chromedriver 并确保 chromium 是最新版本,但在尝试运行我的程序时出现以下错误:

selenium.common.exceptions.WebDriverException: Message: Service /usr/lib/chromium-browser/chromedriver unexpectedly exited. Status code was: 127
Run Code Online (Sandbox Code Playgroud)

所以我在互联网上寻找可能的解决方案,但我能找到的解决方案要么不涉及 chromedriver (我仍然尝试了其中一些解决方案,但它不起作用),要么涉及更新 chromium/chromedriver,这些解决方案已经启动-迄今为止。为了确定我还更新了 selenium python,但这也没有帮助。

更清楚地说,它在以下代码行中抛出该错误:

driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")
Run Code Online (Sandbox Code Playgroud)

不是 WebDriverException 的重复:消息:服务 chromedriver 意外退出。状态代码是: 127,因为正如我所提到的,某些事情(包括该问题的答案)对我不起作用,而且,我正在使用不同的操作系统。

python selenium chromium selenium-chromedriver raspberry-pi2

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

在树莓派墙板上自动登录 jira

我正在开发一个树莓派墙板,以在壁挂式屏幕上显示项目 jira 状态。为了使树莓派作为墙板工作,我遵循了http://blogs.wcode.org/2013/09/howto-boot-your-raspberry-pi-into-a-fullscreen-browser-kiosk/上的教程。通过一些小的更改,我还设法使用命令在多个选项卡中循环它 watch -n5 "xdotool getactivewindow key ctrl+Tab"

现在我想显示 jira 状态,启动时我需要 chromium 登录然后显示状态。我已经使用 url 尝试过此操作https://<company>.jira.com/login?username=<username>&password=<password>&dest-url=/secure/RapidBoard.jspa?rapidView=<id>&view=detail。但是 jira 登录页面并不接受使用 GET 方法的登录。

有人可以帮我找到一种自动登录 jira 然后显示一些 jira 页面的方法吗?当然,这需要在树莓派 2 上编写脚本,以便在启动时无需用户交互即可登录。

jira chromium raspberry-pi2

5
推荐指数
1
解决办法
3437
查看次数

从python脚本启动节点应用程序

是否可以从覆盆子pi上的python脚本中启动node.js应用程序?

在命令行上我运行 sudo node myscript.js

我可以使用像os这样的库吗?

python node.js raspberry-pi2

5
推荐指数
1
解决办法
9119
查看次数

按钮 GPIO.FALLING 事件被触发两次

这是我第一次尝试对 Raspberry Pi 和面包板上的硬件按钮进行编码。程序很简单,当检测到按下按钮时,打开面包板上的 LED 1 秒钟。我的代码似乎有效,但奇怪的是,每隔一个按钮就会触发回调函数两次。我是一个完全的编程菜鸟,所以我不确定问题是否出在我的代码上,或者硬件或按钮是否实际上以某种方式掉落了两次。我希望这里有人能帮助我解决这个奇怪的问题。这是我的代码:

#!/usr/bin/env python
import RPi.GPIO as GPIO
import time


LedPin = 11    # pin11 --- led
BtnPin = 12    # pin12 --- button

def setup():
    GPIO.setmode(GPIO.BOARD)       # Numbers GPIOs by physical location
    GPIO.setup(LedPin, GPIO.OUT)   # Set LedPin's mode is output
    GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Set BtnPin's mode is input, and pull up to high level(3.3V)
    GPIO.output(LedPin, GPIO.HIGH) # Set LedPin high(+3.3V) to off led

def Light(ev=None):
        print 'A button press was detected'
        GPIO.output(LedPin, 0) …
Run Code Online (Sandbox Code Playgroud)

python gpio raspberry-pi raspberry-pi2

5
推荐指数
1
解决办法
4500
查看次数

如何在我的 android 应用程序中访问 raspberry.local?

我在我的覆盆子PI运行的Django,和我使用的avahi守护进程来访问我的RPI raspberrypi.local。在我的 Django 上,我为我的 android 应用程序制作了 API,以便通过 HTTP 协议访问。例如,我的 http 请求网址之一是: http://raspberrypi.local/api/getUserNames/

问题是 android 没有在我的本地 wifi 网络上访问这个 url,我已经确认我的 android 设备和 rpi 都连接到同一个 wifi 网络,但仍然http://raspberrypi.local无法在 android 上工作。虽然它在我的 PC 和 MAC 上运行良好。

我试图找到解决方案并经历了许多关于 bonjour、mDNS、jmDNS、android-multicast 的问答。但所有这些要么太混乱而无法实施,要么不起作用。请帮助我,我被卡住了一段时间。

注意: 在我的 Rpi 上,avahi-daemon 将自己广播为“_workstation._tcp”。服务类型

——

我的解决方案:

http://www.dodgycoder.net/2015/02/setting-up-bonjourzeroconfmdnsnsd.html

Android NSD(网络服务发现)解决了我的问题。我只使用了 Discovery Listener 和 Resolve Listener 来解决我的目的。我专门用来SERVICE_TYPE = "_workstation._tcp.";avahi-daemon搜索raspberrypi.local

dns android mdns jmdns raspberry-pi2

5
推荐指数
1
解决办法
8675
查看次数