调用videocapX.ocx控件遇到的问题

By admin at 2018-05-06 • 0人收藏 • 357人看过

最近准备用到摄像头,根据以前论坛上的那个貌似有时候摄像头显示不了,下载这个控件的示例发现每次能完美解决, 所以想要封装下这个控件。

我声明了个库:videoX.aardio

import util.metaProperty;

class videoX{
    ctor(winform){  
        this = winform.createEmbed("{912FB007-DD9A-11D3-BD8D-DAAFCB8D9378}"); 
    }; 
    
    aboutBox = function(){
        this._object.AboutBox();
    };

    @_metaProperty;
}
namespace videoX{
    
    _metaProperty = ..util.metaProperty(
    	connected = {
    		_set = function( v ){
    			owner._object.Connected = v;
    		} 	
    	};
    	preview = {
			_set = function( v ){
    			owner._object.Preview = v;
    		} 	
    	};
    )    	    	
}

调用的时候:

import win.ui;
import win.ui.ctrl.afvideocapture;
/*DSG{{*/
var winform = win.form(text="视频捕获控件";right=614;bottom=487;parent=...)
winform.add(
custom={cls="custom";text="custom";left=27;top=11;right=587;bottom=366;z=1}
)
/*}}*/

winform.show()

import console
console.open()

import videoX;
var vdx = videoX(winform.custom);
vdx.aboutBox()
vdx.connected = true;
vdx.preview = true;

 
win.loopMessage();

那个aboutbox弹出信息框倒是对了,后面根据官方文档来写怎么弄都出不来摄像图像,唉

错误提示:

blob.png

查看这个错误地方

blob.png

这里是按照文档写的,为什么会有这个提示呢?

blob.png

2 个回复 | 最后更新于 2018-05-19
2018-05-07   #1

 貌似这个是vb的标准控件,会在vs的控件栏里出现这个控件图标,这种的aar应该怎么调用

 我今天给我们公司用vb.net的人说,他们说这个是标准控件,会在vs控件栏生成一个标准摄像头控件,然后拖上去就可以了,感觉和aar的自定义控件很像啊

这个com控件里面用的是dispinterface接口

网上搜了下,貌似说是利用事件驱动,接口有点区别


2018-05-26   #2
import win.ui;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=650;bottom=499)
mainForm.add(
picturebox={cls="picturebox";left=0;top=0;right=475;bottom=375;z=1}
)
/*}}*/

var dll = ..raw.loadDll("\res\VideoCaptureModule.dll",,"cdecl");
vInit = dll.api("VideoCaptureModule_Initialize","int()" )
vUnInit = dll.api("VideoCaptureModule_UnInitialize","int()" )
vGetCameraCount = dll.api("VideoCaptureModule_GetCameraCount","int(int& nCameraCount)" )
vGetCameraName = dll.api("VideoCaptureModule_GetCameraName","int(string& strSourceName)" )
vSetSelectedNumber = dll.api("VideoCaptureModule_SetSelectedCamera","int(int& nNumber)" )
vOpen = dll.api("VideoCaptureModule_Open","int()" )
vClose = dll.api("VideoCaptureModule_Close","int()" )
vPlay = dll.api("VideoCaptureModule_Play","int()" )
vStop = dll.api("VideoCaptureModule_Stop","int()" )
vSetFrameSize = dll.api("VideoCaptureModule_SetFrameSize","int(int nWidth, int nHeight)" )
vGetFrameSize = dll.api("VideoCaptureModule_GetFrameSize","int(int& nWidth, int& nHeight)" )
vGetFrame = dll.api("VideoCaptureModule_GetFrame","int(addr pFrame, int nWidth, int nHeight)" )


import console
console.open()

vInit();
var ret,count = vGetCameraCount(10);
console.dump(count)
var ret,cname = vGetCameraName(raw.buffer(1000));
console.dump(ret)
console.dump(cname)
var nn = 0;
console.log( vSetSelectedNumber(nn ));
vSetFrameSize(450,350);
vOpen();
vPlay();
var ret,wdd,hdd = vGetFrameSize(0,0);
console.log(wdd,hdd)


//var xxx = raw.buffer(450*350*3);
var ret,imagebyte = vGetFrame(0,450,350);
//import gdip;
//var bmp = gdip.bitmap(450,350,,xxx);

//mainForm.picturebox.image = imagebyte;
console.dump(imagebyte)
/*
 pagef = {
 	BYTE buff[];
 };
vGetFrame(pagef.buff,450,350);

console.dump(pagef)
*/
mainForm.enableDpiScaling();
mainForm.show();

return win.loopMessage();


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...