Sets a configuration or information numeric value within a PCAN Channel.
class function SetValue( Channel: TPCANHandle; Parameter: TPCANParameter; NumericBuffer: PUInt64; BufferLength: LongWord ): TPCANStatus; overload;
[DllImport("PCANBasic.dll", EntryPoint = "CAN_SetValue")] public static extern TPCANStatus SetValue( [MarshalAs(UnmanagedType.U1)] TPCANHandle Channel, [MarshalAs(UnmanagedType.U1)] TPCANParameter Parameter, ref UInt64 NumericBuffer, UInt32 BufferLength);
[DllImport("PCANBasic.dll", EntryPoint = "CAN_SetValue")] static TPCANStatus SetValue( [MarshalAs(UnmanagedType::U1)] TPCANHandle Channel, [MarshalAs(UnmanagedType::U1)] TPCANParameter Parameter, UInt64 %NumericBuffer, UInt32 BufferLength);
<DllImport("PCANBasic.dll", EntryPoint:="CAN_SetValue")> _ Public Shared Function SetValue( _ <MarshalAs(UnmanagedType.U1)> _ ByVal Channel As TPCANHandle, _ <MarshalAs(UnmanagedType.U1)> _ ByVal Parameter As TPCANParameter, _ ByRef NumericBuffer As UInt64, _ ByVal BufferLength As UInt32) As TPCANStatus End Function
Parameters |
Description |
Channel |
The handle of a PCAN Channel (see TPCANHandle). |
Parameter |
The code of the value to be set (see TPCANParameter). |
NumericBuffer |
The buffer containing the 64-bit numeric value to be set. |
BufferLength |
The length in bytes of the given buffer. |
The return value is a TPCANStatus code. PCAN_ERROR_OK is returned on success. The typical errors in case of failure are:
PCAN_ERROR_ILLPARAMVAL: |
Indicates that the parameters passed to the method are invalid. Check the parameter 'NumericBuffer'; it should point to a 64-bit integer buffer. |
PCAN_ERROR_CAUTION: |
The configuration of a parameter failed due to a no more existing channel. The parameter has been reset on all existing channels. |
PCAN_ERROR_INITIALIZE: |
Indicates that the given PCAN channel was not found in the list of initialized channels of the calling application. |
PCAN_ERROR_ILLPARAMTYPE: |
Indicates that the requested information is not available for the given PCAN Channel. Check the value of 'Parameter'; some values are not available for all PCAN-Channels or cannot be set. |
PCAN_ERROR_ILLOPERATION: |
An underlying process that is generated by a call to this method with the current parameters, is temporarily not allowed. The configuration in relation to the used TPCANParameter must be checked. |
Use the method SetValue to set configuration information or environment values of a PCAN Channel as parameters like an Acceptance Filter. Take in account that not all parameters are supported for all PCAN-Channels. The access's type of the parameters can also be different.
More information about the parameters and values that can be set can be found in Parameter Value Definitions.
The following example shows the use of the method SetValue on the channel PCAN_USBBUS1 to set a message filter as a 11-bit acceptance code and mask, allowing only IDs from 0x100 to 0x103. In case of failure, the returned code will be translated to a text (according with the operating system language) in English, German, Italian, French or Spanish, and it will be shown to the user.
Note: It is assumed that the channel was already initialized.
C#:
TPCANStatus result; StringBuilder strMsg; UInt64 i64Buffer; strMsg = new StringBuilder(256); // The acceptance code and mask are packed as 64-bit value // i64Buffer = 0x100; // Acceptance code i64Buffer <<= 32; i64Buffer |= 0x003; // Acceptance mask result = PCANBasic.SetValue(PCANBasic.PCAN_USBBUS1, TPCANParameter.PCAN_ACCEPTANCE_FILTER_11BIT, ref i64Buffer, sizeof(UInt64)); if (result != TPCANStatus.PCAN_ERROR_OK) { // An error occurred, get a text describing the error and show it // PCANBasic.GetErrorText(result, 0, strMsg); MessageBox.Show(strMsg.ToString()); } else MessageBox.Show("The 11-bit acceptance filter was configured successfully");
C++/CLR:
TPCANStatus result; StringBuilder^ strMsg; UInt64 i64Buffer; strMsg = gcnew StringBuilder(256); // The acceptance code and mask are packed as 64-bit value // i64Buffer = 0x100; // Acceptance code i64Buffer <<= 32; i64Buffer |= 0x003; // Acceptance mask result = PCANBasic::SetValue(PCANBasic::PCAN_USBBUS1, TPCANParameter::PCAN_ACCEPTANCE_FILTER_11BIT, i64Buffer, sizeof(i64Buffer)); if (result != TPCANStatus::PCAN_ERROR_OK) { // An error occurred, get a text describing the error and show it // PCANBasic::GetErrorText(result, 0, strMsg); MessageBox::Show(strMsg->ToString()); } else MessageBox::Show("The 11-bit acceptance filter was configured successfully");
Visual Basic:
Dim result As TPCANStatus Dim strMsg As StringBuilder Dim i64Buffer As UInt64 strMsg = New StringBuilder(256) ' The acceptance code and mask are packed as 64-bit value ' i64Buffer = &H100 ' Acceptance code i64Buffer <<= 32 i64Buffer = i64Buffer Or &H3 ' Acceptance mask result = PCANBasic.SetValue(PCANBasic.PCAN_USBBUS1, TPCANParameter.PCAN_ACCEPTANCE_FILTER_11BIT, i64Buffer, CType(System.Runtime.InteropServices.Marshal.SizeOf(i64Buffer), UInteger)) If result <> TPCANStatus.PCAN_ERROR_OK Then ' An error occurred, get a text describing the error and show it ' PCANBasic.GetErrorText(result, 0, strMsg) MessageBox.Show(strMsg.ToString) Else MessageBox.Show("The 11-bit acceptance filter was configured successfully") End If
Pascal OO:
var result : TPCANStatus; strMsg: array [0..256] of Char; i64Buffer: UInt64; begin // The acceptance code and mask are packed as 64-bit value // i64Buffer := $100; // Acceptance code i64Buffer := i64Buffer shl 32; i64Buffer := i64Buffer Or $3; // Acceptance mask result := TPCANBasic.SetValue(TPCANBasic.PCAN_USBBUS1,PCAN_ACCEPTANCE_FILTER_11BIT, PUInt64(@i64Buffer), sizeof(i64Buffer)); If (result <> PCAN_ERROR_OK) Then begin // An error occurred, get a text describing the error and show it // TPCANBasic.GetErrorText(result, 0, strMsg); MessageBox(0, strMsg, 'Error',MB_OK); end else MessageBox(0, 'The 11-bit acceptance filter was configured successfully', 'Success',MB_OK); end;
Copyright © 2017. PEAK-System Technik GmbH. All rights reserved.
|
Send feedback to this documentation
|