跳转至

Connect IoT - 串行驱动程序#

串行通信(符合RS232标准)是一种通信接口,该接口一次输入或输出一位信息。

它是目前仍在各种设备中广泛使用的通信接口(如果不是本机使用,则可通过USB串行转换器进行使用)。

在该驱动程序上,解析器用于获取原始的串行数据并将它们转换为可用的消息。

数据类型#

这些是受支持的特定数据类型:

名称 描述
字符串 字符串值
布尔值 布尔值
整数 整数值
十进制 十进制值
对象 结构化值

异常流程参数#

异常流程支持以下参数:

名称 类型 可能的值 默认值 描述
端口名称 字符串 COM1 要连接的端口的名称(例如:COM1、/dev/tty-usbserial1等)。驱动程序启动时,系统将打印可用端口列表。
BaudRate 整数 9600 要打开的端口的波特率。它应是某个常用的波特率,例如110、300、1200、2400、4800、9600、14400、19200、38400、57600或115200。每个平台都会尽可能地支持自定义波特率。连接到串行端口的设备不能保证支持所请求的波特率,即使端口本身支持该波特率也是如此
数据位 整数 8 必须是以下各项之一:8、7、6或5
停止位 整数 1 必须是以下各项之一:1或2
串行奇偶校验 枚举 none
偶数
奇数
标记
空间
none 串行奇偶校验配置
流量控制握手 枚举 none
RTS/CTS
XON/XOFF
none 通过“硬件”、“软件”或“无”选项进行流量控制。
highWaterMark 整数 65536 读取和写入缓冲区的大小
parserType 枚举 Raw
Readline
ByteLength
Delimiter
InterByteTimeout
准备就绪
Regex
ReadLine 选择用于确定何时识别从设备接收到的数据并准备好处理的解析器(有关详细信息,请查看每个解析器的特定部分)。
delimiter 字符串 "\r\n" 用于ReadlineDelimiterReadyRegularExpression解析器:用于拆分传入文本的字符串分隔符。简单的字符串替换可以像\r\n\t一样使用如果解析器是RegularExpression,则可以使用正则表达式,例如:[\r\n]+
encoding 枚举 ascii
utf8
utf16le
ucs2
base64
binary
hex
ascii 用于ReadlineRegex解析器:接收到的数据的文本编码
byteLengthNumber 整数 8 用于ByteLength解析器:触发事件前要接收的字节数
timeoutValue 整数 1000 用于InterByteTimeout解析器:发出数据前的静默时间段(以毫秒为单位)
maxBufferSize 整数 65536 在解析器中使用:InterByteTimeout:发出数据前的最大字节数
发送时默认转换非可打印ASCII字符 布尔值 False 对发送的值执行字符替换。用相应的ASCII值替换ASCII令牌名称。(请参阅表非可打印ASCII字符 - 令牌/值替换)。
接收时默认转换非可打印ASCII字符 布尔值 False 对收到的值执行字符替换。将不可打印的ASCII代码替换为对应的<NAME>。(请参阅表非可打印ASCII字符 - 令牌/值替换)。
默认命令消息开始 字符串 命令开头使用的默认值
默认命令消息分隔符 字符串 命令参数之间使用的默认值
默认命令消息结束 字符串 命令末尾使用的默认值

解析器#

解析器是指用于处理传入数据的转换流的集合。以下解析器可用:

名称 参数 描述
Raw 接收到的任何数据都将立即处理。
Readline delimiter 在接收到配置的换行分隔符后发出数据。
ByteLength byteLengthSize 在接收到特定字节数后立即发出数据。
Delimiter delimiter 每次接收到特定序列时都发出数据。
字节间超时 timeoutValue
maxBufferSize
在指定的时间内未接收任何字节或缓冲区已满后,将发出数据。
准备就绪 delimiter 在发出就绪事件和发出数据事件之前,直到一系列就绪字节(与delimiter参数匹配)才会发出数据
Regex delimiter
encoding
正则表达式(分隔符参数)用于拆分传入文本。匹配项将作为要处理的数据发出。

扩展参数#

与其他异常流程驱动程序一样,还需要一些额外参数来对预期行为提供更多上下文。

属性#

名称 类型 可能的值 默认值 描述
identifierType 枚举
RegularExpression
Token
用于标识属性的方法。如果使用None,则将忽略identifierValue,并且所有消息都将更新该属性。Token 类型将仅匹配消息开头的identifierValue文本,而RegularExpression将匹配配置的正则表达式identifierValue字段。
identifierValue 字符串 属性标识符的值。对RegularExpression(输入有效的正则表达式)或Token(输入预期文本)identifierType有效。
convertIdentifierNonPrintableASCIIChars 布尔值 false 如果为true,则对Identifier Value执行字符替换。将不可打印的ASCII代码替换为对应的<NAME>。(请参阅表非可打印ASCII字符 - 令牌/值替换)。

备注/行为#

  • 属性上使用的标识符用于标识属性,而不是从属性中提取任何类型的信息。要从属性值中提取信息,可以使用控制器工作流(例如类型为Regular ExpressionRegular Evaluator任务)。

事件#

名称 类型 可能的值 默认值 描述
triggerMode 枚举 AllValues
DifferentValues
Periodic
AllValues 确定数据作为事件发出的方式和时间。
AllValues:每次收到触发器属性值时
DifferentValues:每次收到不同的触发器属性值时
Periodic:定期(每隔periodicDataInterval,以毫秒为单位),忽略属性会更新周期或值。
periodicDataInterval 整数 1000 发布数据的毫秒数。仅对triggerMode有效 Periodic

