func init // adds using namespace sys.add_use('EyeOneWrapper') // adds assembly sys.add_assembly('ColorMine', 'ColorMine.dll') if(not fcopy('' + code(packet_dir()) + 'assembly\\EyeOne.dll', project_dir() && 'EyeOne.dll')) error(this.name + ' - can not copy assembly to ' + project_dir()) end // use external class sys.UseClass("EyeOne") // initialize instance sys.add_object(this.codename, 'EyeOne') // initialize properties sys.set_typed_field(104, 'Beep') sys.set_undef_field_const('ColorSpace', this.props("ColorSpace"), 'I1_ColorSpace') sys.set_undef_field_const('MeasurementMode', this.props("MeasurementMode"), 'I1_MeasurementMode') sys.set_typed_field(104, 'Recognition') sys.set_undef_field_const('DensityFilter', this.props("DensityFilter"), 'I1_DensityFilter') sys.set_undef_field_const('DensityStandard', this.props("DensityStandard"), 'I1_DensityStandard') sys.set_undef_field_const('Illumination', this.props("Illumination"), 'I1_Illumination') sys.set_undef_field_const('Observer', this.props("Observer"), 'I1_Observer') sys.set_undef_field_const('WhiteBase', this.props("WhiteBase"), 'I1_WhiteBase') sys.set_undef_field_const('DeviceSubType', this.props("DeviceSubType"), 'I1_DeviceSubType') sys.set_undef_field_const('Intensity', this.props("Intensity"), 'I1_Intensity') sys.set_undef_field_const('ScreenType', this.props("ScreenType"), 'I1_ScreenType') // make methods for the fields sys._prop_init('Beep', 1, 1, 104) sys._prop_init('ColorSpace', 0, 1, 0) sys._prop_init('MeasurementMode', 0, 1, 0) sys._prop_init('Recognition', 1, 1, 104) sys._prop_init('DensityFilter', 0, 1, 0) sys._prop_init('DensityStandard', 0, 1, 0) sys._prop_init('Illumination', 0, 1, 0) sys._prop_init('Observer', 0, 1, 0) sys._prop_init('WhiteBase', 0, 1, 0) sys._prop_init('DeviceSubType', 0, 1, 0) sys._prop_init('Intensity', 0, 1, 0) sys._prop_init('ScreenType', 0, 1, 0) sys._prop_init('Version', 1, 0, 2) sys._prop_init('MeasurementModes', 1, 0, 2) sys._prop_init('SerialNumber', 1, 0, 2) sys._prop_init('LastCalibrationTime', 1, 0, 2) sys._prop_init('CalibrationCount', 1, 0, 2) sys._prop_init('PhysicalFilter', 1, 0, 2) sys._prop_init('LastError', 1, 0, 2) sys._prop_init('ExtendedErrorInformation', 1, 0, 2) sys._prop_init('LastAutoDensityFilter', 1, 0, 2) // initialize event handlers // event "onError" if(linked("onError")) blk_init.println(this.codename, '.OnError += new OnErrorDelegate(i1_OnError);') sys.blocks_store() event("onError", 'message') blk_proc_imp.println('private void i1_OnError(string sender, I1_Status status, string message) { // ', this.codename, ':onError').inc() .println('if (this.InvokeRequired) {').inc() .println('try {').inc() .println('this.Invoke(new OnErrorDelegate(i1_OnError), sender, status, message);') .dec().println('} catch {} return;') .dec().println('}') if(not blk_lvars.empty()) blk_proc_imp.copyhere(blk_lvars) end blk_proc_imp.copyhere(blk) .dec().println('}') sys.blocks_restore() end // create temp blocks sys.blocks_store() tmp = block.reggen().inc().inc() tmp_lvars = block.reggen().inc().inc() // initialize handler blk_init.println(this.codename, '.OnMessage += new OnDeviceMessageDelegate(i1_OnMessage);') // event "onButton" blk.inc().inc().inc() event("onButton", 'axSerialNumber') // save event body "onButton" if(not blk.empty()) tmp.copyhere(blk) blk = block.reggen().inc().inc().inc() end if(not blk_lvars.empty()) tmp_lvars.copyhere(blk_lvars) blk_lvars = block.reggen().inc().inc().inc() end // event "onDisconnect" blk.inc().inc().inc() event("onDisconnect", 'axSerialNumber') blk_proc_imp.println('private void i1_OnMessage(I1_DeviceMessage axMessage, string axSerialNumber) { // ', this.codename, ':onMessage').inc() .println('if (this.InvokeRequired) {').inc() .println('try {').inc() .println('this.Invoke(new OnDeviceMessageDelegate(i1_OnMessage), axMessage, axSerialNumber);') .dec().println('} catch {} return;') .dec().println('}') if(not tmp_lvars.empty()) blk_proc_imp.copyhere(tmp_lvars) end if(not blk_lvars.empty()) blk_proc_imp.copyhere(blk_lvars) end blk_proc_imp.println('switch (axMessage){').inc() .println('case I1_DeviceMessage.eDeviceButtonPressed:').inc() .println('{').inc() if(not tmp.empty()) blk_proc_imp.copyhere(tmp) end blk_proc_imp.println('break;') .dec().println('}') .dec().println('case I1_DeviceMessage.eDeviceDisconnected:').inc() .println('{').inc() .copyhere(blk) .println('break;') .dec().println('}') .dec().println('default:').inc() .println('break;') .dec().dec().println('}') .dec().println('}') //delete temp blocks sys.blocks_restore() block.delete(tmp) block.delete(tmp_lvars) end func doCalibrate() blk.println(this.codename, '.Calibrate();') end func doReset() blk.println(this.codename, '.SetOption(I1.I1_RESET, I1.I1_ALL);') end func doReset2(data) blk.println(this.codename, '.SetOption(I1.I1_RESET, ', sys.to_type(data, 2), ');') end func IsConnected return(this.codename + '.IsConnected') end func IsCalibrated return(this.codename + '.IsCalibrated') end