MEGSV8x.dll revision history, beginning with 1.13

Version 1.47
New:
- Can be compiled for supporting multiple GSV transport protocol over network using TCP/IP.
  Open pseudo-COMport 240 for networking first, then up to 14 more network GSVs can follow from No. 241
  IP adress in a text file C:\ProgramData\MEsystemeGSVmulti\NWsettings.ucf with content:
  ServerIP = "192.168.1.1"
  whereby the string is the server IP adress. TCP-port is fixed to 2345
- Compiler switches refactored to CompilerSwitch.h
Improvments/Updates:
- GSV86writeFTsensorFromFile: New syntax for units (Unit_0...) supported
- GSV86getValMapping, GSV86setValMapping: DIOmapping supported
- GSV86readFormattedTEDSList reviewed, updated

Version 1.46 Nov. 2024
Improvments/Updates:
- New functions: GSV86readFTsensorCalArrayA, GSV86writeFTsensorCalArrayA: Sensortype added. Necessary for new
  sensor types NxM with newer device firmware
- GSV86writeFTsensorCalArray, GSV86readFTsensorCalArray: Zero-Values of sensor also stored with GSV-6 from FW-version 3.47
- GSV86getInTypeRange: With GSV-6 from FWver 3.47 and Chan=0: the maximum Input range (i.e. at gain=0) is read
- GSV86getAllInTypesRanges: Also usable with GSV-6 from FWver 3.47
- GSV86setInType: Improved for GSV-6 and GSV-6BT
- GSV86read1wireTemperatur checks *temp=NULL
- GSV86writeFTsensorCalArrExt: Also usable with GSV-6 from FWver 3.47 and cleaner with empty string ModelName
- GSV86writeFTsensorCalArrInfo: Also usable with GSV-6 from FWver 3.47 and:
  if reserved[0]= -(ArrNo+1) and reserved[1]>0: SensorType= reserved[1] set and Array stored (again)
- GSV86readLoggerFrequency, GSV86writeLoggerFrequency also works with GSV-6 Logger device via UART
Fix:
- GSV86getLastProtocollError could fail severely in case that a device/ComNo was released before
- GSV86readFTsensorSerNo could fail severely in case that a serial number with more than 8 digits is saved in the device memory
- GSV86readInterfaceSetting: *Writable now set correctly

Version 1.45	Nov. 2023
Improvments/Updates:
- GSV86readLinearValue, GSV86writeLinearValue: Serial No added (ChaType= 0x20..27)
Fix:
- GSV86calcSetDfilterParams failed when 1st time called for calculating FIR filter
- The functions GSV86loadSettings and eventually GSV86setCounterFreqMode could result in a wrong error return (although it succeeded)
  with GSV-8 with Firmware versions < 1.45
- A few missing ComNo parameter range checks added, redundand checkings omitted

Version 1.44
- GSV86loadSettings(default): With GSV-6BT, all inputs are set to Bridge by BT121 processor
- GSV86setInType: supported with GSV-6/GSV-6BT
- New functions:
  - GSV86readMultiAllDevices: Synchronized reading from several devices, see MEGSV86w32.h
  - GSV86syncMSclearAllBuf: Synchronized buffer clear and start of several devices. Clears internal buffers used by GSV86readMultiAllDevices
  - New error codes for these functions: ERR_CONCURRENT_ACC_DENIED, ERR_CHAN_BUF_UNEQUAL_FILL, ERR_MULTIDEV_BUF_OVL, ERR_DEV_BUF_UNEQUAL_SIZE
  - GSV86readLinearValue, GSV86writeLinearValue, GSV86storeLinearData and GSV86copyLinearData:
    API for linearization, supported by GSV-6 from firmware version 3.44
- Public zip archive: LabView_x64 is deployed with the 64-bit library named MEGSV86w32.dll for easier porting between 32- / 64-Bit projects;
  LabView_x64 is build with LV2017-64.
  So, both variantes now have the same name "MEGSV86w32.dll". For distinction, the file propertied have to be inspected:
  32-Bit: Full VersionNo: 1.44.3.32 Description: "32-Bit Dynamic Link Library for GSV-8/-6"
  64-Bit: Full VersionNo: 1.44.3.64 Description: "64-Bit Dynamic Link Library for GSV-8/-6"
Fix: GSV86setInType with GSV-6BT (had error in 1.43 only)

Version 1.43 15.03.2023 17:21
Improvments/Updates:
- GSV86setInType: With GSV-6BT from FW-version 3.41, it calls FW-cmd. 0xA3 (CMD_SETINPUTTYP), so that GSV-6BT can select
  calibration value for 0-10V single ended input / PT1000 input (if available)
