1553B总线
RT(远程终端)
1553RT 的接口以「jc.rt」作为对象访问前缀。1553RT 通信流程包含以下步骤:
- 通过
startAsync创建RT控制器「RTController」。 - 操作RT控制器,获取单个RT实例「
RTInstance」。 - 操作RT实例,通过
inMessageAsync接口获取消息实例「RTMessage」。 - 操作消息实例,通过接口
messageStatus获取消息的状态信息。
操作接口
1553RT 的操作接口由入口函数 startAsync 和不同层级(控制器/RT实例/RT消息)的工具类接口共同组成。
startAsync()
RT入口函数。启动1553RT控制器,返回 RTController 实例。
- 函数签名
ts
type SAInfo = {
type: 'tx' | 'rx',
address: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
bufferNumber: number,
}
type RTInfo = {
address: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
saInfos: SAInfo[]
}
type RTBusInfo = {
channel?: 0 | 1 | 2 | 3;
mode?: '1m' | '4m',
directCoupling?: boolean,
rtInfos?: RTInfo[],
}
function startAsync (busInfo?: RTBusInfo, title?: string): Promise<RTController>;- 输入参数
- busInfo(可选) 开启RT所需要提供的参数信息。
- title(可选) 开启RT时提供的控制器名称。
启动RT控制器时,需要提供包括板卡基本设置、所使用的RT和SA(子地址)设置信息。
板卡设置:
| 属性名 | 默认值 | 说明 |
|---|---|---|
| channel | 0 | 设备通道号 |
| mode | '1m' | 板卡工作模式,1M 或者 4M |
| directCoupling | true | 通道耦合方式,true为直接耦合,false为变压器耦合 |
| rtInfos | 见下表 | RT设置信息数组 |
RT设置信息(RTInfo):
| 属性名 | 默认值 | 说明 |
|---|---|---|
| address | 0 | RT地址 |
| saInfos | 见下表 | SA设置信息数组 |
SA设置信息(SAInfo):
| 属性名 | 默认值 | 说明 |
|---|---|---|
| address | 0 | 子地址 |
| type | 'rx' | SA类型,'tx'为发送,'rx'为接收 |
| bufferNumber | 1 | SA缓存数 |
- 返回值
RTController实例对象。
startWithAsync()
入口函数的便利版本。根据指定页面的参数启动1553RT控制器,返回 RTController 实例。
- 函数签名
ts
function startWithAsync (pageName: string): Promise<RTController>;- 输入参数
- pageName 目标RT接口页面名称。查找指定名称的接口页面,获取该页面中的参数,并以此启动
1553RT控制器。
- pageName 目标RT接口页面名称。查找指定名称的接口页面,获取该页面中的参数,并以此启动
- 返回值
RTController实例对象。
RTController
RT控制器的操作接口如下:
getRT()
获取1个RT实例。
- 函数签名
ts
getRT (address: RTAddress): RTInstance | undefined;- 输入参数
- address RT地址。
- 返回值
RTInstance实例对象
endAsync()
关闭RT控制器。
- 函数签名
ts
endAsync (hadError?: boolean): Promise<void>;- 输入参数
- hadError 是否错误结束,若为
true则按错误状态来结束。
- hadError 是否错误结束,若为
- 返回值 无
RTInstance
RT实例的操作接口如下:
writeBufferAsync()
向指定远程终端的指定子地址的指定缓冲区写入数据。
- 函数签名
ts
type WriteBufferOption = {
content: {
type: string;
data: any;
};
subAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31;
bufferIndex: number;
type: type: 'tx' | 'rx';
}
writeBufferAsync(
option: WriteBufferOption
): Promise<void>;- 输入参数
- option 参数对象,包含子地址、缓冲区索引和数据信息。
协议支持的数据类型如下:
| type | data类型 |
|---|---|
'text' | string |
'hex' | string |
'raw' | Buffer |
其它属性说明如下:
| 属性名 | 类型 | 说明 |
|---|---|---|
| subAddress | 枚举值 | 子地址 |
| type | 枚举值 | SA类型,'tx'为发送,'rx'为接收 |
| bufferIndex | number | 缓冲区索引 |
- 返回值 无
inMessageAsync()
异步获取RT消息对象。
函数签名
tsinMessageAsync (): Promise<RTMessage>;输入参数 无
返回值 Promise对象,消息完成后返回
RTMessage对象。
onMessage()
远程终端RT完成单条消息发送/接收之后触发的回调函数。
- 函数签名
ts
onMessage (
handler: (message: RTMessage) => void, once?: boolean
): CancelFunc;- 输入参数
- handler 新消息处理函数。触发时将会回调本函数,并传入新的
RTMessage实例。 - once(可选),默认值为
false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
- handler 新消息处理函数。触发时将会回调本函数,并传入新的
- 返回值 取消函数,调用此函数可以解除本次注册。
disableAsync()
去使能该RT对象。
- 函数签名
ts
disableAsync (hadError?: boolean): Promise<void>;- 输入参数
- hadError 是否错误结束,若为
true则按错误状态来结束。
- hadError 是否错误结束,若为
- 返回值 无
enableAsync()
使能该RT对象。
- 函数签名
ts
enableAsync (): Promise<void>;- 输入参数 无
- 返回值 无
RTMessage
RT消息的操作接口如下:
messageStatus()
获取消息的状态信息。
- 函数签名
ts
type MessageType = "BCRT" | "RTBC" | "RTRT";
type MessageInfo = {
rtAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
subAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
wordCount: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
type: "tx" | "rx";
}
type MessageStatus = {
type: MessageType[];
busA: boolean;
statusWord: number;
commandWord: number;
info: MessageInfo;
}
messageStatus(): MessageStatus,- 输入参数 无
- 返回值 消息状态信息对象
消息状态属性说明如下:
| 属性名 | 类型 | 说明 |
|---|---|---|
| type | 枚举值 | 消息类型,包括BCRT、RTBC、RTRT。 |
| busA | boolean | 消息经过的线路是否为busA,如果为false,则路线为busB |
| statusWord | number | RT向BC返回的状态字 |
| commandWord | number | BC发出的命令字 |
| info | 见下表 | 消息的基本信息,包括RT地址、SA地址、数据子个数、传输方向等 |
消息基本信息属性说明如下:
| 属性名 | 类型 | 说明 |
|---|---|---|
| rtAddress | 枚举值 | 消息的RT地址,取值范围是0-31。 |
| subAddress | 枚举值 | 消息的子地址,取值范围是0-31。 |
| wordCount | 枚举值 | 消息的数据字个数,取值范围是0-31,取值为0时表示数据字个数为32。 |
| type | 枚举值 | 消息的传输方向,tx为发送,rx为接收。 |
只读接口
RTController
RT控制器实例(RTController)提供常规的数据和状态访问接口如下:
inBytes():返回自控制器启动以来累计接收的字节数,包含所有RT。outBytes():返回自控制器启动以来累计发送的字节数,包含所有RT。inPackets():返回自控制器启动以来累计接收的数据包个数,包含所有RT。outPackets():返回自控制器启动以来累计发送的数据包个数,包含所有RT。
RTInstance
records()
获取RT实例的打开记录列表,因为RT可能被多次打开(使能)/关闭(去使能)。
- 函数签名
ts
records (): FlowConnectionRecord[];FlowConnectionRecord
inBytes():返回自RT实例使能以来累计接收的字节数。outBytes():返回自RT实例使能以来累计发送的字节数。inPackets():返回自RT实例使能以来累计接收的数据包个数。outPackets():返回自RT实例使能以来累计发送的数据包个数。
RTMessage
inout():该消息的收发方向,"in"为接收,"out"为发送。payload():该数据包的原始载荷内容,即二进制数据。
BC(总线控制器)
1553BC 的接口以「jc.bc」作为对象访问前缀。1553BC 通信流程包含以下步骤:
- 通过
startAsync创建BC控制器「BCController」。 - 操作BC控制器,通过
inMessageAsync接口获取消息实例「BCMessage」。 - 操作消息实例,通过接口
messageStatus获取消息的状态信息。
操作接口
1553BC 的操作接口由入口函数 startAsync 和不同层级(控制器/BC消息)的工具类接口共同组成。
startAsync()
BC入口函数。启动1553BC控制器,返回 BCController 实例。
- 函数签名
ts
type MessageType = "BCRT" | "RTBC" | "RTRT";
type OpponentInfo = {
rtAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
subAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
type: "tx" | "rx";
};
type MsgInfo = {
bufferNumber: number,
messageType: MessageType[],
busA: boolean;
wordCount: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
period?: number,
noop?: boolean,
opponent1: OpponentInfo,
opponent2?: OpponentInfo,
}
type BCBusInfo = {
channel?: 0 | 1 | 2 | 3;
mode?: "1m" | "4m",
directCoupling?: boolean,
interMessageGap?: number,
msgInfos?: MsgInfo[],
}
function startAsync (busInfo?: BCBusInfo, title?: string,): Promise<BCController>;- 输入参数
- busInfo(可选) 开启BC所需要提供的参数信息。
- title(可选) 开启BC时提供的控制器名称。
启动BC控制器时,需要提供包括板卡基本设置和所有消息设置。
板卡设置:
| 属性名 | 默认值 | 说明 |
|---|---|---|
| channel | 0 | 设备通道号 |
| mode | '1m' | 板卡工作模式,1M 或者 4M |
| directCoupling | true | 通道耦合方式,true为直接耦合,false为变压器耦合 |
| interMessageGap | 100 | 每条消息与前一条消息的间隔,单位微秒(us) |
| msgInfos | 见下表 | 消息设置数组 |
消息设置(MsgInfo):
| 属性名 | 默认值 | 说明 |
|---|---|---|
| bufferNumber | 1 | 消息缓存数 |
| messageType | ['BCRT'] | 消息类型,包括BCRT、RTBC、RTRT。 |
| busA | boolean | 消息经过的线路是否为busA,如果为false,则路线为busB |
| wordCount | 枚举值 | 消息的数据字个数,取值范围是0-31,取值为0时表示数据字个数为32。 |
| period | 100 | 消息的发送周期,单位毫秒(ms)。 |
| noop | false | 是否为空消息。 |
| opponent1 | 见下表 | 通信对端的基本信息,RT-RT消息的对端1必须是接收 |
| opponent2 | 见下表 | 只有RT-RT消息才存在对端2,且对端2必须是发送 |
对端设置(OpponentInfo)
| 属性名 | 默认值 | 说明 |
|---|---|---|
| rtAddress | 0 | 消息的RT地址,取值范围是0-31。 |
| subAddress | 1 | 消息的子地址,取值范围是0-31。 |
| type | rx | 消息的传输方向,tx为发送,rx为接收。 |
- 返回值
BCController实例对象。
startWithAsync()
入口函数的便利版本。根据指定页面的参数启动1553BC控制器,返回 BCController 实例。
- 函数签名
ts
function startWithAsync (pageName: string): Promise<BCController>;- 输入参数
- pageName 目标BC接口页面名称。查找指定名称的接口页面,获取该页面中的参数,并以此启动
1553BC控制器。
- pageName 目标BC接口页面名称。查找指定名称的接口页面,获取该页面中的参数,并以此启动
- 返回值
BCController实例对象。
BCController
BC控制器的操作接口如下:
writeBufferAsync()
向队列中的指定消息的指定缓冲区写入数据。
- 函数签名
ts
type WriteBufferOption = {
content: {
type: string;
data: any;
};
messageIndex: number,
bufferIndex: number;
}
writeBufferAsync(
option: WriteBufferOption
): Promise<void>;- 输入参数
- option 参数对象,包含消息索引、缓冲区索引和数据信息。
协议支持的数据类型如下:
| type | data类型 |
|---|---|
'text' | string |
'hex' | string |
'raw' | Buffer |
其它属性说明如下:
| 属性名 | 类型 | 说明 |
|---|---|---|
| messageIndex | number | 消息索引 |
| bufferIndex | number | 缓冲区索引 |
- 返回值 无
aperiodicSendAsync()
根据消息索引执行指定的非周期消息。
- 函数签名
ts
aperiodicSendAsync(
msgIndex: number,
): Promise<void>;- 输入参数
- msgIndex 消息索引。
- 返回值 无
inMessageAsync()
异步获取BC消息对象。
函数签名
tsinMessageAsync (): Promise<BCMessage>;输入参数 无
返回值 Promise对象,消息完成后返回
BCMessage对象。
onMessage()
BC完成单条消息发送/接收之后触发的回调函数。
- 函数签名
ts
onMessage (
handler: (message: BCMessage) => void, once?: boolean
): CancelFunc;- 输入参数
- handler 新消息处理函数。触发时将会回调本函数,并传入新的
BCMessage实例。 - once(可选),默认值为
false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
- handler 新消息处理函数。触发时将会回调本函数,并传入新的
- 返回值 取消函数,调用此函数可以解除本次注册。
BCMessage
BC消息的操作接口如下:
messageStatus()
获取消息的状态信息。
- 函数签名
ts
type MessageType = "BCRT" | "RTBC" | "RTRT";
type MessageInfo = {
rtAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
subAddress: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
wordCount: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 | 31,
type: "tx" | "rx";
}
type MessageStatus = {
type: MessageType[];
busA: boolean;
statusWord: number;
commandWord: number;
info: MessageInfo;
}
messageStatus(): MessageStatus,- 输入参数 无
- 返回值 消息状态信息对象
消息状态属性说明如下:
| 属性名 | 类型 | 说明 |
|---|---|---|
| type | 枚举值 | 消息类型,包括BCRT、RTBC、RTRT。 |
| busA | boolean | 消息经过的线路是否为busA,如果为false,则路线为busB |
| statusWord | number | RT向BC返回的状态字 |
| commandWord | number | BC发出的命令字 |
| info | 见下表 | 消息的基本信息,包括RT地址、SA地址、数据子个数、传输方向等 |
消息基本信息属性说明如下:
| 属性名 | 类型 | 说明 |
|---|---|---|
| rtAddress | 枚举值 | 消息的RT地址,取值范围是0-31。 |
| subAddress | 枚举值 | 消息的子地址,取值范围是0-31。 |
| wordCount | 枚举值 | 消息的数据字个数,取值范围是0-31,取值为0时表示数据字个数为32。 |
| type | 枚举值 | 消息的传输方向,tx为发送,rx为接收。 |
只读接口
BCController
records()
获取BC控制器的开启记录列表。
- 函数签名
ts
records (): FlowConnectionRecord[];FlowConnectionRecord
inBytes():返回自BC控制器启动以来累计接收的字节数。outBytes():返回自BC控制器启动以来累计发送的字节数。inPackets():返回自BC控制器启动以来累计接收的数据包个数。outPackets():返回自BC控制器启动以来累计发送的数据包个数。
BCMessage
inout():该消息的收发方向,"in"为接收,"out"为发送。payload():该数据包的原始载荷内容,即二进制数据。
