IPBS_Station/SDK/Depend/CSerialPort/bindings/c/cserialport.h
2025-09-05 08:44:30 +08:00

206 lines
5.4 KiB
C

#ifndef __C_CSERIALPORT_H__
#define __C_CSERIALPORT_H__
#ifdef _WIN32
#define C_DLL_EXPORT __declspec(dllexport)
#else
#define C_DLL_EXPORT
#endif
struct SerialPortInfo
{
char portName[256];
char description[256];
char hardwareId[256];
};
struct SerialPortInfoArray
{
struct SerialPortInfo *portInfo;
unsigned int size;
};
enum OperateMode
{
AsynchronousOperate,
SynchronousOperate
};
enum BaudRate
{
BaudRate110 = 110,
BaudRate300 = 300,
BaudRate600 = 600,
BaudRate1200 = 1200,
BaudRate2400 = 2400,
BaudRate4800 = 4800,
BaudRate9600 = 9600,
BaudRate14400 = 14400,
BaudRate19200 = 19200,
BaudRate38400 = 38400,
BaudRate56000 = 56000,
BaudRate57600 = 57600,
BaudRate115200 = 115200,
BaudRate921600 = 921600
};
enum DataBits
{
DataBits5 = 5,
DataBits6 = 6,
DataBits7 = 7,
DataBits8 = 8
};
enum Parity
{
ParityNone = 0,
ParityOdd = 1,
ParityEven = 2,
ParityMark = 3,
ParitySpace = 4,
};
enum StopBits
{
StopOne = 0,
StopOneAndHalf = 1,
StopTwo = 2
};
enum FlowControl
{
FlowNone = 0,
FlowHardware = 1,
FlowSoftware = 2
};
enum SerialPortError
{
ErrorUnknown = -1,
ErrorOK = 0,
ErrorFail = 1,
ErrorNotImplemented,
ErrorInner,
ErrorNullPointer,
ErrorInvalidParam,
ErrorAccessDenied,
ErrorOutOfMemory,
ErrorTimeout,
ErrorNotInit,
ErrorInitFailed,
ErrorAlreadyExist,
ErrorNotExist,
ErrorAlreadyOpen,
ErrorNotOpen,
ErrorOpenFailed,
ErrorCloseFailed,
ErrorWriteFailed,
ErrorReadFailed
};
#ifdef __cplusplus
extern "C"
{
#endif
typedef void (*pFunReadEvent)(void * /*pSerialPort*/, const char * /*portName*/, unsigned int /*readBufferLen*/);
C_DLL_EXPORT void CSerialPortAvailablePortInfos(struct SerialPortInfoArray *portInfoArray);
C_DLL_EXPORT void CSerialPortAvailablePortInfosFree(struct SerialPortInfoArray *portInfoArray);
C_DLL_EXPORT void *CSerialPortMalloc();
C_DLL_EXPORT void CSerialPortFree(void *pSerialPort);
C_DLL_EXPORT void CSerialPortInit(void *pSerialPort,
const char *portName,
int baudRate,
enum Parity parity,
enum DataBits dataBits,
enum StopBits stopbits,
enum FlowControl flowControl,
unsigned int readBufferSize);
C_DLL_EXPORT void CSerialPortSetOperateMode(void *pSerialPort, enum OperateMode operateMode);
C_DLL_EXPORT int CSerialPortOpen(void *pSerialPort);
C_DLL_EXPORT void CSerialPortClose(void *pSerialPort);
C_DLL_EXPORT int CSerialPortIsOpen(void *pSerialPort);
C_DLL_EXPORT int CSerialPortConnectReadEvent(void *pSerialPort, pFunReadEvent pFun);
C_DLL_EXPORT int CSerialPortDisconnectReadEvent(void *pSerialPort);
C_DLL_EXPORT unsigned int CSerialPortGetReadBufferUsedLen(void *pSerialPort);
C_DLL_EXPORT int CSerialPortReadData(void *pSerialPort, void *data, int size);
C_DLL_EXPORT int CSerialPortReadAllData(void *pSerialPort, void *data);
C_DLL_EXPORT int CSerialPortReadLineData(void *pSerialPort, void *data, int size);
C_DLL_EXPORT int CSerialPortWriteData(void *pSerialPort, const void *data, int size);
C_DLL_EXPORT void CSerialPortSetDebugModel(void *pSerialPort, int isDebug);
C_DLL_EXPORT void CSerialPortSetReadIntervalTimeout(void *pSerialPort, unsigned int msecs);
C_DLL_EXPORT unsigned int CSerialPortGetReadIntervalTimeout(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetMinByteReadNotify(void *pSerialPort, unsigned int minByteReadNotify);
C_DLL_EXPORT int CSerialPortFlushBuffers(void *pSerialPort);
C_DLL_EXPORT int CSerialPortFlushReadBuffers(void *pSerialPort);
C_DLL_EXPORT int CSerialPortFlushWriteBuffers(void *pSerialPort);
C_DLL_EXPORT int CSerialPortGetLastError(void *pSerialPort);
C_DLL_EXPORT const char *CSerialPortGetLastErrorMsg(void *pSerialPort);
C_DLL_EXPORT void CSerialPortClearError(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetPortName(void *pSerialPort, const char *portName);
C_DLL_EXPORT const char *CSerialPortGetPortName(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetBaudRate(void *pSerialPort, int baudRate);
C_DLL_EXPORT int CSerialPortGetBaudRate(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetParity(void *pSerialPort, enum Parity parity);
C_DLL_EXPORT enum Parity CSerialPortGetParity(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetDataBits(void *pSerialPort, enum DataBits dataBits);
C_DLL_EXPORT enum DataBits CSerialPortGetDataBits(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetStopBits(void *pSerialPort, enum StopBits stopbits);
C_DLL_EXPORT enum StopBits CSerialPortGetStopBits(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetFlowControl(void *pSerialPort, enum FlowControl flowControl);
C_DLL_EXPORT enum FlowControl CSerialPortGetFlowControl(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetReadBufferSize(void *pSerialPort, unsigned int size);
C_DLL_EXPORT unsigned int CSerialPortGetReadBufferSize(void *pSerialPort);
C_DLL_EXPORT void CSerialPortSetDtr(void *pSerialPort, int set);
C_DLL_EXPORT void CSerialPortSetRts(void *pSerialPort, int set);
C_DLL_EXPORT const char *CSerialPortGetVersion(void *pSerialPort);
#ifdef __cplusplus
}
#endif
#endif // !__C_CSERIALPORT_H__