- GSV86writeFTsensorCalArrInfo: if reserved[0] = -(ArrayIndex+1), it calls StoreSixAxData, so that the additional data is stored
  in EEPROM by GSV-8
- Fix GSV86setDfilterOnOff: With Chan =0, the OnOff parameter was not evaluated correctly

Version 1.42 31/08/2022 (used with GSVmulti v. 1.51)
Improvments/Updates:
- Read thread functions and GSV86read/ReadMultiple: More efficient and more resilient against incoming frame/comm. errors
Fixes:
- GSV86resetDevice: Fixed error, that occurred if GSV86activateExtended was used with ACTEX_FLAG_USE_CRC flag


Version 1.41 21/3/2022
Improvments/Updates:
- Read functions: 2nd trial also, if CRC error (and timeout error as before), therefore: internal fct. SendReceiveCmd refactored
- GSV86setDfilterParams, GSV86getDfilterInfo: minor change to support FIR filter for GSV-6
Fixes:
- GSV86resetDevice: corrected re-enabling of CRC
- GSV86BTsetMaxPower

Version 1.40 23/2/2022
Updates:
- Supports CRC for both Measured Value Frames and Command requests/answers. CRC-16 for Value frames and CRC-8 for commands/answers.
  If CRC-16 is enabled in the device (TXmode(0, Bit 5)) or if GSV86activateextended is used with flag ACTEX_FLAG_USE_CRC,
  the CRC it will be used for both Measured Value Frames and Command requests/answers, if supported by device (see command description).
  New error codes: ERR_CMD_CRC, ERR_WRONG_MVFRAME_CRC, ERR_WRONG_CMDANS_CRC
- GSV86getInterfaceIdentity: New possible flag SET_MV_CRC for StopPermTX: Enable CRC-16 for measuring value frames, if supported
- New values for parameter "code" of GSV86getUnitText and GSV86setUnitText:
  TXTCODE_UTF8	0x01000000 : UTF-8
  TXTCODE_UTF16	0x02000000 : UTF-16 encoded as USC2, little-endian, terminated with 0x0000
  It affects the way of string encoding, see MEGSV86w32.h
- GSV86release: With GSV-6BT: If GSV6CPU remains on, StopTX is eventually given, to make following opening safer.
- GSV86loadSettings: after settings loaded, the number of channel objects in value frame is determined, so this function is now
  prepared for eventually coming device behaviour changes in this regard.
New functions:
	GSV86readInterfaceEntry @266
	GSV86writeLoggerFrequency @264
	GSV86readLoggerFrequency @265
	GSV86readInterfaceEntry @266
	GSV86getCommState @268

Version 1.39 27/8/2021
- GSV86setInterfaceOnOff improved for GSV-6

Version 1.38.1 06/2021
Fixes/updates:
- With GSV-6BT and BGscript-Ver <1.00: close SD-card file in GSV86release, if GSVonOff Mode = off
- GSV6BTrecover: With bit 2 in ActionFlags set: Reset BT121, so that BT settings are cleared to default and BT name = ""
- GSV86setInterfaceOnOff With GSV-6 (v. 1.38.1), the Interface Appl. type value is read and written-back internally
New functions:
	GSV86readCustomSerNo @260
	MEwriteCustomSerNo @261
	GSV86readManufacturerSerNo @262

Version 1.37 03/2021
Fixes/updates:
	GSV86MEwriteCal: range test updated for new GSV-6 special type
	GSV86loadSettings: Reset done with GSV-6
Version 1.36 29/09/2020
New functions:
	GSV86writeFTsensorCalArrInfo
	GSV86readProhibitSetZero
	GSV86writeProhibitSetZero
Fixes/updates:
	Fast mesuring value frames supported: up to 8 channel sets

Version 1.35 17/07/2020
Fixes/updates:
	Memory leak eliminated; leak appeared if GSV86activateExtended failed with wrong ComNo

Version 1.34 22/06/2020
New functions:
	MEgsv86writeBytes (priviledged access only)
Fixes/updates:
	(int flags) of GSV86activateExtended stored
	Simulator for GSV-8 introduced (still _DEBUG only)
	GSV6BTrecover improved (usage not yet recommended)
	
