小编ste*_*tef的帖子

在C/C++中使用Python代码

我在嵌入式Linux环境中工作,我有一些我想使用的Python代码.我的Python代码只是在做一些数学运算,而不是使用Numpy以外的任何库和常见的库.

有没有办法建立一个我可以用C或C++代码调用的库?

c python numpy

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

基于加速度计的手势识别

我正在开发基于嵌入式加速计的手势识别.有人知道一些免费图书馆要么雇用还是从一开始?我正在使用嵌入式Linux,我正在寻找一些计算量不大的东西.除了数十篇理论论文,YouTube视频或"封闭式"应用程序之外,我在谷歌上找不到太多东西.

我知道这是一个非常广泛的问题,但我认为它可以帮助处于相同情况的每个人.

谢谢!

linux accelerometer gesture-recognition

9
推荐指数
1
解决办法
3983
查看次数

使用 Pyaudio 在 Python 中录制音频,错误 ||PaMacCore (AUHAL)|| ... msg=音频单元:在当前上下文中无法执行

我正在使用 pyaudio 在 Mac BigSur 11.6 (20G165) 上录制声音。具体来说,我使用 BlackHole 将声音从应用程序重定向到输入,效果很好。

它通常工作正常,但有时,我在终端中收到此错误:

||PaMacCore (AUHAL)|| 第 2500 行错误:err='-10863',msg=音频单元:在当前上下文中无法执行

知道为什么或如何阻止它发生(例如,等到 PaMacCore 准备好再次录制或其他什么)?

我已经尝试过重新安装,但没有帮助

brew install portaudio
Run Code Online (Sandbox Code Playgroud)

或者

brew install portaudio --HEAD
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

import pyaudio
import wave


class Recorder(object):
    def __init__(self, fname, mode, channels,
                 rate, frames_per_buffer):
        self.fname = fname
        self.mode = mode
        self.channels = channels
        self.rate = rate
        self.frames_per_buffer = frames_per_buffer
        self._pa = pyaudio.PyAudio()
        self.wavefile = self._prepare_file(self.fname, self.mode)
        self._stream = None

    def __enter__(self):
        return self

    def __exit__(self, exception, value, traceback):
        self.close()

    def record(self, duration): …
Run Code Online (Sandbox Code Playgroud)

python core-audio portaudio pyaudio macos-big-sur

8
推荐指数
1
解决办法
1556
查看次数

Linux上的I2C并发访问,互斥

我正在嵌入式Linux中编写一个多线程C程序,从用户空间访问许多I2C设备(从设备).此外,我从多个线程访问相同的I2C设备.我正在使用SMBUS函数(i2c_smbus_write_byte_data,i2c_smbus_read_byte_data,i2c_smbus_read_i2c_block_data,...).

是否有内置并发访问的保护或我是否需要自己添加互斥?

例如:我有一个读取功能,通过I2C读取一个传感器的数据.但是也可以从另一个线程调用相同的函数,从而导致可能的并发访问.我是否必须在该函数中使用某些静态互斥锁,或者它是否已经在I2C访问函数中?

linux concurrency mutex i2c embedded-linux

7
推荐指数
2
解决办法
4091
查看次数

尽管在Linux内核模块中使用EXPORT_SYMBOL,如何防止"错误:'符号'未声明在这里"?

当我收到此错误时,我将一些驱动程序嵌入到Linux内核中(我在板文件中添加设备并注册它):

error: 'kxtf9_get_slave_descr' undeclared here (not in a function)
Run Code Online (Sandbox Code Playgroud)

我将上面的函数放在驱动程序文件中

struct ext_slave_descr *kxtf9_get_slave_descr(void)
{
    return &kxtf9_descr;
}
EXPORT_SYMBOL(kxtf9_get_slave_descr);
Run Code Online (Sandbox Code Playgroud)

