# GetVCAN412Settings Method - neoVI API

This method reads the configuration settings from a ValueCAN4-1 and ValueCAN4-2 device.

{% tabs %}
{% tab title="C/C++ Declare" %}

```cpp
int _stdcall icsneoGetVCAN412Settings(void * hObject, SVCAN412Settings *pSettings, int iNumBytes);
```

{% endtab %}

{% tab title="Visual Basic .NET Declare" %}

```vbnet
Public Declare Function icsneoGetVCAN412Settings Lib “icsneo40.dll” (ByVal hObject As IntPtr, ByRef pSettings As SVCAN412Settings, ByVal iNumBytes As Int32) As Int32
```

{% endtab %}

{% tab title="C# Declare" %}

```csharp
[DllImport(“icsneo40.dll”)] public static extern Int32 icsneoGetVCAN412Settings(IntPtr hObject, ref SVCAN412Settings pSettings, Int32 iNumBytes);
```

{% endtab %}
{% endtabs %}

**Parameters**

hObject

\[in] Specifies the driver object created by [OpenNeoDevice](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/basic-functions-overview-intrepidcs-api/openneodevice-method-intrepidcs-api).

pSettings

\[out] Pointer to a [SVCAN412Settings](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/structures-types-and-defines-overview-intrepidcs-api/setting-structures-overview-intrepidcs-api/svcan412settings-structure) structure.

iNumBytes

\[in] This value is always the size, in bytes, of the [SVCAN412Settings](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/structures-types-and-defines-overview-intrepidcs-api/setting-structures-overview-intrepidcs-api/svcan412settings-structure) structure.

**Return Values**

Returns 1 if successful, 0 if an error occurred. [GetLastAPIError](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/error-functions-overview-intrepidcs-api/getlastapierror-method-intrepidcs-api) must be called to obtain the specific error. The errors that can be generated by this function are:

NEOVI\_ERROR\_DLL\_NEOVI\_NO\_RESPONSE = 75

**Remarks**

After getting the current settings, you may change the parameters defined in the [SVCAN412Settings](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/structures-types-and-defines-overview-intrepidcs-api/setting-structures-overview-intrepidcs-api/svcan412settings-structure) structure and write the settings back to the ValueCAN 4-1 and ValueCAN 4-2 using [SetVCAN412Settings](https://docs.intrepidcs.com/neovi-api/win32-api-overview-intrepidcs-api/device-settings-functions-overview-intrepidcs-api/valuecan-4-1-and-4-2-intrepidcs-api/setvcan412settings-method-intrepidcs-api).

### Examples

{% tabs %}
{% tab title="C/C++ Example" %}

```cpp
SVCAN412Settings VcanReadSettings;
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes=sizeof(VcanReadSettings );
iResult = icsneoGetVCAN412Settings(m_hObject, &VcanReadSettings , iNumberOfBytes);
if(iResult == 0)
{
    MessageBox::Show("Problem reading configuration");
    return;
}
```

{% endtab %}

{% tab title="C# Example" %}

```csharp
//Declared at form level and previously open with a call to OpenNeoDevice
IntPtr m_hObject; //handle for device,
SVCAN412Settings VcanReadSettings = new SVCAN412Settings();
int iNumberOfBytes;
int iResult;

//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings);
iResult = icsNeoDll.icsneoGetVCAN412Settings(m_hObject,ref VcanReadSettings , iNumberOfBytes);
if (iResult == 0)
{
    MessageBox.Show("Problem reading configuration");
    return;
}
```

{% endtab %}

{% tab title="Visual Basic .NET Example" %}

```vbnet
Private m_hObject As IntPtr '// Declared at form level and previously open with a call to OpenNeoDevice

Dim VcanReadSettings As SVCAN412Settings
Dim iNumberOfBytes As Integer
Dim iResult As Integer

'//Get the settings
iNumberOfBytes = System.Runtime.InteropServices.Marshal.SizeOf(VcanReadSettings)
iResult = icsneoGetVCAN412Settings(m_hObject, VcanReadSettings , iNumberOfBytes)
If iResult = 0 Then
    MsgBox("Problem reading configuration")
    Exit Sub
End If
```

{% endtab %}
{% endtabs %}
