Tag: raspberry pi

cvCaptureFromFile-从特定路径打开video – Raspberry Pi

我在Raspberry Pi中安装了OpenCV-2.4.9。 现在我正在尝试从特定路径加载video,为此我尝试使用C和C ++ API C API:cvCaptureFromFile(path); C ++ API:VideoCapture上限; cap.open(路径) 我收到错误,它说无法打开文件。 它适用于Windows和Linux,但不适用于Raspberry Pi。 我错过了什么吗? C ++代码: #include #include #include #include #include using namespace cv; using namespace std; int main(){ VideoCapture cap(“C:/Users/nava/Videos/file.mp4”); if (!cap.isOpened()){ cout << "Error opening video stream" << endl; return -1; } while (1){ Mat Frame; if (!cap.read(Frame)){ cout << "No Frame […]

使用wiringPi2-python(非root)分段故障捕获GPIO

我正在使用wiringPi2-python将覆盆子GPIO引脚从低电平切换到高电平并返回。 一切正常,但在切换引脚值后,抛出了Segmentation fault并且程序停止。 我需要使用这种方法,因为这似乎是在没有sudo情况下访问GPIO引脚的唯一方法 在启动程序之前,我需要设置引脚输出并导出它们: $ echo 17 > /sys/class/gpio/export $ echo out > /sys/class/gpio/gpio17/direction 然后是一些python shell: $ python Python 2.7.3 (default, Jan 13 2013, 11:20:46) [GCC 4.6.3] on linux2 Type “help”, “copyright”, “credits” or “license” for more information. >>> import wiringpi2 as pi >>> pi.wiringPiSetupSys() 0 >>> pi.digitalWrite(17, 1) Segmentation fault $ 我试过这种方法,但它没有更好。 该程序仍然停止: […]

RaspberryPi RS-232麻烦

我在Pi上使用RS-232线与激光测距仪进行通信。 我已经使用minicom以19200的波特率测试了两者之间的通信(因为这是LRF的波特率并且无法更改),并且它工作正常。 虽然写下LRF任何命令(由单个字符组成并按’enter’)可能需要多次尝试才能生效,但双向通信效果很好。 但是,当我开始使用C代码编程以使用RS-232进行读写时,它的一半工作。 这是我正在使用的代码: #include #include #include #include //SETUP UART0 int main(){ int uart0_filestream = -1; int loop; int i; int isError=1, rx_length; unsigned char rx_buffer[256]; useconds_t micro=3000; uart0_filestream = open(“/dev/ttyAMA0”, O_RDWR | O_NOCTTY | O_NDELAY); if(uart0_filestream == -1) printf(“ERROR: Unable to open UART\n\n”); else printf(“UART open\n\n”); struct termios options; tcgetattr(uart0_filestream, &options); options.c_cflag = […]

在bcm2836上使用GPIO

我正在为我的RPI2 OS编写GPIO驱动程序。 我正在冲浪很长时间,但我发现只有linux数据。 我应该怎么做这样的function void gpio_set(int pin); void gpio_clr(int pin); 在C中为司机。 或者,也许它可以通过内联汇编来完成?

在C中等待中断的有效方法

