Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const testAddon = require('./build/Debug/CanonSDK_win32_x64.node');
  2. const { Worker, SHARED_ENV, isMainThread, parentPort } = require('worker_threads');
  3. if (isMainThread) {
  4.     function processExitHandler() {
  5.         if (LiveviewWorker !== undefined && LiveviewWorker instanceof Worker) LiveviewWorker.unref();
  6.         testAddon.DisconnectFromSelectedCamera();
  7.         testAddon.TerminateSDK();
  8.     }
  9.     process.on('exit', processExitHandler.bind(null));
  10.     process.on('SIGINT', processExitHandler.bind(null));
  11.     process.on('SIGUSR1', processExitHandler.bind(null));
  12.     process.on('SIGUSR2', processExitHandler.bind(null));
  13.     process.on('uncaughtException', processExitHandler.bind(null));
  14.  
  15.     const LiveviewWorker = new Worker(__filename, {
  16.         env: SHARED_ENV
  17.     });
  18.     LiveviewWorker.on('online', () => console.log('%cLiveview Worker', 'color: yellow; font-size:12px;'))
  19.     LiveviewWorker.on('message', e => {
  20.         if (e === 'pong') {
  21.             console.log('pOng');
  22.             LiveviewWorker.postMessage('ping');
  23.         }
  24.     });
  25.     LiveviewWorker.on('error', e => console.error(e));
  26.  
  27.     const readline = require('readline');
  28.     const readl = readline.createInterface({
  29.         input: process.stdin,
  30.         output: process.stdout
  31.     });
  32.  
  33.     function recursiveCLI() {
  34.         readl.question("cmd: ", (r) => {
  35.             switch (r.toLowerCase()) {
  36.                 case 'exit':
  37.                 case 'e':
  38.                     LiveviewWorker.terminate()
  39.                         .then(() => {
  40.                             process.exit(0);
  41.                         })
  42.                         .catch((e) => {
  43.                             console.error(e);
  44.                         })
  45.                     break;
  46.                 case 'name':
  47.                     console.log(testAddon.ArtistName()) // <-- getter, werkt
  48.                     console.log(testAddon.ArtistName("Plop" + Date.now().toString())); // <-- setter, werkt
  49.                     recursiveCLI();
  50.                     break;
  51.                 case 'startlievview':
  52.                 case 'slv':
  53.                     if (LiveviewWorker instanceof Worker) LiveviewWorker.postMessage({ type: 'cmd', value: 'start' });
  54.                     recursiveCLI();
  55.                     break;
  56.                 case 'endlievview':
  57.                 case 'elv':
  58.                     if (LiveviewWorker instanceof Worker) LiveviewWorker.postMessage({ type: 'cmd', value: 'stop' });
  59.                     recursiveCLI();
  60.                     break;
  61.                 case 'testliveview':
  62.                 case 'tlv':
  63.                     console.log(testAddon.StartLiveView(
  64.                         10,
  65.                         function (data) {
  66.                             console.log('testliveview', data);
  67.                         }
  68.                     ))
  69.                     recursiveCLI();
  70.                     break;
  71.                 case 'picture':
  72.                 case 'p':
  73.                     testAddon.TakePicture()
  74.                         .then(value => console.log(value))
  75.                         .catch(err => console.error(err))
  76.                         .finally(recursiveCLI())
  77.                     break;
  78.                 default:
  79.                     recursiveCLI();
  80.             }
  81.         })
  82.     }
  83.  
  84.     testAddon.InitializeSDK();
  85.     testAddon.SetSelectedCamera(0);
  86.     testAddon.PropertyEventCallback((event, property) => {
  87.         console.log("Prop change => ", testAddon.PropertyEvents[event], testAddon.PropertyIDS[property]);
  88.     });
  89.     testAddon.ObjectEventCallback((event) => {
  90.         console.log("Object change =>", testAddon.ObjectEvents[event]);
  91.     });
  92.     testAddon.StateEventCallback((event, parameter) => {
  93.         console.log("State change =>", testAddone.StateEvents[event], parameter);
  94.     });
  95.     testAddon.ConnectToSelectedCamera();
  96.  
  97.     recursiveCLI();
  98. }
  99. else {
  100.     parentPort.on('message', (input) => {
  101.         if (input === 'end') process.exit(0);
  102.         if (input === 'ping') {
  103.             console.log('ping');
  104.             setTimeout(() => {
  105.                 parentPort.postMessage('pong');
  106.             }, 1000);
  107.             return;
  108.         }
  109.         const type = input.type.toString().trim().toLowerCase();
  110.         const value = input.value.toString().trim().toLowerCase();
  111.         switch (type) {
  112.             case 'cmd':
  113.                 switch (value) {
  114.                     case 'start':
  115.                         console.log(testAddon.ArtistName()) // <-- getter, werkt
  116.                         console.log(testAddon.ArtistName("Plop" + Date.now().toString())); // <-- setter, werkt niet
  117.                         break;
  118.                     case 'stop':
  119.                         parentPort.postMessage('worker end');
  120.                         break;
  121.                 }
  122.                 break;
  123.             case 'value':
  124.                 break;
  125.             default:
  126.                 break;
  127.         }
  128.     });
  129. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement