123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- /**
- * @file SerialPort_global.h
- * @author itas109 (itas109@qq.com) \n\n
- * Blog : https://blog.csdn.net/itas109 \n
- * Github : https://github.com/itas109 \n
- * QQ Group : 129518033
- * @brief global difine of CSerialPort 串口全局定义
- * @date 2020-04-29
- * @copyright The CSerialPort is Copyright (C) 2021 itas109. \n
- * Contact: itas109@qq.com \n\n
- * You may use, distribute and copy the CSerialPort under the terms of \n
- * GNU Lesser General Public License version 3, which is displayed below.
- */
- #ifndef __CSERIALPORT_GLOBAL_H__
- #define __CSERIALPORT_GLOBAL_H__
- // enum is not a class or namespace error
- // https://stackoverflow.com/questions/5188554/my-enum-is-not-a-class-or-namespace
- #include "osplatformutil.h"
- #include <iostream>
- #ifdef I_OS_WIN
- #if defined(__MINGW32__) || defined(__MINGW64__)
- typedef long long int64; ///< long long定义方式可以用于gcc/g++,不受平台限制,但不能用于VC6.0
- #else
- typedef __int64 int64; ///< __int64是Win32平台编译器64位长整型的定义方式,不能用于Linux
- #endif
- #define DLL_EXPORT __declspec(dllexport) ///< define DLL_EXPORT windows 定义windows导出函数
- #elif defined I_OS_UNIX
- //typedef long long int64; ///< 64 bit signed unix 定义Unix int64
- #define DLL_EXPORT __attribute__((visibility("default"))) ///< define DLL_EXPORT unix 定义Unix导出函数
- #else
- // Not support
- #endif // I_OS_WIN
- #ifdef _UNICODE
- #ifndef UNICODE
- #define UNICODE
- #endif
- #endif
- #ifdef UNICODE
- #ifndef _UNICODE
- #define _UNICODE
- #endif
- #endif
- namespace itas109
- {
- /**
- * @brief the read and write serial port mode enum 读写串口模式
- *
- */
- enum OperateMode
- {
- AsynchronousOperate, ///< Asynchronous 异步
- SynchronousOperate ///< Synchronous 同步
- };
- /**
- * @brief the BaudRate enum 波特率
- * @warning because baudrate is number, so it can be any value(includr follow definitions).
- * 因为波特率为数值类型,所以理论上可以为任意值(包括下列定义)
- */
- enum BaudRate
- {
- BaudRate110 = 110, ///< 110
- BaudRate300 = 300, ///< 300
- BaudRate600 = 600, ///< 600
- BaudRate1200 = 1200, ///< 1200
- BaudRate2400 = 2400, ///< 2400
- BaudRate4800 = 4800, ///< 4800
- BaudRate9600 = 9600, ///< 9600 recommend 推荐
- BaudRate14400 = 14400, ///< 14400
- BaudRate19200 = 19200, ///< 19200
- BaudRate38400 = 38400, ///< 38400
- BaudRate56000 = 56000, ///< 56000
- BaudRate57600 = 57600, ///< 57600
- BaudRate115200 = 115200, ///< 115200
- BaudRate921600 = 921600 ///< 921600
- };
- /**
- * @brief the DataBits enum 数据位
- * @warning
- * by QextSerialPort:\n
- * 5 data bits cannot be used with 2 stop bits 5位数据位不能使用2位停止位\n
- * 1.5 stop bits can only be used with 5 data bits 1.5位停止位不能使用5位数据位\n
- * 8 data bits cannot be used with space parity on POSIX systems POSIX系统8位数据位不能使用0校验
- * @warning windows Number of bits/byte, 4-8 windows数据位范围为4 - 8
- *
- */
- enum DataBits
- {
- DataBits5 = 5, ///< 5 data bits 5位数据位
- DataBits6 = 6, ///< 6 data bits 6位数据位
- DataBits7 = 7, ///< 7 data bits 7位数据位
- DataBits8 = 8 ///< 8 data bits 8位数据位
- };
- /**
- * @brief the Parity enum 校验位
- * @warning windows 0-4=None,Odd,Even,Mark,Space
- *
- */
- enum Parity
- {
- ParityNone = 0, ///< No Parity 无校验
- ParityOdd = 1, ///< Odd Parity 奇校验
- ParityEven = 2, ///< Even Parity 偶校验
- ParityMark = 3, ///< Mark Parity 1校验
- ParitySpace = 4, ///< Space Parity 0校验
- };
- /**
- * @brief the StopBits enum 停止位
- * @warning 1.5 stop bit only for the Windows platform 1.5位停止位仅对windows有效
- * @warning windows 0,1,2 = 1, 1.5, 2
- *
- */
- enum StopBits
- {
- StopOne = 0, ///< 1 stop bit 1位停止位
- StopOneAndHalf = 1, ///< 1.5 stop bit 1.5位停止位 - This is only for the Windows platform
- StopTwo = 2 ///< 2 stop bit 2位停止位
- };
- /**
- * @brief the FlowControl enum 流控制
- *
- */
- enum FlowControl
- {
- FlowNone = 0, ///< No flow control 无流控制
- FlowHardware = 1, ///< Hardware(RTS / CTS) flow control 硬件流控制
- FlowSoftware = 2 ///< Software(XON / XOFF) flow control 软件流控制
- };
- /**
- * @brief the SerialPort error code 串口错误代码
- *
- */
- enum SerialPortError
- {
- SystemError = -1, ///< system error 系统错误(如空指针、内存访问异常等)
- NoError = 0, ///< No error occurred 没有错误
- DeviceNotFoundError, ///< device not found 未找到设备
- PermissionError, ///< permission error 权限错误
- OpenError, ///< open error 打开串口错误
- ParityError, ///< parity error 校验位错误
- FramingError, ///<
- BreakConditionError, ///<
- WriteError, ///< write error 写数据错误
- ReadError, ///< read error 读数据错误
- ResourceError, ///<
- UnsupportedOperationError, ///<
- UnknownError, ///< unknown error 未知错误
- TimeoutError, ///< time out error 超时
- NotOpenError, ///< not open serial port error 串口未打开
- InvalidParameterError ///< invalid parameter error 无效的参数
- };
- } // namespace itas109
- #endif //__CSERIALPORT_GLOBAL_H__
|