我在树莓派上使用WiringPi。 有了它,我分配了一个稍后调用的中断函数。 我不确定在等待中断被呼叫时该怎么做。 示例使用(自旋锁?) for (;;)例如 int main() { // register interrupt wiringPiISR( 18, INT_EDGE_BOTH, &myInterrupt ); for (;;) { // really? } return 0; } 而且我注意到sleep也有效。 无论睡眠如何,都会调用中断 int main() { // register interrupt wiringPiISR( 18, INT_EDGE_BOTH, &myInterrupt ); for (;;) { sleep(1000000); } return 0; } 使用最少的资源保持程序运行的最佳做法是什么(比如这是用于背景恶魔)? 来自其他语言,我原以为for(;;)会占用资源。 我想知道该怎么做或指示做什么(线程等)。

来自kaa C sdk在RPI3上的奇怪行为

我正在尝试在覆盆子pi 3上构建一个C应用程序,它收集一些传感器读数并将它们记录到mongodb日志追加器中。 我从应用程序面临一个非常奇怪的行为 这是我的应用程序代码,它是从main函数调用的 #include #include #include #include #include #include “dht11.h” #include “kaa-log.h” #define KAA_LOG_GENERATION_FREQUENCY 1 // in seconds /* * Pin on Rasbery Pi 3 Model B */ #define DHT11_PIN 7 static void kaa_loop(void *context) { static bool logInitialized = false; kaa_client_t *kaa_client = context; if (!logInitialized) { logInitialized = true; kaaLogInitializing(kaa_client); } if […]

对Raspberry PI进行交叉编译

我正在为Raspberry PI开发板编写GUI应用程序,该应用程序利用OpenCV库来处理一些图像数据。 最终结果是带有一些按钮的图形应用程序,以及显示图像的区域。 我尽可能地避免使用IDE,因为除了通常与我工作的项目一起使用的新语言之外,每个工具都需要学习一个新的IDE是很乏味的。 我所有开发的95%都在VIM中。 如何设置一个基本的makefile项目,该项目使用GCC,OpenCV,GTK +,并为在x86系统上运行的Ubuntu安装上运行的Raspberry PI(即:arm11)进行编译? 目标是使这个可以在任何Linux系统上构建的可移植项目。 我熟悉通过apt-get安装OpenCV和GTK +库,我也知道我需要在main.c文件中包含特定的头文件。 现在我只需要弄清楚makefile中为ARM编译所需的基本语句,并链接到相应的库。 我通过apt-get获得的OpenCV库似乎是针对x86的,我不知道是否包含了ARM变体。 谢谢。

初始化与c库open()的串行通信会导致TX在RPi上发送一位

我正在尝试在RPI和FPGA之间建立串行通信。 但是,使用标准C库open()来初始化串行接口时会出现问题:我使用示波器监视通过RX和TX线路发送和接收的内容。 对open的调用会导致RPI的TX线变为低电平,持续一位的长度。 我没有看到其他计算机/ Linux PC的这种行为。 关键是,FPGA假设有效传输,因为他认为它是一个起始位,但事实并非如此。 我检查了安装在RPI上的minicom。 一样。 启动minicom会导致TX线发送一位。 一旦minicom启动,通信就会按预期运行,并且所有字节都具有正确的帧大小。 有没有办法在打开调用初始化串行通信时抑制TX线变低? 这是预期的行为吗?

编写新的系统调用

我一直在尝试在raspberry的内核中编写一个新的系统调用(称为sys_defclose),但是在编译时我得到了这个错误: arch/arm/kernel/built-in.o: In function `__sys_trace_return’: :(.text+0xd50): undefined reference to `sys_defclose’ 我修改了以下文件: -include / linux / syscalls.h:我把我的系统调用的原型放在哪里 -arch / arm / include / asm / unistd.h:我把syscall表的新原始文件放在哪里: #define __NR_sys_defclose (__NR_SYSCALL_BASE+380) -arch / arm / kernel / calls.S:我把它放在哪里: CALL(sys_defclose) -i把sys_defclose的源码放在arch / arm / kernel中,我用新行修改了同一目录下的makefile obj-y +=sys_defclose.o 内核版本是raspberrypi的3.6。 谁能解释一下如何解决这个错误? 谢谢这是我的系统调用的实现 static struct task_struct* get_task_by_pid(pid_t pid) { return pid_task(find_pid_ns(pid, task_active_pid_ns(current)), […]

使用Bluez的C / C ++ BLE读/写示例

我开始建立一个简单的BLE网络,带有微控制器和覆盆子pi(tardis BLE加密狗)。 作为一个起点,我正在寻找一个简单的C或C ++示例来读/写一个BLE设备,类似于我能够在命令行上做的事情。 到目前为止,我发现的例子非常复杂。 作为一名BLE初学者,我需要一些非常简单的例子来构建,然后再采用更复杂的设计。 我可以像在下面的gatttool示例中那样对BLE设备名称进行硬编码。 以下是我目前使用Bluez命令行选项的方法。 从命令行我可以使用: $ sudo hcitool lescan LE Scan … BB:A0:50:02:18:07 MyDevice 接下来,我可以使用gatttool在命令行上连接到设备: $ sudo gatttol -b BB:A0:50:02:18:07 -I [BB:A0:50:02:18:07][LE]> connect Attempting to connect to BB:A0:50:02:18:07 Connection successful 最后,我能够使用适当的句柄进行读写 [BB:A0:50:02:18:07][LE]> char-write-req 000f 0100 Characteristic value was written successfully [BB:A0:50:02:18:07][LE]> char-write-cmd 0011 4C467A 我用于初步研究并开始使用的一些网站: http://people.csail.mit.edu/albert/bluez-intro/c404.html https://github.com/carsonmcdonald/bluez-experiments/blob/master/experiments/scantest.c