Version 1.33 20/05/2020
Fixes/updates:
	Digital I/O functions: Enabled for GSV-6
	GSV86getAnalogOutType/GSV86setAnalogOutType: Adapted for GSV-6
	GSV86getTXmode(0): Sync-Master/Slave Flag as with GSV-8
	GSV86setValMapping: Improved error-Management
	GSV86MEwriteCal/GSV86readCal: Device communicates different data types: fixed
	GSV86readZeroValue: return value sign-extended with GSV-6
	
Version 1.32 17/03/2020
New functions:
	GSV6BTrecover (usage not yet recommended)
	MEgsv86setSoftwareConfig
Fixes/updates:
	SimulateDfilter: Fix for case: 1st time called & type=FIR
	GSV86getTXmode: detects Sync-Slave also with GSV-6 FW-ver 3.28

Version 1.31 09/03/2020
New functions:
	 GSV86readKeyDebounce @248
	 GSV86writeKeyDebounce @249
	 MEgsv86specialDevMode @250
GSV86getTXmode(Index=0): With GSV-6 it detects Sync-Slave, if available and sets bit 8 accordingly
GSV86writeRTCtime: New Index= -3: Sync with PC time (waits for change in sec), set as UTC

Version 1.30 17/01/2020
New functions:
	GSV86read1wire
	GSV86write1wire
	GSV86read1wireTemperatur
GSV86getModelInfo and GSV86readHWversion also read Version of Co-Processor with GSV-8
GSV86activateExtended: New flag ACTEX_FLAG_REMAP_1458333BAUD=0x20 for "flags": If set and the Bitrate is 1458333 Bits/s,
        the Com-port will be opened with 300 Bits/s instead. The reason is a particular serial-to-Ethernet converter
        "Perle IOLAN SDG1", that in "Full Mode" may not be able to use this special baud rate and can be configured to remap 300 Bits/s
        to the desired 1458333 Bits/s for the GSV-8 device.

Version 1.29
New function:
	GSV86getModelInfo
- Workaround in GSV86writeFTsensorCalArrExt for GSV-8 FW-bug 
- GSV-6BT treatment improved: Model earlier determined in GSV86activateExtended, information saved in
  gsvs[ComNo]->CoMCUver. Model info can be retrieved by GSV86getModelInfo
  Effect: GSV86getInTypeRange an others that call GSV86BTinitConfig execute faster for GSV-6(non-BT)

Version 1.28
- Neu Baud rate 1750000 Bits/s supported
- All Read functions: Read once repeated, if specific error ERR_NO_GSV_ANSWER at previous attempt.
  (before: second try at every error).
- GSV86getAllInTypesRanges: because of GSV-8: Counter-type added new: NUM_INTYPES=8
- GSV86writeFTsensorCalArrExt: NULL-ptr test for MatrixB and FakIdx omitted. Enable set Type & ggf Modelname only

Version 1.27: 11/02/2019
- New error codes: ERR_ACC_RDONLY 0x76 (device)
		ERR_WAIT_CMD_RESSOURCE_TOUT 0x30000069
		ERR_DLL_READTHREAD 0x300000F8
- Improved multi-threading capabilities: Safer if used with several caller threads

Version 1.26:
- Function GSV86getCounterFreqMode / GSV86getCounterFreqMode: New Constants for GSV-8
  - GSV86read: Improved error management
  - GSV86getValObjectInfo: Method updated for new GSV-8 Version 1.44
  
Version 1.25:
New function:
	GSV86readValueString
Functional changes:
	- Function GSV86copyFromSDfile uses GSV86readSDfileExt, if FW-version >=3.20
	- Function GSV86writeRTCtime: If Parameter "ix" is = -2, it waits for the next second of the system time
	  and then writes the new time to the device (v. 1.25.3.xx)
	- With many functions, Parameters of type "int" are checked for being <0; if so: function refused
Fix:
- GSV86BTreadBatteryVoltage: Return value was voltage*1000 or GSV_ERROR. Corrected to standard-errorcode
- GSV86readFTsensorCalArray: Function didn't work properly with newer GSV-6 and parameter SensorSerNo=NULL (ver. 1.25.1.xx)

Version 1.24:
- Long Command response supported, up to 270 Bytes can be read
New function (usable with GSV-6BT from Firmware version 3.20 on):
	GSV86readSDfileExt
	
Version 1.23:
New functions (usable with GSV-8 from Firmware version 1.39 on):
	GSV86writeFTsensorCalArrExt
	GSV86readFTsensorCalArrExt
	GSV86readAutoZeroSetting
	GSV86writeAutoZeroSetting
	GSV86getAutoZeroProperty
	GSV86setAutoZeroProperty
	GSV86readDevCalInfo
	GSV86MEsetDevcalInfo
