Skip to content

IPCE Routine Commands

This section lists the commands specific to the IPCE routine.

Settings JSON

{
  "wavelength":{"Start":300,"Step":10,"End":900},
  "acquisition":{
    "Acquisition time (s)":1,
    "Averaging":1,
    "Delay (s)":0,
    "Bias Voltage (V)":0,
    "LED Level":0,
    "Chopper Frequency (Hz)":0
  },
  "device":{
    "type":"NI-SMU",
    "configuration":{
      "Autorange":true,
      "Current Range":3,
      "Voltage Range":0
    }
  }
}

device.configuration
The device.configuration object changes based on the device.type selected:

"configuration":{
  "Autorange":true,
  "Current Range":3,
  "Voltage Range":0
}


Data JSON

{
  "user":"Cicci Research",
  "device":"Sample",
  "temperature":0,
  "test":"IPCE",
  "time":"2025-11-20T16:28:47.462Z",
  "file":"",
  "scan":{
    "name":"IPCE",
    "columns":[
      "Wavelength (nm)",
      "EQE (%)",
      "J_DUT (A/cm2)",
      "J_int (A/cm2)"
    ],
    "data":[
      [300,5.11127313120292,9.99914652862212E-11,NaN],
      [310,4.09082352975042,1.79786580603119E-10,2.66787817748082E-7],
      [320,4.18754042209682,4.80029375632581E-10,1.63639676014496E-6],
      [330,4.9068748237155,1.51960531556791E-9,5.82337871103985E-6],
      ...
    ]
  }
}

Progress JSON

{
  "routine_status":"Running",
  "routine_name":"IPCE",
  "progress":{
    "wavelength":550,
    "points done":25,
    "total points":61,
    "progres_pct":40.98
  },
  "error":null
}

Custom Commands

Command Description
SetShutter Opens or closes the shutter.
SetWavelength Move the monochromator to the specified wavelength.
StartCalibration Start the lamp calibration with a photodiode.
GetChopperFrequency Retrieve the live chopper frequency.
GetMonochromatorStatus Get the monochromator status.

SetShutter

Description
Open or close the shutter

Warning

Do not call this command during a measurement to avoid interrupting it

Example Request

{
  "target": "ROUTINE",
  "command": "SetShutter",
  "parameter": { "shutter_status": true},
  "request_id": 201
}

Example Response

{
  "status": "OK",
  "data": { "state":"OK" },
  "request_id": 201
}

SetWavelength

Description
Move the monochromator to the specified wavelength in nm

Warning

Do not call this command during a measurement to avoid interrupting it

Example Request

{
  "target": "ROUTINE",
  "command": "SetWavelength",
  "parameter": { "wavelength": 550.0},
  "request_id": 201
}

Example Response

{
  "status": "OK",
  "data": { "state":"OK" },
  "request_id": 201
}

StartCalibration

Warning

Do not call this command during a measurement to avoid interrupting it

Description
Start the lamp calibration with a photodiode. Optionally provide a path to a responsivity file of the photodiode.

Example Request

{
  "target": "ROUTINE",
  "command": "StartCalibration",
  "parameter": { "path": "C:\\Arkeo\\calibration\\photodiode.txt"},
  "request_id": 201
}

Example Response

{
  "status": "OK",
  "data": { "state":"OK" },
  "request_id": 201
}

GetChopperFrequency

Description
Retrieve the live chopper frequency in Hz. Can be called at any time

Example Request

{
  "target": "ROUTINE",
  "command": "GetChopperFrequency",
  "request_id": 201
}

Example Response

{
  "status": "OK",
  "data": { "frequency":13.35 },
  "request_id": 201
}

GetMonochromatorStatus

Description
Returns the status and configuration of the monochromator. Can be called at any time

Example Request

{
  "target": "ROUTINE",
  "command": "SetShutter",
  "request_id": 201
}

Example Response

{
  "status": "OK",
  "data": {
    "type":"Serial Monochromator",
    "connected":true,
    "wavelength":550.1,
    "shutter":"Open",
    "filter":2,
    "grating":1,
    "config":{
      "gratwave":[0,1000],
      "gratpos":[1,2],
      "fltrwave":[100,355,625,1115,1580,Infinity],
      "fltrpos":[1,2,3,4,5,6],
      "autofilter":true,
      "autograting":true
    }
  },
  "request_id": 201
}

Example Command Sequence

{ "target": "MAIN",    "command": "StartRoutine", "parameter": { "routine": "IPCE"} }
{ "target": "ROUTINE", "command": "GetTestStatus" } // repeat until routine_status == "Ready"
{ "target": "ROUTINE", "command": "ApplySettings", "parameter": { ... Settings JSON ... } }
{ "target": "ROUTINE", "command": "StartMeasurement" }
{ "target": "ROUTINE", "command": "GetTestStatus" } // repeat until routine_status != "Running"
{ "target": "ROUTINE", "command": "GetTestData" } 
{ "target": "ROUTINE", "command": "CloseRoutine" }