tinycv
Version:
Camera tiny control library
282 lines (246 loc) • 9 kB
JavaScript
var tinycv = require('../lib/tinycv.js')
var fs = require("fs");
const { TinycvCamera, Fireware, UpgradeCode, upgradeState, deviceType } = require('../lib/tinycv.js');
const { exit } = require('process');
const { format } = require('path');
const { type } = require('os');
//console.log(tinycv.hello());
/*
var device = tinycv.hello2();
console.log(device.GetDeviceName());
tinycv.hello3(function(){
device = tinycv.hello2();
device.SetDeviceName("test2");
console.log(device.GetDeviceName());
});
*/
tinycv.startMonitorTinycvLog(function(file, line, func, severity, content) {
console.log(file);
console.log(line);
console.log(content);
});
const device = new tinycv.Device("testDevicePath", "testDeviceName", "testInstanceId", 2);
//var usbendpoint = new tinycv.UsbEndpoint("test");
//usbendpoint.GetSubDevices();
//usbendpoint.GetDisplayName();
console.log(device.deviceName);
console.log(device.devicePath);
console.log(device.instanceId);
console.log(device.type);
device.deviceName = "testDeviceName2";
device.type = 2;
console.log(device.deviceName);
console.log(device.type);
//var usbEndpoints = tinycv.DeviceManager.EnumerationUsbEndpoint();
/*
tinycv.DeviceManager.EnumerationUsbEndpoint(function(err, usbEndpoints) {
var devices = usbEndpoints[1].GetSubDevices();
console.log("unqiueId: " + usbEndpoints[1].GetUniqueId());
for (let i = 0; i < devices.length; i++) {
console.log("-----------------------------------");
console.log(devices[i].deviceName);
console.log(devices[i].devicePath);
console.log(devices[i].instanceId);
console.log(devices[i].type);
}
});
*/
const devicePath ="\\\\?\\usb#vid_3429&pid_0002&mi_00#6&32c68d67&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\global";
console.log(tinycv.upgradeState.succeed);
var fireware = null;
tinycv.DeviceManager.EnumerationUsbEndpoint(function(err, usbEndpoints) {
//Test1();
usbEndpoints.forEach(function(usbEndpoint) {
console.log("pid: ", usbEndpoint.getDisplayName());
console.log("pid: ", usbEndpoint.getPid());
console.log("vid: ", usbEndpoint.getVid());
console.log("hub: ", usbEndpoint.getHub());
console.log("port: ", usbEndpoint.getPort());
var devices = usbEndpoint.getSubDevices();
for (let i = 0; i < devices.length; i++) {
if (devices[i].type == 0) {
/*
fireware = new tinycv.Fireware(usbEndpoint);
var name = fireware.name;
var version = fireware.version;
console.log(fireware.name);
console.log(fireware.version);
console.log(fireware.sn);
console.log(fireware.pn);
console.log(fireware.otakey);
fireware.onupgradeprogressupdated = function(value) {
console.log(value);
};
fireware.onupgradefinished = function(firewareFile, code, msg) {
console.log(code);
if (code != upgradeState.succeed) {
// 失败了
console.log(msg);
}
};
//fireware.Upgrade("D:\\中文测试\\FW517-LA-V100-20210617-091741.bin", true);
fireware = null;
break;
*/
}
}
});
/*
var devices = usbEndpoints[1].GetSubDevices();
console.log("unqiueId: " + usbEndpoints[1].GetUniqueId());
for (let i = 0; i < devices.length; i++) {
console.log("-----------------------------------");
console.log(devices[i].devicePath);
console.log(devices[i].type);
console.log(devices[i].chromiumDevicePath);
console.log(devices[i].ConvertToChromiumDeviceId(
devices[i].chromiumDevicePath, "F60EF71327A385940BA58205AF50DCD7", "https://www.onlinemictest.com"));
}
*/
});
var count = 0;
function OnFrame(frame) {
console.log(frame.width);
console.log(frame.height);
console.log(frame.size);
const buffer = Buffer.from(frame.data, 0, frame.size)
//for (i = 0; i < 100; ++i) {
//}
//console.log(buffer);
path = "D:\\testframe\\" + count.toString();
console.log(buffer)
//console.log(path);
//fs.appendFileSync(path, Buffer.from(buffer))
//console.log("appendFileSync done")
//console.log(buffer);
//var data = frame.data;
//var size = frame.size;
/*
all = fs.createWriteStream("out.jpeg");
for (i =0; i < size; i++) {
var buffer = new Buffer(new Uint8Array(data[i]));
all.write(buffer);
}
*/
count++;
}
function OnStarted(err) {
console.log("OnStartCapture")
console.log(err);
capture = TinycvCamera.Get(devicePath);
if (capture != null) {
//console.log(capture.GetBrightness());
capablitys = capture.GetCapabilitys();
//console.log(capablitys);
for (i = 0; i < capablitys.length; i++) {
console.log("-----------------------------------");
console.log(capablitys[i].width);
console.log(capablitys[i].height);
console.log(capablitys[i].maxFps);
}
// process.exit();
}
}
function OnOpen(err, capture) {
console.log("OnOpen ...")
console.log(err);
/*
capture.SetCaptureHandler(OnFrame);
var videoCaptureCapability = new tinycv.VideoCaptureCapability();
videoCaptureCapability.width = 640;
videoCaptureCapability.height = 480;
videoCaptureCapability.maxFps = 30;
capture.StartCapture(videoCaptureCapability, OnStarted);
*/
console.log(capture.getCapabilitys());
capture.setBrightness(70);
console.log(capture.getBrightness());
console.log(capture.getZoomValueRange());
capture.zoom(10);
capture.pan(-30);
}
var usbInstance = null;
function OnDeviceAdded(usbEndpoint) {
console.log("uniqueId: " + usbEndpoint.GetUniqueId());
const devices = usbEndpoint.GetSubDevices();
for (let i = 0; i < devices.length; i++) {
console.log("-----------------------------------");
/*
console.log(devices[i].deviceName);
console.log(devices[i].devicePath);
console.log(devices[i].instanceId);
console.log(devices[i].type);
*/
if (devices[i].type == deviceType.camera) {
try {
const fireware = new Fireware(usbEndpoint);
fireware.onupgradeprogressupdated = function(value) {
console.log(value);
};
fireware.onupgradefinished = function(firewareFile, code, msg) {
console.log(code);
if (code != upgradeState.succeed) {
// 失败了
console.log(msg);
}
};
console.log(fireware.name);
TinycvCamera.Open(devices[i].devicePath, OnOpen);
} catch(error) {
console.error(error);
}
}
}
}
function OnDeviceRemoved(usbEndpoint) {
console.log("uniqueId: " + usbEndpoint.GetUniqueId());
Test123();
console.log("tes");
try {
console.log("test");
} catch(ex) {
console.log(ex);
}
// fireware = null;
}
//tinycv.TinycvCamera.Open(devicePath, OnOpen);
tinycv.UsbMonitor.setDeviceInsertedHandler(OnDeviceAdded);
tinycv.UsbMonitor.setDeviceRemovedHandler(OnDeviceRemoved);
tinycv.UsbMonitor.start();
//tinycv.TinycvCamera.Open("\\\\?\\USB#VID_1FF7&PID_0507&MI_00#6&23ca07ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\GLOBAL", OnOpen);
//tinycv.TinycvCamera.Close("MI_00#6&23ca07ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}")
/*
var videoCaptureCapability = new tinycv.VideoCaptureCapability();
videoCaptureCapability.width = 640;
videoCaptureCapability.height = 480;
videoCaptureCapability.maxFps = 30;
console.log(videoCaptureCapability.width);
console.log(videoCaptureCapability.height);
console.log(videoCaptureCapability.maxFps);
console.log("\\\\");
var capture = new tinycv.VideoCapture("\\\\?\\USB#VID_1FF7&PID_0507&MI_00#6&23ca07ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\\GLOBAL");
//capture.StartCapture(videoCaptureCapability);
capture.SetFrameHandleCallback(function() {
//console.log(frame.width);
//console.log(frame.height);
//console.log(frame.size);
console.log("testtest")
});
capture.StartCapture(videoCaptureCapability, function(err) {
console.log("OnStartCapture")
console.log(err);
});
*/
//console.log("tttttttttttttttttttttttttttttttttttttttttttttttttt");
process.on('SIGINT', () => {
process.exit();
});
/*
process.on('exit', function() {
device
})
*/
setInterval(()=>{
tinycv.TinycvCamera.Close(devicePath);
//tinycv.TinycvCamera.Open("MI_00#6&23ca07ae&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}", OnOpen);
}, 50000)