CAN总线
CAN总线 协议的接口以「jc.can」作为对象访问前缀。CAN总线 通信流程包含以下步骤:
- 通过
startAsync创建CAN总线连接「CanConnection」。 - 操作连接实例,通过
sendAsync或inCanframeAsync接口获取CAN帧实例「CanFrame」。 - 操作CAN帧实例,通过接口
replyAsync向数据来源发送数据。
操作接口
CAN总线 协议的操作接口由入口函数 startAsync 和不同层级(连接/数据帧)的工具类接口共同组成。
startAsync()
CAN总线入口函数。启动1个CAN总线连接,返回 CanConnection 实例。
- 函数签名
ts
function startAsync (port?: string, bitrate?: number): Promise<CanConnection>;- 输入参数
- port CAN接口设备名称,默认值为'CAN1'。
- bitrate 传输比特率,默认值为125000(bps)
- 返回值
CanConnection实例对象。
CanConnection
CAN总线连接的操作接口如下:
sendAsync()
向CAN总线发送数据。
- 函数签名
ts
interface CanframeData {
messageId: number;
messageData: string;
rtr?: boolean;
}
sendAsync (data: CanframeData): Promise<CanFrame>;- 输入参数
- data CAN帧数据对象。
CAN帧结构说明:
| 属性名 | 类型 | 说明 |
|---|---|---|
| messageId | 无符号整数 | CAN帧的消息ID, 长度最多11比特,取值范围0-2047 |
| messageData | string | CAN帧的数据域,最大长度为8字节的Hex字符串 |
| rtr | boolean | 是否为远程帧 |
- 返回值 Promise对象,发送完成后返回所发送的CAN帧对象。
sendWithAsync()
将其他CAN页面中定义的已有CAN帧数据向CAN总线发送。
函数签名
tssendWithAsync (pageName: string, contentName: string): Promise<CanFrame>;输入参数
- pageName 页面名称,仅限在「接口」和「模板」页面中查找。
- contentName CAN帧名称
返回值 Promise对象,发送完成后返回所发送的CAN帧对象。
inCanframeAsync()
异步获取接收到的CAN帧对象。
函数签名
tsinCanframeAsync (): Promise<CanFrame>;输入参数 无
返回值 Promise对象,接收到CAN帧后返回
CanFrame对象。
onCanframe()
当「发送」或「接收」CAN帧时触发回调。
函数签名
tsonCanframe ( handler: (canframe: CanFrame) => void, once?: boolean ): CancelFunc;输入参数
- handler 新数据包的处理函数。触发时将会回调本函数,并传入新的
CanFrame实例。 - once(可选),默认值为
false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
- handler 新数据包的处理函数。触发时将会回调本函数,并传入新的
返回值 取消函数,调用此函数可以解除本次注册。
onCanframeIn()
当「接收」CAN帧时触发回调。
函数签名
tsonCanframeIn ( handler: (canframe: CanFrame) => void, once?: boolean ): CancelFunc;输入参数
- handler 新数据包的处理函数。触发时将会回调本函数,并传入新的
CanFrame实例。 - once(可选),默认值为
false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
- handler 新数据包的处理函数。触发时将会回调本函数,并传入新的
返回值 取消函数,调用此函数可以解除本次注册。
onCanframeOut()
当「发送」CAN帧时触发回调。
函数签名
tsonCanframeOut ( handler: (canframe: CanFrame) => void, once?: boolean ): CancelFunc;输入参数
- handler 新数据包的处理函数。触发时将会回调本函数,并传入新的
CanFrame实例。 - once(可选),默认值为
false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
- handler 新数据包的处理函数。触发时将会回调本函数,并传入新的
返回值 取消函数,调用此函数可以解除本次注册。
CanFrame
CAN总线数据帧的操作接口如下:
replyAsync()
向CAN总线回复1个数据帧。
函数签名
tsinterface CanframeData { messageId: number; messageData: string; rtr?: boolean; } replyAsync (data: CanframeData): Promise<CanFrame>;输入参数
- data CAN帧数据对象。
CAN帧结构说明:
| 属性名 | 类型 | 说明 |
|---|---|---|
| messageId | 无符号整数 | CAN帧的消息ID, 长度最多11比特,取值范围0-2047 |
| messageData | string | CAN帧的数据域,最大长度为8字节的Hex字符串 |
| rtr | boolean | 是否为远程帧 |
- 返回值 Promise对象,发送完成后返回所发送的CAN帧对象。
只读接口
CanConnection
records()
获取连接的打开记录列表,因为连接可能被多次打开/关闭。
- 函数签名
ts
records (): FlowConnectionRecord[];FlowConnectionRecord
inBytes():返回自本次连接创建以来累计接收的字节数。outBytes():返回自本次连接创建以来累计发送的字节数。inPackets():返回自本次连接创建以来累计接收的数据包个数。outPackets():返回自本次连接创建以来累计发送的数据包个数。
CanFrame
inout():数据帧的收发方向,"in"为接收,"out"为发送。length():数据帧的数据域字节数。payload():数据帧的数据域内容,即二进制数据。
