跳转到内容

1553B总线

RT(远程终端)

1553RT 的接口以「jc.rt」作为对象访问前缀。1553RT 通信流程包含以下步骤:

  1. 通过startAsync创建RT控制器「RTController」。
  2. 操作RT控制器,获取单个RT实例「RTInstance」。
  3. 操作RT实例,通过 inMessageAsync 接口获取消息实例「RTMessage」。
  4. 操作消息实例,通过接口 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(子地址)设置信息。

板卡设置:

属性名默认值说明
channel0设备通道号
mode'1m'板卡工作模式,1M 或者 4M
directCouplingtrue通道耦合方式,true为直接耦合,false为变压器耦合
rtInfos见下表RT设置信息数组

RT设置信息(RTInfo):

属性名默认值说明
address0RT地址
saInfos见下表SA设置信息数组

SA设置信息(SAInfo):

属性名默认值说明
address0子地址
type'rx'SA类型,'tx'为发送,'rx'为接收
bufferNumber1SA缓存数
  • 返回值 RTController 实例对象。

startWithAsync()

入口函数的便利版本。根据指定页面的参数启动1553RT控制器,返回 RTController 实例。

  • 函数签名
ts
function startWithAsync (pageName: string): Promise<RTController>;
  • 输入参数
    • pageName 目标RT接口页面名称。查找指定名称的接口页面,获取该页面中的参数,并以此启动1553RT控制器。
  • 返回值 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则按错误状态来结束。
  • 返回值 无

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 参数对象,包含子地址、缓冲区索引和数据信息。

协议支持的数据类型如下:

typedata类型
'text'string
'hex'string
'raw'Buffer

其它属性说明如下:

属性名类型说明
subAddress枚举值子地址
type枚举值SA类型,'tx'为发送,'rx'为接收
bufferIndexnumber缓冲区索引
  • 返回值 无
inMessageAsync()

异步获取RT消息对象。

  • 函数签名

    ts
    inMessageAsync (): Promise<RTMessage>;
  • 输入参数 无

  • 返回值 Promise对象,消息完成后返回RTMessage对象。

onMessage()

远程终端RT完成单条消息发送/接收之后触发的回调函数。

  • 函数签名
ts
onMessage (
handler: (message: RTMessage) => void, once?: boolean
): CancelFunc;
  • 输入参数
    • handler 新消息处理函数。触发时将会回调本函数,并传入新的RTMessage实例。
    • once(可选),默认值为false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
  • 返回值 取消函数,调用此函数可以解除本次注册。
disableAsync()

去使能该RT对象。

  • 函数签名
ts
disableAsync (hadError?: boolean): Promise<void>;
  • 输入参数
    • hadError 是否错误结束,若为true则按错误状态来结束。
  • 返回值 无
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枚举值消息类型,包括BCRTRTBCRTRT
busAboolean消息经过的线路是否为busA,如果为false,则路线为busB
statusWordnumberRT向BC返回的状态字
commandWordnumberBC发出的命令字
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 通信流程包含以下步骤:

  1. 通过startAsync创建BC控制器「BCController」。
  2. 操作BC控制器,通过 inMessageAsync 接口获取消息实例「BCMessage」。
  3. 操作消息实例,通过接口 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控制器时,需要提供包括板卡基本设置和所有消息设置。

板卡设置:

属性名默认值说明
channel0设备通道号
mode'1m'板卡工作模式,1M 或者 4M
directCouplingtrue通道耦合方式,true为直接耦合,false为变压器耦合
interMessageGap100每条消息与前一条消息的间隔,单位微秒(us)
msgInfos见下表消息设置数组

消息设置(MsgInfo):

属性名默认值说明
bufferNumber1消息缓存数
messageType['BCRT']消息类型,包括BCRTRTBCRTRT
busAboolean消息经过的线路是否为busA,如果为false,则路线为busB
wordCount枚举值消息的数据字个数,取值范围是0-31,取值为0时表示数据字个数为32。
period100消息的发送周期,单位毫秒(ms)。
noopfalse是否为空消息。
opponent1见下表通信对端的基本信息,RT-RT消息的对端1必须是接收
opponent2见下表只有RT-RT消息才存在对端2,且对端2必须是发送

对端设置(OpponentInfo

属性名默认值说明
rtAddress0消息的RT地址,取值范围是0-31。
subAddress1消息的子地址,取值范围是0-31。
typerx消息的传输方向,tx为发送,rx为接收。
  • 返回值 BCController 实例对象。

startWithAsync()

入口函数的便利版本。根据指定页面的参数启动1553BC控制器,返回 BCController 实例。

  • 函数签名
ts
function startWithAsync (pageName: string): Promise<BCController>;
  • 输入参数
    • pageName 目标BC接口页面名称。查找指定名称的接口页面,获取该页面中的参数,并以此启动1553BC控制器。
  • 返回值 BCController 实例对象。

BCController

BC控制器的操作接口如下:

writeBufferAsync()

向队列中的指定消息的指定缓冲区写入数据。

  • 函数签名
ts
type WriteBufferOption = {
    content: {
        type: string;
        data: any;
    };
    messageIndex: number,
    bufferIndex: number;
}

writeBufferAsync(
    option: WriteBufferOption
): Promise<void>;
  • 输入参数
    • option 参数对象,包含消息索引、缓冲区索引和数据信息。

协议支持的数据类型如下:

typedata类型
'text'string
'hex'string
'raw'Buffer

其它属性说明如下:

属性名类型说明
messageIndexnumber消息索引
bufferIndexnumber缓冲区索引
  • 返回值 无
aperiodicSendAsync()

根据消息索引执行指定的非周期消息。

  • 函数签名
ts
aperiodicSendAsync(
    msgIndex: number,
): Promise<void>;
  • 输入参数
    • msgIndex 消息索引。
  • 返回值 无
inMessageAsync()

异步获取BC消息对象。

  • 函数签名

    ts
    inMessageAsync (): Promise<BCMessage>;
  • 输入参数 无

  • 返回值 Promise对象,消息完成后返回BCMessage对象。

onMessage()

BC完成单条消息发送/接收之后触发的回调函数。

  • 函数签名
ts
onMessage (
handler: (message: BCMessage) => void, once?: boolean
): CancelFunc;
  • 输入参数
    • handler 新消息处理函数。触发时将会回调本函数,并传入新的BCMessage实例。
    • once(可选),默认值为false。是否注册为一次性的回调函数,若传入true则触发了1次回调后会自动取消注册。
  • 返回值 取消函数,调用此函数可以解除本次注册。

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枚举值消息类型,包括BCRTRTBCRTRT
busAboolean消息经过的线路是否为busA,如果为false,则路线为busB
statusWordnumberRT向BC返回的状态字
commandWordnumberBC发出的命令字
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():该数据包的原始载荷内容,即二进制数据。