它不应该由EXPORT_SYMBOL"可见"吗?包含上面代码的C文件没有头文件(我没有写它,我只是在这里找到它并且我正在实现.他们说它已经过测试所以我假设不需要头文件?

其余代码编译完美(因此它"看到"文件夹中的代码),包含上面代码的文件也编译完成!

c i2c linux-device-driver linux-kernel

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

SPI(串行端口通信)问题,卡在 ioctl() 上

我正在尝试使用 SPIDEV 驱动程序访问 SPI 传感器,但我的代码卡在 IOCTL 上。

我在 SAM9X5EK(安装 AT91SAM9G25)上运行嵌入式 Linux。该设备连接到 SPI0。我在 menuconfig 中启用了 CONFIG_SPI_SPIDEV 和 CONFIG_SPI_ATMEL 并将正确的代码添加到 BSP 文件中:

static struct spi_board_info spidev_board_info[] {
    {
        .modalias = "spidev",
        .max_speed_hz = 1000000,
        .bus_num = 0,
        .chips_select = 0,
        .mode = SPI_MODE_3,
    },
    ...
};
spi_register_board_info(spidev_board_info, ARRAY_SIZE(spidev_board_info));
Run Code Online (Sandbox Code Playgroud)

1MHz 是传感器可接受的最大值,我尝试了 500kHz,但在 Linux 启动过程中出现错误(显然太慢)。.bus_num 和 .chips_select 应该正确(我也尝试了所有其他组合)。SPI_MODE_3 我检查了它的数据表。

我在启动时没有收到任何错误,并且设备正确显示为 /dev/spidevX.X。我设法打开该文件并获取有效的文件描述符。我现在尝试使用以下代码访问设备(受到我在网上找到的示例的启发)。

#define MY_SPIDEV_DELAY_USECS 100
// #define MY_SPIDEV_SPEED_HZ 1000000
#define MY_SPIDEV_BITS_PER_WORD 8
int spidevReadRegister(int fd,
                       unsigned int num_out_bytes,
                       unsigned char *out_buffer,
                       unsigned int num_in_bytes,
                       unsigned …
Run Code Online (Sandbox Code Playgroud)

c ioctl linux-device-driver embedded-linux atmel

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

编译库与仅在应用程序中使用其源文件之间的区别

我正在使用 C 语言使用 MCU,并且我有一个已经制作好的库,我想用它来构建我自己的应用程序。区别在哪里:

  1. 在 .lib 中编译库文件,然后将我的应用程序(使用该库)链接到该 .lib,并将其编译到我的目标
  2. 只创建一个项目,在其中导入所有文件(.c 和 .h)并将其编译到我的目标

这是一个非常基本和普遍的问题,但我想澄清一下..

c compilation

4
推荐指数
1
解决办法
1555
查看次数

MacOS BigSur 上的 Pyinstaller 无法构建基本的 PyQt5 应用程序

我正在尝试构建一个在 Big Sur 上使用 PyQt5 的非常基本的应用程序。

使用最新的 pyinstaller 开发版本,我构建的应用程序没有错误,但是当我启动它时,它在启动后立即崩溃。启动 exec 后,我立即出现分段错误app = QApplication(sys.argv)

这是我的配置:

37 INFO: PyInstaller: 5.0.dev0
37 INFO: Python: 3.9.4
46 INFO: Platform: macOS-11.2.3-x86_64-i386-64bit
Run Code Online (Sandbox Code Playgroud)

我的代码,随python main.py作品一起启动。这也不是应用程序使用的外部文件的问题,因为它在使用它们之前就崩溃了。

import os
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow

DEBUG = True

if __name__ == "__main__":
    if DEBUG:
        if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
            print("Running in a Pyinstaller bundle.")
        else:
            print("Running in a normal Python process.")

        for a in sys.argv:
            print("sys.argv[]: {}".format(a))
        print(sys.executable)
        print(os.getcwd())

    if DEBUG:
        print("THIS …
Run Code Online (Sandbox Code Playgroud)

pyinstaller python-3.x pyqt5 macos-big-sur

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