Author |
Topic |
|
GeigerWriter
5 Posts |
Posted - 07/29/2021 : 16:27:14
|
Hello.
I am trying to make a program that can read and write the tube voltage of the GMC-500+ by accessing its configuration data. However, I'm having some trouble because I have no idea what the 512 bytes that are returned from <GETCFG>> represent. Well, I know that two bytes (the 347th and 348th bytes) store the value of Tube1's voltage, but not much else. The most recent communication protocol (GQ-RFC1801) doesn't seem to contain this information.
Here are 512 bytes of data returned from <GETCFG>> after a factory reset: 00 01 01 00 1F 00 00 64 00 64 3F 26 66 66 75 30 43 43 00 00 00 64 42 3B 33 33 00 3F 00 00 00 00 01 03 00 00 00 00 FF FF FF FF FF FF 00 01 00 78 0A 00 15 3C 00 0A FF 00 00 00 0A 00 01 0A 00 64 00 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 77 77 77 2E 67 6D 63 6D 61 70 2E 63 6F 6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 6C 6F 67 32 2E 61 73 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 02 03 00 3F 3B 02 00 00 01 00 78 00 C8 00 32 00 64 05 01 01 9A A1 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0E 24 00 00 15 07 1D 11 2C 1F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
Bolded is 0x019A, the factory default voltage 410 V. Could anyone tell me what the rest means? |
|
Reply #1
EmfDev
2250 Posts |
Posted - 07/29/2021 : 17:03:41
|
Hi GeigerWriter, I cannot check now but the Tube voltage 1 and 2 are both 1 bytes each and should be around 299-300 or close. The maximum value of both is 150. You must modify the cfg when device is off because it will not update when you just set it when the device is on. It will update the voltage during power up. |
|
|
Reply #2
EmfDev
2250 Posts |
Posted - 07/29/2021 : 17:06:28
|
To check which byte it is, change tube 1 voltage and tube 2, then power off, then read the cfg again and compare which values changed. The voltage is based on a level ranging 0-150 / 150. |
|
|
Reply #3
GeigerWriter
5 Posts |
Posted - 07/29/2021 : 17:32:06
|
quote: Originally posted by EmfDev
Hi GeigerWriter, I cannot check now but the Tube voltage 1 and 2 are both 1 bytes each and should be around 299-300 or close. The maximum value of both is 150. You must modify the cfg when device is off because it will not update when you just set it when the device is on. It will update the voltage during power up.
I'm not sure if this is right. When I change Tube1's voltage manually, it goes up to about 660 volts.
|
|
|
Reply #4
GeigerWriter
5 Posts |
Posted - 07/30/2021 : 14:06:09
|
Just an update. I tried changing the configuration while the device is off, but nothing changed. Whenever I try to write a new voltage to the CFG, the CFG changes accordingly (GETCFG returns what I wrote with WCFG), but the device itself remains unchanged. However in the process of debugging I found that Tube1's voltage changed when some other bytes in the CFG were inadvertently changed. I just want to know what the bytes represent so I know what to change. |
|
|
Reply #5
GeigerWriter
5 Posts |
Posted - 07/30/2021 : 16:58:54
|
So I think I figured it out. The voltage for Tube1 is controlled by the 331st byte in the CFG (at address 0x014A). This is the 1-byte value that varies between 0 and 150 (0x00 - 0x96). The factory default is 0x3F (63), which when you navigate to Tube1's settings manually you will see as 42% (63/150). When you divide all of the CFG values by 150, you see that the byte next to it must control Tube2's voltage as the factory default percent is 39.33% (0x3B = 59, 59/150 = 0.39333..)
Presumably the "voltage" bytes at 0x015A and 0x015B are controlled by this value, which is why they can't be meaningfully "written" to. |
|
|
Reply #6
GeigerWriter
5 Posts |
Posted - 08/11/2021 : 14:08:38
|
Hi. I would still really like to know what the others bytes are supposed to represent. |
|
|
Reply #7
EmfDev
2250 Posts |
Posted - 08/11/2021 : 16:14:53
|
Hi GeigerWriter,
Here is from support. Other configs are not used. PowerOnOff, // 0 AlarmOnOff, //1 SpeakerOnOff, IdleDisplayMode, BackLightTimeoutSeconds, IdleTitleDisplayMode, AlarmCPMValueHiByte, //6 AlarmCPMValueLoByte, CalibrationCPMHiByte_0, CalibrationCPMLoByte_0, CalibrationuSvUcByte3_0, CalibrationuSvUcByte2_0, //11 CalibrationuSvUcByte1_0, CalibrationuSvUcByte0_0, CalibrationCPMHiByte_1, CalibrationCPMLoByte_1, //15 CalibrationuSvUcByte3_1, CalibrationuSvUcByte2_1, CalibrationuSvUcByte1_1, CalibrationuSvUcByte0_1, CalibrationCPMHiByte_2, //20 CalibrationCPMLoByte_2, CalibrationuSvUcByte3_2, CalibrationuSvUcByte2_2, CalibrationuSvUcByte1_2, CalibrationuSvUcByte0_2, //25 IdleTextState, AlarmValueuSvByte3, AlarmValueuSvByte2, AlarmValueuSvByte1, AlarmValueuSvByte0, //30 AlarmType, SaveDataType, SwivelDisplay, ZoomByte3, ZoomByte2, //35 ZoomByte1, ZoomByte0, SPI_DataSaveAddress2, SPI_DataSaveAddress1, SPI_DataSaveAddress0, //40 SPI_DataReadAddress2, SPI_DataReadAddress1, SPI_DataReadAddress0, nPowerSavingMode, nSensitivityMode, //45 nCOUNTER_DELAY_HiByte, nCOUNTER_DELAY_LoByte, nDisplayContrast, MAX_CPM_HIBYTE, MAX_CPM_LOBYTE, //50 XXXXX, nLargeFontMode, nLCDBackLightLevel, nReverseDisplayMode, nMotionDetect, //55 bBatteryType, nBaudRate, nCPMSpeakerOnOffCalib, nGraphicDrawingMode, nLEDOnOff, //60 XXXXX, nSaveThresholdValueuSv_m_nCPM_HIBYTE, nSaveThresholdValueuSv_m_nCPM_LOBYTE, nSaveThresholdMode, nSaveThresholdValue3, //65 nSaveThresholdValue2, nSaveThresholdValue1, nSaveThresholdValue0,
SSID_0, //... SSID_63 = SSID_0 + 63,
Password_0, //... Password_63 = Password_0 + 63,
Website_0, //.... Website_31 = Website_0 + 31,
URL_0, //.... URL_31 = URL_0 + 31,
UserID_0, //........... UserID_31 = UserID_0 + 31,
CounterID_0, //.... CounterID_31 = CounterID_0 + 31,
Period, WIFIONOFF, TEXT_STATUS_MODE, FAST_ESTIMATE_TIME,
THIRD_PARTY_OUTPUT, //for sending 0xFF per count via serial. This data format used on NETC.com software
HIGH_VOLTAGE_LEVEL_TUBE1, // for adjusting tube 1 voltage HIGH_VOLTAGE_LEVEL_TUBE2, // for adjusting tube2 voltage CPM_TUBE_MODE, CPM_TUBE_DISPLAY, VOLTAGE_DISPLAY, DEADTIME_ENABLE, DEADTIME_TUBE1_HIBYTE, DEADTIME_TUBE1_LOWBYTE, DEADTIME_TUBE2_HIBYTE, DEADTIME_TUBE2_LOWBYTE, MEDIUMTHRESHOLD_HB, MEDIUMTHRESHOLD_LB, HIGHTHRESHOLD_HB, HIGHTHRESHOLD_LB, SpeakerVolume, HV_READING, TARGET_HV_MSB, TARGET_HV_LSB, HV_CALIB, // screenshot SS1_0, SS1_5 = SS1_0 + 5, SS2_0, SS2_5 = SS2_0 + 5, SS3_0, SS3_5 = SS3_0 + 5, SS4_0, SS4_5 = SS4_0 + 5,
ACCURACY_DISPLAY,
DOSE_ALARM_0, DOSE_ALARM_1, DOSE_ALARM_2, DOSE_ALARM_3, //this one uses 6 byte space and always keep it at last Save_DateTimeStamp, //this one uses 6 byte space and always keep it at last MaximumBytes, |
|
|
|
Topic |
|
|
|