我在嵌入式Linux环境中工作,我有一些我想使用的Python代码.我的Python代码只是在做一些数学运算,而不是使用Numpy以外的任何库和常见的库.
有没有办法建立一个我可以用C或C++代码调用的库?
我正在开发基于嵌入式加速计的手势识别.有人知道一些免费图书馆要么雇用还是从一开始?我正在使用嵌入式Linux,我正在寻找一些计算量不大的东西.除了数十篇理论论文,YouTube视频或"封闭式"应用程序之外,我在谷歌上找不到太多东西.
我知道这是一个非常广泛的问题,但我认为它可以帮助处于相同情况的每个人.
谢谢!
我正在使用 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) 我正在嵌入式Linux中编写一个多线程C程序,从用户空间访问许多I2C设备(从设备).此外,我从多个线程访问相同的I2C设备.我正在使用SMBUS函数(i2c_smbus_write_byte_data,i2c_smbus_read_byte_data,i2c_smbus_read_i2c_block_data,...).
是否有内置并发访问的保护或我是否需要自己添加互斥?
例如:我有一个读取功能,通过I2C读取一个传感器的数据.但是也可以从另一个线程调用相同的函数,从而导致可能的并发访问.我是否必须在该函数中使用某些静态互斥锁,或者它是否已经在I2C访问函数中?
当我收到此错误时,我将一些驱动程序嵌入到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文件没有头文件(我没有写它,我只是在这里找到它并且我正在实现.他们说它已经过测试所以我假设不需要头文件?
其余代码编译完美(因此它"看到"文件夹中的代码),包含上面代码的文件也编译完成!
我正在尝试使用 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 语言使用 MCU,并且我有一个已经制作好的库,我想用它来构建我自己的应用程序。区别在哪里:
这是一个非常基本和普遍的问题,但我想澄清一下..
我正在尝试构建一个在 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) c ×4
i2c ×2
linux ×2
python ×2
atmel ×1
compilation ×1
concurrency ×1
core-audio ×1
ioctl ×1
linux-kernel ×1
mutex ×1
numpy ×1
portaudio ×1
pyaudio ×1
pyinstaller ×1
pyqt5 ×1
python-3.x ×1