PCAN-Basic目前支持28个参数,可以使用CAN_GetValue / CAN_SetValue函数来读取/配置。并不是所有参数都可以配置,因为有些参数是只读参数。下面你会发现一个带有参数及其相关值的列表:
• PCAN_DEVICE_ID 1
• PCAN_5VOLTS_POWER 2
• PCAN_RECEIVE_EVENT 3
• PCAN_MESSAGE_FILTER 4
• PCAN_API_VERSION 5
• PCAN_CHANNEL_VERSION 6
• PCAN_BUSOFF_AUTORESET 7
• PCAN_LISTEN_ONLY 8
• PCAN_LOG_LOCATION 9
• PCAN_LOG_STATUS 10
• PCAN_LOG_CONFIGURE 11
• PCAN_LOG_TEXT 12
• PCAN_CHANNEL_CONDITION 13
• PCAN_HARDWARE_NAME 14
• PCAN_RECEIVE_STATUS 15
• PCAN_CONTROLLER_NUMBER 16
• PCAN_TRACE_LOCATION 17
• PCAN_TRACE_STATUS 18
• PCAN_TRACE_SIZE 19
• PCAN_TRACE_CONFIGURE 20
• PCAN_CHANNEL_IDENTIFYING 21
• PCAN_CHANNEL_FEATURES 22
• PCAN_BITRATE_ADAPTING 23
• PCAN_BITRATE_INFO 24
• PCAN_BITRATE_INFO_FD 25
• PCAN_BUSSPEED_NOMINAL 26
• PCAN_BUSSPEED_DATA 27
• PCAN_IP_ADDRESS 28
• PCAN_LAN_SERVICE_STATUS 29
• PCAN_ALLOW_STATUS_FRAMES 30
• PCAN_ALLOW_RTR_FRAMES 31
• PCAN_ALLOW_ERROR_FRAMES 32
• PCAN_INTERFRAME_DELAY 33
• PCAN_ACCEPTANCE_FILTER_11BIT 34
• PCAN_ACCEPTANCE_FILTER_29BIT 35
• PCAN_IO_DIGITAL_CONFIGURATION 36
• PCAN_IO_DIGITAL_VALUE 37
• PCAN_IO_DIGITAL_SET 38
• PCAN_IO_DIGITAL_CLEAR 39
• PCAN_IO_ANALOG_VALUE 40
• PCAN_FIRMWARE_VERSION 41
• PCAN_AVAILABLE_CHANNELS_COUNT 42
• PCAN_AVAILABLE_CHANNELS 43
• PCAN_ALLOW_ECHO_FRAMES 44
• PCAN_DEVICE_PART_NUMBER 45
为了划定不同参数的用途,将其分为5组:
这个参数通过返回一个标志值来标识一个PCAN-Channel的使用状态。
例如,只有当PCAN-Channel可用时,连接才可能,这意味着:
• It is valid:PCAN-Channel是下面“Supported By”中列出的一种。
• It is connectable:PCAN-Channel没有初始化,或者目前被PCAN-View使用。
从版本1.0.0开始提供。然而,自版本以来,可用性得到了显著的改进
1.0.4,由于错误修复。在版本4.0.0中修改了该参数的行为。
PCAN-Channel的条件可以是以下定义的值之一
Defined Value | Description |
---|---|
PCAN_CHANNEL_UNAVAILABLE | 该通道没有连接/可访问。 |
PCAN_CHANNEL_AVAILABLE | 可以使用该通道。 |
PCAN_CHANNEL_OCCUPIED | 通道已经初始化。 |
PCAN_CHANNEL_PCANVIEW | 该通道正在被PCANView使用,但它可以被初始化。 |
该参数用于区分同时连接到一台计算机上的两个或多个同类设备。设备标识符是存储在每个设备的闪存中的持久值,也就是说,在断开硬件连接后,该值不会丢失。
注意,设备可以具有相同的标识符。由用户来保证所使用的设备配置了不同的标识符,以便通过这个值进行区分。
这个参数以前被称为PCAN_DEVICE_NUMBER。后来改名为
PCAN_DEVICE_ID从PCAN-Basic版本4.4.0开始。由于向后兼容的原因,PCAN_DEVICE_NUMBER仍然存在,但它被标记为已弃用。用户应该使用
PCAN_DEVICE_ID代替。
它从1.0.0版本开始提供。PCAN_DEVICE_NUMBER。
从4.4.0版本开始,无需初始化就可以读取它。
PCAN-PCI (Channels PCAN_PCIBUS1 to PCANPCIBUS16).
PCAN-USB (Channels PCAN_USBBUS1 to PCAN_USBBUS16).
PCAN-LAN (Channels PCAN_LANBUS1 to PCAN_LANBUS16).
注:
PCAN-PCI:仅基于FPGA的设备。需要大于等于设备驱动版本号4.2.0.
PCAN-LAN:仅支持固件版本大于等于2.8.2的设备。要求设备驱动版本不小于4.2.0。
根据PCAN-USB设备的固件版本,该值可以有一个字节(范围[0…255])或一个双字(范围[0…4294967295])的分辨率。
如果之前从未设置此参数,则该值为所使用的分辨率的最大值,即255 (FFh)或429496729 (ffffffh)。
Get:可以在初始化或未初始化的PCAN-Channels上读取。
Set:只能在初始化的PCAN-Channels上设置。
假设您想编写一个应用程序,从一个CAN-BUS读取数据,并响应另一个CAN-BUS(又称网关应用程序)。为此,您可以有一个PCAN-USB设备连接到每个CAN-BUS。您可以设置两个pcan - usb的设备号,以便您知道哪个总线用于写入(例如,number 1用于“写入”总线),以及哪个总线用于读取(例如,number 2用于“从”总线读取)。使用这个参数,您将能够知道是否两个通道都可用,以及使用哪个设备发送,哪个设备写入
Native (C++)
TPCANHandle channelsToCheck[] = { PCAN_USBBUS1, PCAN_USBBUS2 };
DWORD deviceId;
TPCANHandle readChannel, writeChannel;
readChannel = writeChannel = PCAN_NONEBUS;
for (int i = 0; i < 2; i++)
{
if (CAN_GetValue(channelsToCheck[i], PCAN_DEVICE_ID, &deviceId, 4) == PCAN_ERROR_OK)
{
if (deviceId == 1)
{
writeChannel = channelsToCheck[i];
printf("The channel for writing (handle 0x%X) was found.\n", channelsToCheck[i]);
}
if (deviceId == 2)
{
readChannel = channelsToCheck[i];
printf("The channel for reading (handle 0x%X) was found.\n", channelsToCheck[i]);
}
}
}
if ((readChannel != PCAN_NONEBUS) && (writeChannel != PCAN_NONEBUS))
{
printf("Both channels were found. Starting to work . . .");
// Do work . . .
}
else
printf("Error! Not all needed channels were found. Terminating . . .");
该参数用于从硬件中检索描述文本
PCAN通道。该文本允许识别使用相同接口的设备型号,例如USB。普通的PCAN USB适配器将返回“PCAN-USB”,而新的双CAN/LIN FD通道适配器将返回“PCAN-USB Pro FD”。
• PCAN_CONTROLLER_NUMBER
• PCAN_CHANNEL_IDENTIFYING
• PCAN_IP_ADDRESS
• PCAN_AVAILABLE_CHANNELS
• PCAN_DEVICE_PART_NUMBER
• PCAN_API_VERSION
• PCAN_CHANNEL_VERSION
• PCAN_CHANNEL_FEATURES
• PCAN_BITRATE_INFO
• PCAN_BITRATE_INFO_FD
• PCAN_BUSSPEED_NOMINAL
• PCAN_BUSSPEED_DATA
• PCAN_LAN_SERVICE_STATUS
• PCAN_FIRMWARE_VERSION
• PCAN_AVAILABLE_CHANNELS_COUNT
在通道成功初始化之后,除了被分组为“日志记录和调试”的参数(这些参数不与特定的通道绑定)之外,在PCAN-Basic API内的参数配置是允许的。然而,在某些情况下,甚至需要在通道初始化之前进行一些配置。在通道初始化之前,可以在通道上配置以下参数。
• PCAN_RECEIVE_STATUS
• PCAN_LISTEN_ONLY
• PCAN_BITRATE_ADAPTING
首先,考虑第一次识别发生在选择要使用的PCAN-Channel时。
通道名称已经标识要使用的总线。
上面的名称告诉API PCAN硬件要连接,它使用哪种总线(USB),它是系统中注册的第一个(1)硬件。PCAN-Basic允许连接以下接口:
• USB:通用串行总线。多达16个通道。
• PCI:外设组件互连(包括ExpressCard硬件)。多达16个通道。
• PCC:pc卡(PCMCIA),个人计算机记忆卡。多达2个通道。
• LAN:虚拟PCAN-Gateway连接。多达16个通道。
• DNG:并行端口适配器。多达1个通道。
• ISA:工业标准体系结构。多达8个通道。
注意,硬件在系统中注册的方式取决于它的控制器驱动程序和系统本身。当多个相同类型的设备安装在一个系统上(例如USB),默认情况下,不保证在系统重启后连接到PCAN_USBBUS1仍然会连接到相同的硬件。
因此,使用参数来帮助检测正确的硬件。下面的参数用于识别要连接的物理硬件,例如,当多个设备可用于连接时。