Functional changes:
	GSV86writeFTsensorFromFile: If sensor *.dat file is for matrix plus (= MatrixB = matrix 2nd order),
	the additional values and the sensor type will be set in the device accordingly, if it supports that.

Version 1.22 (also 1.21.3.xx):
- GSV-6: Functions GSV86setMode,GSV86setFrequency,GSV86loadSettings,GSV86writeAnalogOutOffset
  that require a device reset: StartTX issued, is Tx was started before. Avoids unexpected stopping of
  measuring data stream, which happened before, if TX was permanently (non-volatile) stopped.
- Same with GSV86loadSettings, although pseudo-reset (re-init) performed by device itself
- GSV86MEwriteInputRange: Perform Reset with GSV-6
- GSV86BTinitConfig: Sent to device only it was not sent before, or if GSV86BTexitConfig was sent before
- GSV86BTexitConfig: Only sent to device, if GSV86BTinitConfig was performed before (safer)
- GSV86readSDfile: 2nd try on error at 1st eliminated
- GSV86setLoggerAlarmInterval: Disabled Alarm-Mode with setMode=0

Version 1.21:
GSV-6BT/ITA: SD-card file logger supported

New Command functions:
	 GSV86readRTCtime @220
	 GSV86writeRTCtime @221
	 GSV86readLoggerSettings @222
	 GSV86writeLoggerSettings @223
	 GSV86controlFileLog @224
	 GSV86querySDfileSys @225
	 GSV86openSDfileDir @226
	 GSV86getSDfileInfo @227
	 GSV86readSDfile @228
	 GSV86copyFromSDfile @229
	 GSV86getLoggerAlarmInterval @230
	 GSV86setLoggerAlarmInterval @231
	 GSV86BTgetLoggerInterval @416
	 GSV86BTsetLoggerInterval @417
Functional changes:
	 GSV86getValMapping/GSV86setValMapping usable with (newer) GSV-6 

Version 1.20:
- GSV-6 with multi-axis sensor: several calibration arrays supported
New Command functions:
	GSV86readRawValue
Functional changes:
	- Response timeout changed from 6s to 2s
	- GSV-6: GSV86getCounterFreqMode, GSV86setCounterFreqMode:
		- Reserved parameter CntNo must be=0
		- Flag usage changes (documentation changed only, see header)
With GSV-6: GSV86loadSettings: Functional safety improved
Bugfixes:
	- Bug in Digital Filter functions, which in rare cases lead to wrong results
	- With GSV-6: GSV86MEwriteInputRange
	- GSV86BTgetMaxPower

Version 1.19:
- Dynamic change of number of values in measuring value frame improved and bug-fixed
- GSV86read/writeDeviceHours: Available for GSV-6

Version 1.18:	30/06/2017
- Improved support for GSV-6/ITA device:
  E.g. automatic device reset with the following functions (Firmware version 3.10 and above):
  	GSV86setMode, GSV86setFrequency, GSV86setValMapping, GSV86writeAnalogOutOffset
  
- New Functions:
	GSV86getValMapping, GSV86setValMapping
	GSV86resetDevice
	GSV86getCounterFreqMode, GSV86setCounterFreqMode
  For GSV-6 BT only:
  	GSV86BTinitConfig
 	GSV86BTexitConfig
  	GSV86BTgetMaxPower, GSV86BTsetMaxPower
  	GSV86BTgetBTmode, GSV86BTsetBTmode
  	GSV86BTreadName, GSV86BTwriteName
  	GSV86BTreset
  	GSV86BTgetGSVonOff, GSV86BTsetGSVonOff
  	GSV86BTsetDefault
  	GSV86BTreadBatteryVoltage
  	GSV86BTgetInType, GSV86BTsetInType
  	GSV86BTsetDigitalOut
  	
Version 1.17:
- Supporting GSV-6/ITA device
- Bugfix GSV86triggerValue

Version 1.16:
- New function: GSV86getLastDeviceError
- Revision and reformatted (doxygen) comment in C-Header

Version 1.15:
- Fkt. GSV86changePassword: Length of new password not ignored anymore
- Typo-corrections at two of the error-explanation texts
- Review and update of the C-Header

Version 1.14:
- Bug in unit text array: UnitNo 10 was kg, now correctly: lb

Version 1.13, deployed to GSVmulti v. 1.37 and GSV8terminal.exe Version 1.8
New Fkt:
- GSV86getTEDSactive: determines if TEDS-data were really loaded