Files
2026-02-01 22:23:06 +08:00

430 lines
9.9 KiB
C

/* ++
Module Name: BSTCOM_lib.h
Author: Steven Ren
Description:
this file defined all User Interface (UI) for
user to programming the custom Application;
History:
2012/07/26 (V1.0 published): this created
2012/07/27 (V1.1): Add function BSTCOM_ReadFrameEx
2012/12/11 (V1.2): Add function BSTCOM_GetWorkMode
2014/03/25 (V1.3):
Add function BSTCOM_SetTriggerMode
Add function BSTCOM_SetFrameMode
Add function BSTCOM_SetTriggerLevel
Add function BSTCOM_SetTxExtTrigMode
Add function BSTCOM_TxPause
Add function BSTCOM_WriteFrameEx
Add function BSTCOM_GetTxFrameCnt
Add struct BSTCOM_PULSE_PARAM_STRUCT
Add function BSTCOM_PLS_Reset
Add function BSTCOM_PLS_SetOutputParam
Add function BSTCOM_PLS_SetOutputDefault
Add function BSTCOM_PLS_SetOutputCnt
Add function BSTCOM_PLS_GetOutputStatus
Add function BSTCOM_PLS_OutEnable
Add function BSTCOM_PLS_OutputStart
Add function BSTCOM_PLS_OutputStop
2015/09/06 (V1.4):
Add structure BSTCOM_TRIGIN_CONFIG_STRUCT
Add function BSTCOM_TrigInConfig
2016/02/18 (V1.5)
Add function BSTCOM_SetByteOrder
2017/02/21 (V1.6)
Add WorkDelay definition
-- */
#ifndef _BSTCOM_LIB_H_
#define _BSTCOM_LIB_H_
#include <windows.h>
#pragma comment(lib, "BSTCOM.lib")
#ifndef DLL
#define DLL __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct
{
DWORD Baudrate;
BYTE ByteSize;
BYTE Parity;
BYTE StopBits;
}BSTCOM_DATA_FORMAT_STRUCT;
typedef struct
{
BYTE HDR;
BYTE EDR;
BYTE TailA;
BYTE TailB;
BYTE LENR;
} BSTCOM_ASYN_FRAMEFORMAT_STRUCT;
typedef struct
{
BYTE HR[4];
BYTE ER[4];
} BSTCOM_SYNC_FRAMEFORMAT_STRUCT;
typedef struct
{
DWORD IsProtocol;
DWORD SumCheckEN;
DWORD HeadIncluded;
DWORD ProtocolSel;
} BSTCOM_REVMODE_STRUCT;
typedef struct
{
DWORD PulseLow;
DWORD PulseHigh;
double Duty_Cycle;
double Frequency;
} BSTCOM_PULSE_PARAM_STRUCT;
typedef struct
{
BOOL TrigEnable;
DWORD TrigSrc;
DWORD TrigLevel;
DWORD FilterPeriod;
DWORD WorkDelay;
} BSTCOM_TRIGIN_CONFIG_STRUCT;
#ifndef _VERSIONINFO_STRUCT_
#define _VERSIONINFO_STRUCT_
typedef struct
{
DWORD hwVersion;
DWORD driverVersion;
DWORD libVersion;
} VERSIONINFO_STRUCT, *pVERSIONINFO_STRUCT;
#endif
// 打开单路串口
//
DLL BOOL __stdcall BSTCOM_Open(HANDLE *phCom, BYTE ComNo);
// 获取板卡序列号
//
DLL DWORD __stdcall BSTCOM_GetSN(HANDLE hCom);
// 获取版本信息
//
DLL BOOL __stdcall BSTCOM_GetVersion(HANDLE hCom, VERSIONINFO_STRUCT *pstVerInfo);
// 复位串口
//
DLL BOOL __stdcall BSTCOM_Reset(HANDLE hCom);
// 关闭串口
//
DLL BOOL __stdcall BSTCOM_Close(HANDLE hCom);
/*
* 串口通讯配置 -----------------------------------
*/
// 设置串口的工作类型
// aType: TRUE(异步串口), FALSE(同步串口)
DLL BOOL __stdcall BSTCOM_SetWorkType(HANDLE hCom, BOOL aType);
// 设置串口工作模式
//
DLL BOOL __stdcall BSTCOM_SetWorkMode(HANDLE hCom, BYTE Mode);
// 获取串口工作模式
//
DLL BOOL __stdcall BSTCOM_GetWorkMode(HANDLE hCom, BYTE *Mode);
// 获取串口通讯数据格式
//
DLL BOOL __stdcall BSTCOM_GetDataFormat(HANDLE hCom, BSTCOM_DATA_FORMAT_STRUCT *pDataFmt);
// 设置串口通讯数据格式
//
DLL BOOL __stdcall BSTCOM_SetDataFormat(HANDLE hCom, BSTCOM_DATA_FORMAT_STRUCT *pDataFmt);
// 使能/禁用异步串口485模式自检
//
DLL BOOL __stdcall BSTCOM_485SelfTest(HANDLE hCom, BOOL Enabled);
// 使能/禁用异步串口接收奇偶校验检测
//
DLL BOOL __stdcall BSTCOM_ParityCheckEnable(HANDLE hCom, BOOL Enabled);
/*
* 配置接收 -----------------------------------
*/
// 设置异步串口数据接收模式(透明/协议)
//
DLL BOOL __stdcall BSTCOM_SetRxMode(HANDLE hCom, BSTCOM_REVMODE_STRUCT *pstRevMode);
// 设置异步串口协议接收数据长度和校验和字节顺序
//
DLL BOOL __stdcall BSTCOM_SetByteOrder(HANDLE hCom, BOOL LEN_HL, BOOL SUM_HL);
// 设置异步串口协议帧格式
//
DLL BOOL __stdcall BSTCOM_SetFrameFormat_ASYN(HANDLE hCom, BSTCOM_ASYN_FRAMEFORMAT_STRUCT *pstFrameFormat);
// 设置同步串口协议帧格式
//
DLL BOOL __stdcall BSTCOM_SetFrameFormat_SYNC(HANDLE hCom, BSTCOM_SYNC_FRAMEFORMAT_STRUCT *pstFrameFormat);
// 设置同步串口的本地地址
//
DLL BOOL __stdcall BSTCOM_SetAddress(HANDLE hCom, BYTE LocalAddr);
// 设置同步串口CRC校验的初始值
//
DLL BOOL __stdcall BSTCOM_SetCrcInitVal(HANDLE hCom, DWORD CrcVal);
// 设置同步串口CRC的发送的顺序,低位字节或高位字节在前
//
DLL BOOL __stdcall BSTCOM_SetCrcTxOrder(HANDLE hCom, BOOL HighFirst);
// 设置同步串口接收数据的时钟边沿
//
DLL BOOL __stdcall BSTCOM_RxEdgeSelect(HANDLE hCom, BOOL RaiseEdge);
// 设置同步串口数据帧前后同步字"0x7E"的数量
//
DLL BOOL __stdcall BSTCOM_SetSynWordCnt(HANDLE hCom, BYTE Cnt);
// 使能/禁用同步串口监听模式
//
DLL BOOL __stdcall BSTCOM_ListenModeEnable(HANDLE hCom, BOOL Enabled);
// 使能/禁用同步串口接收错误统计
//
DLL BOOL __stdcall BSTCOM_ErrAnalyseEnable(HANDLE hCom, BOOL Enabled);
// 使能/禁用站地址与本地地址不一致错误检测
//
DLL BOOL __stdcall BSTCOM_ErrAddrEnable(HANDLE hCom, BOOL ADDR_ERR);
// 使能/禁用同步串口CRC校验错误检测
//
DLL BOOL __stdcall BSTCOM_ErrCrcEnable(HANDLE hCom, BOOL CRC_ERR);
// 使能/禁用同步串口同步字0x7E异常结束错误检测
//
DLL BOOL __stdcall BSTCOM_ErrEndEnable(HANDLE hCom, BOOL END_ERR);
// 使能/禁用同步串口数据编码错误检测
//
DLL BOOL __stdcall BSTCOM_ErrCodeEnable(HANDLE hCom, BOOL CODE_ERR);
// 使能/禁用同步串口少数错误检测
//
DLL BOOL __stdcall BSTCOM_ErrLoseEnable(HANDLE hCom, BOOL LOSE_ERR);
// 使能/禁用超时丢帧统计
//
DLL BOOL __stdcall BSTCOM_TimeOutEnable(HANDLE hCom, BOOL Enabled);
// 设置超时丢帧时间
// T: 单位1us
DLL BOOL __stdcall BSTCOM_SetResponseTimeout(HANDLE hCom, DWORD T);
// 设置接收缓冲区触发深度
//
DLL BOOL __stdcall BSTCOM_SetRxTriggerDepth(HANDLE hCom, DWORD Depth);
// 设置接收FIFO模式
// Refresh: TRUE:刷新接收, FALSE:FIFO接收
DLL BOOL __stdcall BSTCOM_RFModeEnable(HANDLE hCom, BOOL Enable);
// 使能/禁用接收中断
//
DLL BOOL __stdcall BSTCOM_RxIntEnable(HANDLE hCom, BOOL Enabled);
// 设置接收中断事件
//
DLL BOOL __stdcall BSTCOM_SetEvent(HANDLE hCom, HANDLE hEvent);
/*
* 配置发送 -----------------------------------
*/
// 设置异步串口发送数据的字间间隔
// Gap: 单位为0.5位
DLL BOOL __stdcall BSTCOM_SetWordGap(HANDLE hCom, DWORD Gap);
// 设置发送帧间间隔
// Gap: 单位为1us
DLL BOOL __stdcall BSTCOM_SetFrameGap(HANDLE hCom, DWORD Gap);
// 设置串口数据发送模式(定时发送/非定时发送)
//
DLL BOOL __stdcall BSTCOM_SetTxMode(HANDLE hCom, BOOL Timing);
// 触发发送配置
//
DLL BOOL __stdcall BSTCOM_TrigInConfig(HANDLE hCom, BSTCOM_TRIGIN_CONFIG_STRUCT *pstCfgInput);
// 设置同步串口发送数据时钟边沿
//
DLL BOOL __stdcall BSTCOM_TxEdgeSelect(HANDLE hCom, BOOL RaiseEdge);
// 设置同步串口定时发送的帧ID
//
DLL BOOL __stdcall BSTCOM_SetFrameId(HANDLE hCom, WORD IdNum, WORD IdPos, WORD MSBFirst);
// 设置异步串口定时发送触发模式(内触发/外触发)
//
DLL BOOL __stdcall BSTCOM_SetTriggerMode(HANDLE hCom, BYTE Mode);
// 设置异步串口触发方式下帧的发送模式(单次发送/循环发送)
//
DLL BOOL __stdcall BSTCOM_SetFrameMode(HANDLE hCom, BYTE Mode);
// 设置异步串口定时发送外触发边沿(上升沿/下降沿)
//
DLL BOOL __stdcall BSTCOM_SetTriggerLevel(HANDLE hCom, BYTE Mode);
// 设置异步串口定时发送时外部信号的触发发送方式
//
DLL BOOL __stdcall BSTCOM_SetTxExtTrigMode(HANDLE hCom, BYTE Mode);
/*
* 接收数据 -----------------------------------
*/
// 开始/停止数据的接收
//
DLL BOOL __stdcall BSTCOM_RxStart(HANDLE hCom, BOOL Enabled);
// 清空接收缓冲区
//
DLL BOOL __stdcall BSTCOM_ResetRxFIFO(HANDLE hCom);
// 清接收缓冲区溢出标志
//
DLL BOOL __stdcall BSTCOM_Clr_OF_Flag(HANDLE hCom);
// 获取超时丢帧数量
//
DLL DWORD __stdcall BSTCOM_GetTimeOutFrameCnt(HANDLE hCom);
// 超时丢帧数量清零
//
DLL BOOL __stdcall BSTCOM_ClrTimeOutFrameCnt(HANDLE hCom);
// 获取接收FIFO的状态
//
DLL BYTE __stdcall BSTCOM_GetRxFIFOStatus(HANDLE hCom);
// 获取接收FIFO里的数据量
//
DLL DWORD __stdcall BSTCOM_GetRxFIFOCnt(HANDLE hCom);
// 串口读取数据(非协议方式)
//
DLL BOOL __stdcall BSTCOM_RxRead(HANDLE hCom, DWORD nNumToRead, BYTE *rxBuf, DWORD *nNumRead);
// 读取当前缓冲区中的帧数量
//
DLL DWORD __stdcall BSTCOM_GetRxFrameCnt(HANDLE hCom);
// 读取FIFO接收数据帧
//
DLL BOOL __stdcall BSTCOM_ReadFrame(HANDLE hCom, DWORD Len, BYTE *RxBuf, DWORD *nResult);
// 读取多个数据帧
//
DLL BOOL __stdcall BSTCOM_ReadFrameEx(HANDLE hCom, DWORD nNumberOfFramesToRead, DWORD nNumberOfBytesToRead, BYTE *RxBuf, DWORD *pNumberOfBytesRead, DWORD *pNumberOfFramesRead);
// 读取刷新接收数据帧
//
DLL DWORD __stdcall BSTCOM_ReadFrame_Refresh(HANDLE hCom, DWORD Len, BYTE *RxBuf, DWORD *nResult);
/*
* 发送数据 -----------------------------------
*/
// 开始/停止定时发送
//
DLL BOOL __stdcall BSTCOM_TxStart(HANDLE hCom, BOOL Enabled);
// 暂停/继续异步串口定时发送
//
DLL BOOL __stdcall BSTCOM_TxPause(HANDLE hCom, BOOL Enabled);
// 向异步串口定时发送FIFO写入多个数据帧
//
DLL BOOL __stdcall BSTCOM_WriteFrameEx(HANDLE hCom, DWORD nNumberOfFramesToWrite, BYTE *TxBuf, DWORD *pNumberOfFramesWrite);
// 获取异步串口定时发送FIFO里的帧数量
//
DLL DWORD __stdcall BSTCOM_GetTxFrameCnt(HANDLE hCom);
// 获取发送FIFO的状态
//
DLL BYTE __stdcall BSTCOM_GetTxFIFOStatus(HANDLE hCom);
// 获取发送FIFO里的数据量
//
DLL DWORD __stdcall BSTCOM_GetTxFIFOCnt(HANDLE hCom);
// 串口发送数据
//
DLL BOOL __stdcall BSTCOM_TxWrite(HANDLE hCom, DWORD nNumToWrite, BYTE *txBuf, DWORD *nNumWrote);
/*
* TTL脉冲 配置与输出 -----------------------------------
*/
// 复位脉冲输出
//
DLL BOOL __stdcall BSTCOM_PLS_Reset(HANDLE hCom);
// 设置脉冲输出参数
//
DLL BOOL __stdcall BSTCOM_PLS_SetOutputParam(HANDLE hCom, BYTE ModeSel, const BSTCOM_PULSE_PARAM_STRUCT *pstPulseParam);
// 设置脉冲输出默认电平状态
//
DLL BOOL __stdcall BSTCOM_PLS_SetOutputDefault(HANDLE hCom, BOOL High);
// 设置脉冲输出的个数
//
DLL BOOL __stdcall BSTCOM_PLS_SetOutputCnt(HANDLE hCom, DWORD Cnt);
// 获取脉冲输出状态
//
DLL BOOL __stdcall BSTCOM_PLS_GetOutputStatus(HANDLE hCom, BOOL *Status);
// 使能/禁止输出
//
DLL BOOL __stdcall BSTCOM_PLS_OutEnable(HANDLE hCom, BOOL Enabled);
// 开启脉冲输出
//
DLL BOOL __stdcall BSTCOM_PLS_OutputStart(HANDLE hCom);
// 停止脉冲输出
//
DLL BOOL __stdcall BSTCOM_PLS_OutputStop(HANDLE hCom);
#ifdef __cplusplus
}
#endif
#endif