事件属性#

名称 类型 可能的值 默认值 描述
isTrigger 布尔值 true 接收到属性(事件触发器模式AllValues)或值更改(事件触发器模式AllValuesDifferentValues)时触发事件

备注/行为#

  • 当事件具有多个属性带isTrigger标志时:
    • 每次任何属性值更改时都会触发它。
    • 此时将请求其他属性的值。
    • 可能有多个触发器具有相同的设置值(因为它们未更改)。如果不希望出现这种行为,请将其分成多个事件,每个事件都有自己的触发器集。
  • 如果事件没有具有isTrigger标志的属性,则从不触发(除非事件定义为Periodic

命令#

名称 类型 可能的值 默认值 描述
命令结构行为 枚举 UseEquipmentSetupTaskSettings
UseCurrentCommandSettings
RawCommandParameters
RawCommand
UseEquipmentSetupTaskSettings 命令可以使用来自设备设置任务(使用设备设置任务令牌)的配置(令牌和ASCII转换定义)或对每个命令进行自定义(使用当前命令令牌)。在RawCommand模式下,不使用令牌,发送设备ID数据。在RawCommandParameters模式下,命令参数串联并发送。
命令设备ID用法 枚举 AtBeginning
AtEnd
NotUsed
AtBeginning 命令设备ID可以在已发送消息的开头、已发送消息的结尾使用,也可以根本不使用,并且该消息将只包含命令参数。请注意,如果commandBehaviorRawCommandRawCommandParameters,则忽略此字段。
对发送值转换不可打印的ASCII字符 布尔值 False 如果为true,则对命令发送值执行令牌替换。用字符值替换ASCII令牌名称。(请参阅表非可打印ASCII字符 - 令牌/值替换)。
消息启动令牌 字符串 命令开头使用的值
消息分隔符令牌 字符串 命令参数之间使用的值
消息结束令牌 字符串 消息结束令牌
Reply Expected 布尔值 False 如果此命令需要回复,则应为true
对回复内容转换不可打印的ASCII字符 布尔值 False 如果为true,则对命令回复接收的值执行字符替换。将回复内容中不可打印的ASCII代码替换为对应的<NAME>(请参阅表非可打印ASCII字符 - 令牌/值替换)。
Reply TimeOut (ms) 整数 1000 命令答复以指定的毫秒值超时。

备注/行为#

  • 如果Reply Expected为true,则在等待Reply TimeOut (ms)时不会发送其他命令(将在收到回复或达到超时值后排队并发送)
  • 如果Reply TimeOut等于或小于0,则加载默认值(1秒)

示例方案#

命令设备ID用法#

所选选项 命令发送的值
AtBeginning <StartToken>CommandDeviceID<SeparatorToken>Parameter_1_Value<SeparatorToken>Parameter_2_Value<EndToken>
AtEnd <StartToken>Parameter_1_Value<SeparatorToken>Parameter_2_Value<SeparatorToken>CommandDeviceID<EndToken>
NotUsed <StartToken><SeparatorToken>Parameter_1_Value<SeparatorToken>Parameter_2_Value<EndToken>

对发送值转换不可打印的ASCII字符#

转换前 转换后
<DeviceID<TAB>Parameter_1_Value> <DeviceID\tParameter_1_Value>
  • 注意:
    • 起始令牌: <
    • 分隔符令牌: <TAB>
    • 结束令牌: >

命令参数#

名称 类型 可能的值 默认值 描述
参数类型 枚举 CommandParameter
RawCommandParameter
CommandParameter 允许将此参数配置为常规命令参数或RAW命令。如果Command Structure BehaviorRawCommandParameters,则至少应有一个参数类型为RawCommandParameter(如果定义了多个,则执行串联)。

示例#

RAW命令示例#

参数#

  • 测试方案:
    • 命令结构行为RawCommandParameters
    • 参数01:参数类型:CommandParameter
    • 参数01值:TestPar_1
    • 参数02:参数类型:RawCommandParameter
    • 参数02值:TestRaw_2
    • 参数03:参数类型:RawCommandParameter
    • 参数03值:TestRaw_3
    • 起始令牌: <
    • 分隔符令牌: <TAB>
    • 结束令牌: >
  • 发送的值:
    • TestRaw_2TestRaw_3

DeviceId#

  • 测试方案:
    • 命令结构行为RawCommand
    • 命令设备ID:DeviceId
    • 参数01:参数类型:CommandParameter
    • 参数01值:TestPar_1
    • 参数02:参数类型:RawCommandParameter
    • 参数02值:TestRaw_2
    • 参数03:参数类型:RawCommandParameter
    • 参数03值:TestRaw_3
    • 起始令牌: <
    • 分隔符令牌: <TAB>
    • 结束令牌: >
  • 发送的值:
    • DeviceId

非可打印ASCII字符 - 令牌/值替换#

令牌 令牌 令牌 令牌 令牌
<NUL> 0 <SOH> 1 <STX> 2 <ETX> 3 <EOT> 4
<ENQ> 5 <ACK> 6 <BEL> 7 <BS> 8 <TAB> 9
<LF> 10 <VT> 11 <FF> 12 <CR> 13 <SO> 14
<SI> 15 <DLE> 16 <DC1> 17 <DC2> 18 <DC3> 19
<DC4> 20 <NAK> 21 <SYN> 22 <ETB> 23 <CAN> 24
<EM> 25 <SUB> 26 <ESC> 27 <FS> 28 <GS> 29
<RS> 30 <US> 31 <DEL> 127

请注意:

  • 值以十进制表示。
  • 这些令牌/值替换值是硬编码的。