Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const testAddon = require('./build/Debug/CanonSDK_win32_x64.node');
- const { Worker, SHARED_ENV, isMainThread, parentPort } = require('worker_threads');
- if (isMainThread) {
- function processExitHandler() {
- if (LiveviewWorker !== undefined && LiveviewWorker instanceof Worker) LiveviewWorker.unref();
- testAddon.DisconnectFromSelectedCamera();
- testAddon.TerminateSDK();
- }
- process.on('exit', processExitHandler.bind(null));
- process.on('SIGINT', processExitHandler.bind(null));
- process.on('SIGUSR1', processExitHandler.bind(null));
- process.on('SIGUSR2', processExitHandler.bind(null));
- process.on('uncaughtException', processExitHandler.bind(null));
- const LiveviewWorker = new Worker(__filename, {
- env: SHARED_ENV
- });
- LiveviewWorker.on('online', () => console.log('%cLiveview Worker', 'color: yellow; font-size:12px;'))
- LiveviewWorker.on('message', e => {
- if (e === 'pong') {
- console.log('pOng');
- LiveviewWorker.postMessage('ping');
- }
- });
- LiveviewWorker.on('error', e => console.error(e));
- const readline = require('readline');
- const readl = readline.createInterface({
- input: process.stdin,
- output: process.stdout
- });
- function recursiveCLI() {
- readl.question("cmd: ", (r) => {
- switch (r.toLowerCase()) {
- case 'exit':
- case 'e':
- LiveviewWorker.terminate()
- .then(() => {
- process.exit(0);
- })
- .catch((e) => {
- console.error(e);
- })
- break;
- case 'name':
- console.log(testAddon.ArtistName()) // <-- getter, werkt
- console.log(testAddon.ArtistName("Plop" + Date.now().toString())); // <-- setter, werkt
- recursiveCLI();
- break;
- case 'startlievview':
- case 'slv':
- if (LiveviewWorker instanceof Worker) LiveviewWorker.postMessage({ type: 'cmd', value: 'start' });
- recursiveCLI();
- break;
- case 'endlievview':
- case 'elv':
- if (LiveviewWorker instanceof Worker) LiveviewWorker.postMessage({ type: 'cmd', value: 'stop' });
- recursiveCLI();
- break;
- case 'testliveview':
- case 'tlv':
- console.log(testAddon.StartLiveView(
- 10,
- function (data) {
- console.log('testliveview', data);
- }
- ))
- recursiveCLI();
- break;
- case 'picture':
- case 'p':
- testAddon.TakePicture()
- .then(value => console.log(value))
- .catch(err => console.error(err))
- .finally(recursiveCLI())
- break;
- default:
- recursiveCLI();
- }
- })
- }
- testAddon.InitializeSDK();
- testAddon.SetSelectedCamera(0);
- testAddon.PropertyEventCallback((event, property) => {
- console.log("Prop change => ", testAddon.PropertyEvents[event], testAddon.PropertyIDS[property]);
- });
- testAddon.ObjectEventCallback((event) => {
- console.log("Object change =>", testAddon.ObjectEvents[event]);
- });
- testAddon.StateEventCallback((event, parameter) => {
- console.log("State change =>", testAddone.StateEvents[event], parameter);
- });
- testAddon.ConnectToSelectedCamera();
- recursiveCLI();
- }
- else {
- parentPort.on('message', (input) => {
- if (input === 'end') process.exit(0);
- if (input === 'ping') {
- console.log('ping');
- setTimeout(() => {
- parentPort.postMessage('pong');
- }, 1000);
- return;
- }
- const type = input.type.toString().trim().toLowerCase();
- const value = input.value.toString().trim().toLowerCase();
- switch (type) {
- case 'cmd':
- switch (value) {
- case 'start':
- console.log(testAddon.ArtistName()) // <-- getter, werkt
- console.log(testAddon.ArtistName("Plop" + Date.now().toString())); // <-- setter, werkt niet
- break;
- case 'stop':
- parentPort.postMessage('worker end');
- break;
- }
- break;
- case 'value':
- break;
- default:
- break;
- }
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement