/** @file serial.h * @brief 串口通信 */ #ifndef AUBO_SDK_SERIAL_INTERFACE_H #define AUBO_SDK_SERIAL_INTERFACE_H #include #include #include #include namespace arcs { namespace common_interface { class ARCS_ABI_EXPORT Serial { public: Serial(); virtual ~Serial(); /** * \chinese * 打开TCP/IP以太网通信串口 * * @param device 设备名 * @param baud 波特率 * @param stop_bits 停止位 * @param even 校验位 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialOpen(self: pyaubo_sdk.Serial, arg0: str, arg1: int, arg2: float, * arg3: int, arg4: str) -> int * * @par Lua函数原型 * serialOpen(device: string, baud: number, stop_bits: number, even: number, * serial_name: string) -> nil * \endchinese * \english * Open TCP/IP ethernet communication serial * * @param device * @param baud * @param stop_bits * @param even * @param serial_name * @return * * @par Python function prototype * serialOpen(self: pyaubo_sdk.Serial, arg0: str, arg1: int, arg2: float, * arg3: int, arg4: str) -> int * * @par Lua function prototype * serialOpen(device: string, baud: number, stop_bits: number, even: number, * serial_name: string) -> nil * \endenglish */ int serialOpen(const std::string &device, int baud, float stop_bits, int even, const std::string &serial_name = "serial_0"); /** * \chinese * 关闭TCP/IP串口通信 * 关闭与服务器的串口连接。 * * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialClose(self: pyaubo_sdk.Serial, arg0: str) -> int * * @par Lua函数原型 * serialClose(serial_name: string) -> nil * \endchinese * \english * Close TCP/IP serial communication * Close down the serial connection to the server. * * @param serial_name * @return * * @par Python function prototype * serialClose(self: pyaubo_sdk.Serial, arg0: str) -> int * * @par Lua function prototype * serialClose(serial_name: string) -> nil * \endenglish */ int serialClose(const std::string &serial_name = "serial_0"); /** * \chinese * 从串口读取指定数量的字节。字节为网络字节序。一次最多可读取30个值。 * * @param variable 变量 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialReadByte(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua函数原型 * serialReadByte(variable: string, serial_name: string) -> number * \endchinese * \english * Reads a number of bytes from the serial. Bytes are in network byte * order. A maximum of 30 values can be read in one command. * * @param variable * @param serial_name * @return * * @par Python function prototype * serialReadByte(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua function prototype * serialReadByte(variable: string, serial_name: string) -> number * \endenglish */ int serialReadByte(const std::string &variable, const std::string &serial_name = "serial_0"); /** * \chinese * 从串口读取指定数量的字节。字节为网络字节序。一次最多可读取30个值。 * 返回读取到的数字列表(int列表,长度=number+1)。 * * @param number 读取的字节数 * @param variable 变量 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialReadByteList(self: pyaubo_sdk.Serial, arg0: int, arg1: str, arg2: str) -> int * * @par Lua函数原型 * serialReadByteList(number: number, variable: string, serial_name: string) -> number * \endchinese * \english * Reads a number of bytes from the serial. Bytes are in network byte * order. A maximum of 30 values can be read in one command. * A list of numbers read (list of ints, length=number+1) * * @param number Number of bytes to read * @param variable * @param serial_name Serial port name * @return Return value * * @par Python function prototype * serialReadByteList(self: pyaubo_sdk.Serial, arg0: int, arg1: str, arg2: str) -> int * * @par Lua function prototype * serialReadByteList(number: number, variable: string, serial_name: string) -> number * \endenglish */ int serialReadByteList(int number, const std::string &variable, const std::string &serial_name = "serial_0"); /** * \chinese * 从串口读取所有数据,并将数据作为字符串返回。 * 字节为网络字节序。 * * 可选参数 "prefix" 和 "suffix" 用于指定从串口提取的内容。 * "prefix" 指定提取子串(消息)的起始位置。直到 "prefix" 结束的数据会被忽略并从串口移除。 * "suffix" 指定提取子串(消息)的结束位置。串口中 "suffix" 之后的剩余数据会被保留。 * 例如,如果串口服务器发送字符串 "noise>hello<",控制器可以通过设置 prefix=">" 和 suffix="<" 来接收 "hello"。 * 通过使用 "prefix" 和 "suffix",还可以一次向控制器发送多条字符串,因为 "suffix" 定义了消息的结束位置。 * 例如发送 ">hello<>world<" * * @param variable 变量 * @param serial_name 串口名称 * @param prefix 前缀 * @param suffix 后缀 * @param interpret_escape 是否解释转义字符 * @return 返回值 * * @par Python函数原型 * serialReadString(self: pyaubo_sdk.Serial, arg0: str, arg1: str, arg2: str, arg3: str, arg4: bool) -> int * * @par Lua函数原型 * serialReadString(variable: string, serial_name: string, prefix: string, suffix: string, interpret_escape: boolean) -> number * \endchinese * \english * Reads all data from the serial and returns the data as a string. * Bytes are in network byte order. * * The optional parameters "prefix" and "suffix", can be used to express * what is extracted from the serial. The "prefix" specifies the start * of the substring (message) extracted from the serial. The data up to * the end of the "prefix" will be ignored and removed from the serial. * The "suffix" specifies the end of the substring (message) extracted * from the serial. Any remaining data on the serial, after the "suffix", * will be preserved. E.g. if the serial server sends a string * "noise>hello<", the controller can receive the "hello" by calling this * script function with the prefix=">" and suffix="<". By using the * "prefix" and "suffix" it is also possible send multiple string to the * controller at once, because the suffix defines where the message ends. * E.g. sending ">hello<>world<" * * @param variable * @param serial_name * @param prefix * @param suffix * @param interpret_escape * @return * * @par Python function prototype * serialReadString(self: pyaubo_sdk.Serial, arg0: str, arg1: str, arg2: str, arg3: str, arg4: bool) -> int * * @par Lua function prototype * serialReadString(variable: string, serial_name: string, prefix: string, suffix: string, interpret_escape: boolean) -> number * \endenglish */ int serialReadString(const std::string &variable, const std::string &serial_name = "serial_0", const std::string &prefix = "", const std::string &suffix = "", bool interpret_escape = false); /** * \chinese * 发送一个字节到服务器 * 通过串口发送字节 。不期望有响应。可用于发送特殊的ASCII字符;10为换行符,2为文本开始,3为文本结束。 * * @param value 字节值 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialSendByte(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua函数原型 * serialSendByte(value: string, serial_name: string) -> nil * \endchinese * \english * Sends a byte to the server * Sends the byte through the serial. Expects no response. Can * be used to send special ASCII characters; 10 is newline, 2 is start of * text, 3 is end of text. * * @param value * @param serial_name * @return * * @par Python function prototype * serialSendByte(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua function prototype * serialSendByte(value: string, serial_name: string) -> nil * \endenglish */ int serialSendByte(char value, const std::string &serial_name = "serial_0"); /** * \chinese * 发送一个整数(int32_t)到服务器 * 通过串口发送整数 。以网络字节序发送。不期望有响应。 * * @param value 整数值 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialSendInt(self: pyaubo_sdk.Serial, arg0: int, arg1: str) -> int * * @par Lua函数原型 * serialSendInt(value: number, serial_name: string) -> nil * \endchinese * \english * Sends an int (int32_t) to the server * Sends the int through the serial. Send in network byte order. * Expects no response. * * @param value * @param serial_name * @return * * @par Python function prototype * serialSendInt(self: pyaubo_sdk.Serial, arg0: int, arg1: str) -> int * * @par Lua function prototype * serialSendInt(value: number, serial_name: string) -> nil * \endenglish */ int serialSendInt(int value, const std::string &serial_name = "serial_0"); /** * \chinese * 发送带有换行符的字符串到服务器 * 以ASCII编码通过串口发送字符串,并在末尾添加换行符。不期望有响应。 * * @param str 字符串 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialSendLine(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua函数原型 * serialSendLine(str: string, serial_name: string) -> nil * \endchinese * \english * Sends a string with a newline character to the server * Sends the string through the serial in ASCII coding, appending a newline at the end. Expects no response. * * @param str * @param serial_name * @return * * @par Python function prototype * serialSendLine(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua function prototype * serialSendLine(str: string, serial_name: string) -> nil * \endenglish */ int serialSendLine(const std::string &str, const std::string &serial_name = "serial_0"); /** * \chinese * 发送字符串到服务器 * 以ASCII编码通过串口发送字符串。不期望有响应。 * * @param str 字符串 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialSendString(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua函数原型 * serialSendString(str: string, serial_name: string) -> nil * \endchinese * \english * Sends a string to the server * Sends the string through the serial in ASCII coding. Expects no * response. * * @param str * @param serial_name * @return * * @par Python function prototype * serialSendString(self: pyaubo_sdk.Serial, arg0: str, arg1: str) -> int * * @par Lua function prototype * serialSendString(str: string, serial_name: string) -> nil * \endenglish */ int serialSendString(const std::string &str, const std::string &serial_name = "serial_0"); /** * \chinese * * @param is_check 是否校验 * @param str 字符串数组 * @param serial_name 串口名称 * @return 返回值 * * @par Python函数原型 * serialSendAllString(self: pyaubo_sdk.Serial, arg0: bool, arg1: List[str], arg2: str) -> int * * @par Lua函数原型 * serialSendAllString(is_check: boolean, str: table, serial_name: string) -> nil * \endchinese * \english * * @param is_check Whether to check * @param str Array of strings * @param serial_name Serial port name * @return Return value * * @par Python function prototype * serialSendAllString(self: pyaubo_sdk.Serial, arg0: bool, arg1: List[str], arg2: str) -> int * * @par Lua function prototype * serialSendAllString(is_check: boolean, str: table, serial_name: string) -> nil * \endenglish */ int serialSendAllString(bool is_check, const std::vector &str, const std::string &serial_name = "serial_0"); protected: void *d_; }; using SerialPtr = std::shared_ptr; } // namespace common_interface } // namespace arcs #endif