GetValue(TPCANHandle, TPCANParameter, UInt32, UInt32)

PCAN-Basic

PCAN-Basic Documentation
Home
PreviousUpNext
GetValue(TPCANHandle, TPCANParameter, UInt32, UInt32)

Retrieves information from a PCAN Channel in numeric form.

Syntax
class function GetValue(
    Channel: TPCANHandle;
    Parameter: TPCANParameter;
    NumericBuffer: PLongWord;
    BufferLength: LongWord
    ): TPCANStatus; overload;
[DllImport("PCANBasic.dll", EntryPoint = "CAN_GetValue")]
public static extern TPCANStatus GetValue(
    [MarshalAs(UnmanagedType.U1)]
    TPCANHandle Channel,
    [MarshalAs(UnmanagedType.U1)]
    TPCANParameter Parameter,
    out UInt32 NumericBuffer,
    UInt32 BufferLength);
[DllImport("PCANBasic.dll", EntryPoint = "CAN_GetValue")]
static TPCANStatus GetValue(
    [MarshalAs(UnmanagedType::U1)]
    TPCANHandle Channel,
    [MarshalAs(UnmanagedType::U1)]
    TPCANParameter Parameter,
    UInt32 %NumericBuffer,
    UInt32 BufferLength);
<DllImport("PCANBasic.dll", EntryPoint:="CAN_GetValue")> _
Public Shared Function GetValue( _
    <MarshalAs(UnmanagedType.U1)> _
    ByVal Channel As TPCANHandle, _
    <MarshalAs(UnmanagedType.U1)> _
    ByVal Parameter As TPCANParameter, _
    ByRef NumericBuffer As UInt32, _
    ByVal BufferLength As UInt32) As TPCANStatus
End Function
Parameters 
Description 
Channel 
The handle of a PCAN Channel (see TPCANHandle). 
Parameter 
The code of the information to be retrieved (see TPCANParameter). 
NumericBuffer 
The buffer to return the required numeric value. 
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 an integer buffer. 
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 read. 

Use the method GetValue to get information about PCAN environment as parameters like the Message Filter and values like the availability of a PCAN-Channel. 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 read can be found in Parameter Value Definitions.

The following example shows the use of the method GetValue on the channel PCAN_USBBUS1 to check if the Message Filter is fully opened. 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;
UInt32 iBuffer;

strMsg = new StringBuilder(256);

// The status of the message filter of the PCAN-USB Channel 1 is asked
//
result = PCANBasic.GetValue(PCANBasic.PCAN_USBBUS1, TPCANParameter.PCAN_MESSAGE_FILTER, out iBuffer, sizeof(UInt32));
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
    // A text is shown giving information about the current status of the filter
    //
    switch(iBuffer)
    {
        case PCANBasic.PCAN_FILTER_OPEN:
            MessageBox.Show("The message filter for the PCAN-USB, channel 1, is completely opened.");
            break;
        case PCANBasic.PCAN_FILTER_CLOSE:
            MessageBox.Show("The message filter for the PCAN-USB, channel 1, is closed.");
            break;
        case PCANBasic.PCAN_FILTER_CUSTOM:
            MessageBox.Show("The message filter for the PCAN-USB, channel 1, is custom configured.");
            break;
    }

C++/CLR:

TPCANStatus result;
StringBuilder^ strMsg;
UInt32 iBuffer;

strMsg = gcnew StringBuilder(256);

// The status of the message filter of the PCAN-USB Channel 1 is asked
//
result = PCANBasic::GetValue(PCANBasic::PCAN_USBBUS1, TPCANParameter::PCAN_MESSAGE_FILTER, iBuffer, sizeof(iBuffer));
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
    // A text is shown giving information about the current status of the filter
    //
    switch(iBuffer)
    {
        case PCANBasic::PCAN_FILTER_OPEN:
            MessageBox::Show("The message filter for the PCAN-USB, channel 1, is completely opened.");
            break;
        case PCANBasic::PCAN_FILTER_CLOSE:
            MessageBox::Show("The message filter for the PCAN-USB, channel 1, is closed.");
            break;
        case PCANBasic::PCAN_FILTER_CUSTOM:
            MessageBox::Show("The message filter for the PCAN-USB, channel 1, is custom configured.");
            break;
    }

Visual Basic:

Dim result As TPCANStatus
Dim strMsg As StringBuilder
Dim iBuffer As UInt32

strMsg = New StringBuilder(256)

' The status of the message filter of the PCAN-USB Channel 1 is asked
'
result = PCANBasic.GetValue(PCANBasic.PCAN_USBBUS1, TPCANParameter.PCAN_MESSAGE_FILTER, iBuffer, CType(System.Runtime.InteropServices.Marshal.SizeOf(iBuffer), 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
    ' A text is shown giving information about the current status of the filter
    '
    Select Case iBuffer
        Case PCANBasic.PCAN_FILTER_OPEN
            MessageBox.Show("The message filter for the PCAN-USB, channel 1, is completely opened.")
        Case PCANBasic.PCAN_FILTER_CLOSE
            MessageBox.Show("The message filter for the PCAN-USB, channel 1, is closed.")
        Case PCANBasic.PCAN_FILTER_CUSTOM
            MessageBox.Show("The message filter for the PCAN-USB, channel 1, is custom configured.")
    End Select
End If

Pascal OO:

var
    result : TPCANStatus;
    strMsg: array [0..256] of Char;
    iBuffer: LongWord;
begin
    // The status of the message filter of the PCAN-USB Channel 1 is asked
    //
    result := TPCANBasic.GetValue(TPCANBasic.PCAN_USBBUS1, PCAN_MESSAGE_FILTER, PLongWord(@iBuffer), sizeof(iBuffer));
    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
    begin
        // A text is shown giving information about the current status of the filter
        //
        if iBuffer = TPCANBasic.PCAN_FILTER_OPEN then
                MessageBox(0, 'The message filter for the PCAN-USB, channel 1, is completely opened.', 'Success',MB_OK);
        if iBuffer = TPCANBasic.PCAN_FILTER_CLOSE then
                MessageBox(0, 'The message filter for the PCAN-USB, channel 1, is closed.', 'Success',MB_OK);
        if iBuffer = TPCANBasic.PCAN_FILTER_CUSTOM then
                MessageBox(0, 'The message filter for the PCAN-USB, channel 1, is custom configured.', 'Success',MB_OK);
    end;
Copyright © 2017. PEAK-System Technik GmbH. All rights reserved.
Send feedback to this documentation