430 lines
9.9 KiB
C
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
|
|
|