CANrd()

<< 点击显示目录 >>

主页  贝加莱CAN通讯使用例程说明 > 通过编程实现CAN通讯 > 功能块与函数说明 > CAN_Lib > CAN_Lib - CAN Function Blocks and Functions >

CANrd()

为了使用CANrd()函数,你必须首先使用 CANqueue() 函数设置一个接收缓冲区  。

如果不存在接收队列或者队列是空的, 状态 输出会显示相应的错误信息。如果数据已经存储在队列中,它将被复制到缓冲区(缓冲区地址在 data_addr 输入)。电报的长度被返回到 size 输出。

 

如果接收队列已满(status = 8810),则不能再接受电报,直到队列被CANrd()函数读取。

 

这个功能块只能有条件 地用于冗余

适用的限制在下面的章节中描述。

 

手柄必须被初始化

不活动的CPU上的特殊错误代码

隐藏指针的使用

 

其他信息可以在 "冗余 " 部分找到

参数

输入/输出

参数

数据类型

说明

IN

enable

BOOL

The function block is only executed when enable is <> 0

IN

q_ident

UDINT

Queue identifier from CANqueue().

IN

data_adr

UDINT

(given as a pointer)

Address of the data area where CAN data from the receive queue is stored.

OUT

size

UINT

Length of the CAN data in bytes.

OUT

status

UINT

Error Number (0 = no error)

调用语法(自动化基础)

CANrd(enable,q_ident,adr(data_adr),size,status)

注意事项

如果CAN功能块在C函数中被本地调用(并且FBK结构在该函数中被本地声明,而不是用_LOCAL/_GLOBAL),那么静态FBK内存必须被初始化为0。

 

例子

Automation Basic

ANSI C

Structured Text