Matlab Remote Server
ScanImage includes a TCP/IP server and client that can be used to execute Matlab commands on a remote computer.
To launch the server, execute the following command:
Server startup
>> IPWhitelist = {'127.0.0.1/32'};
>> serverPort = 5555;
>> hServer = most.network.matlabRemote.Server(5555,IPWhitelist);
hServer = 
  Server with properties:
    port: 5555
    IPWhitelist: {'127.0.0.1/32'}
To shut the server down execute
Server shutdown
>> hServer.delete();
Matlab Remote Client
On the remote computer, execute the following commands in the Matlab command window:
>> serverAddress = '127.0.0.1';
>> serverPort = 5555;
>> hClient = most.network.matlabRemote.Client(serverAddress,serverPort);
   Connected to server running Matlab 9.6.0.1072779 (R2019a)
>> hClient.feval('disp','Hello World!'); % Execute a function on the server
>> myData = rand(3) % create a local variable with some data 
myData =
   0.1023 0.7350 0.4641
   0.9614 0.9924 0.6104
   0.1540 0.4698 0.9597
>> myData_server = hClient.upload(myData) % upload data to the server
myData_server =
   ServerVariable on server 127.0.0.1:5555
   Class: double
   Size: [3 3]
>> myData_server = myData_server + 100; % manipulate the data on the server
>> myData = myData_server.download() % retrieve the data from the server
myData =
   100.1023 100.7350 100.4641
   100.9614 100.9924 100.6104
   100.1540 100.4698 100.9597
>> hClient.delete();
ScanImage Control
The TCP/IP server exposes all ScanImage functionality via ScanImage's API calls. To launch ScanImage on a remote computer execute the following command:
(The TCP/IP server needs to be started on the remote computer first)
serverAddress = '127.0.0.1';
serverPort = 5555;
>> hClient = most.network.matlabRemote.Client(serverAddress,serverPort);
   Connected to server running Matlab 9.6.0.1072779 (R2019a)
>> hSI_server = hClient.feval('scanimage','C:\Machine_Data_File.m'); % start ScanImage, provide MDF to suppress startup dialog
>> hSI_server.startFocus();
>> lastFrame_server = hSI_server.hDisplay.lastFrame
   lastFrame_server =
      ServerVariable on server 127.0.0.1:5555
      Class: cell
      Size: [1 1]
>> lastFrame = lastFrame_server.download()
   ans =
      1×1 cell array
      {512×512 double}
>> hSI_server.abort();
>> hSI_server.exit();
>> hClient.delete();
To retrieve the hSI handle from an already running ScanImage instance, execute the following command:
(The TCP/IP server needs to be started on the remote computer first)
serverAddress = '127.0.0.1';
serverPort = 5555;
>> hClient = most.network.matlabRemote.Client(serverAddress,serverPort);
   Connected to server running Matlab 9.6.0.1072779 (R2019a)
>> hSI_server = hClient.feval('evalin','base','hSI'); % retrieve hSI handle from server base workspace