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

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

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

我声明了个库: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();


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...