UNPKG

tinycv

Version:

Camera tiny control library

282 lines (246 loc) 9 kB
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)