我非常了解C,而不是C++ - 并且想要用C++创建硬件驱动程序.我需要一些指示.
在C中,我将创建一个结构,使用函数指针并相应地填充func指针,在运行时填充ether,或者通过编译时初始化{就像在Linux内核驱动程序中重新初始化的设备驱动程序}.Linux设备驱动程序通常有一个'driver private'元素,让驱动程序保持一个特定于实现的指针(保存其他东西)
我不知道该怎么做 - 使用C++类创建相同的东西.
我的例子是一个串口.
驱动程序的硬件部分 - 在C中将是这样的:
struct serail_driver;
struct serial_hw_level;
struct serial_hw_level {
// points to implementation specific details
inptr_t hw_private;
// basically pure virtual functions
int (*wrBytes)( struct serial_driver *pDriver, uint8_t *ptr_bytes, int nBytes );
int (*rdBytes)( struct serial_driver *pDriver, uint8_t *ptr_bytes, int nBytes );
/* there would be other member funds, but this is is a short example */
};
/* the generic serial port */
struct serial_generic_driver {
const char *name; …Run Code Online (Sandbox Code Playgroud) 会出现这种变体的问题,但不会出现这种错误情况。
此代码可在 Linux 上运行,但在 windows10 OpenCV 3.4.2、64 位 -Python 3.6 上失败 - 通过“pip3 install opencv-python”安装
它在 Windows 上失败并显示以下错误消息。
如果我删除 'cv2.set()' 的 horz 和 virt 大小,它可以工作,没有问题,但分辨率不是我想要的
我的目标是从默认图像大小更改为更大的大小。
v=3.4.2
Camera H=480, W=640
Camera H=480, W=640
[ WARN:0] videoio(MSMF): OnReadSample() is called with error status: -1072875855
[ WARN:0] videoio(MSMF): async ReadSample() call is failed with error status: -1072875855
[ WARN:1] videoio(MSMF): can't grab frame. Error: -1072875855
[ WARN:1] videoio(MSMF): can't grab frame. Error: -2147483638
Run Code Online (Sandbox Code Playgroud)
这是 Python 代码
import cv2
print("v=%s" % cv2.__version__)
cap …Run Code Online (Sandbox Code Playgroud)