C# 固高GTS运动控制卡函数文件.cs
using System.Runtime.InteropServices;
namespace gts
{
public class mc
{
public const short MC_NONE = -1;
public const short MC_LIMIT_POSITIVE = 0;
public const short MC_LIMIT_NEGATIVE = 1;
public const short MC_ALARM = 2;
public const short MC_HOME = 3;
public const short MC_GPI = 4;
public const short MC_ENABLE = 10;
public const short MC_CLEAR = 11;
public const short MC_GPO = 12;
public const short MC_DAC = 20;
public const short MC_STEP = 21;
public const short MC_PULSE = 22;
public const short MC_ENCODER = 23;
public const short MC_AXIS = 30;
public const short MC_PROFILE = 31;
public const short MC_CONTROL = 32;
public const short CAPTURE_HOME = 1;
public const short CAPTURE_INDEX = 2;
public const short PT_MODE_STATIC = 0;
public const short PT_MODE_DYNAMIC = 1;
public const short PT_SEGMENT_NORMAL = 0;
public const short PT_SEGMENT_EVEN = 1;
public const short PT_SEGMENT_STOP = 2;
public const short GEAR_MASTER_ENCODER = 1;
public const short GEAR_MASTER_PROFILE = 2;
public const short GEAR_MASTER_AXIS = 3;
public const short FOLLOW_MASTER_ENCODER = 1;
public const short FOLLOW_MASTER_PROFILE = 2;
public const short FOLLOW_MASTER_AXIS = 3;
public const short FOLLOW_EVENT_START = 1;
public const short FOLLOW_EVENT_PASS = 2;
public const short FOLLOW_SEGMENT_NORMAL = 0;
public const short FOLLOW_SEGMENT_EVEN = 1;
public const short FOLLOW_SEGMENT_STOP = 2;
public const short FOLLOW_SEGMENT_CONTINUE = 3;
public const short INTERPOLATION_AXIS_MAX = 4;
public const short CRD_FIFO_MAX = 4096;
public const short CRD_MAX = 2;
/// <summary>
/// 点位模式运动参数
/// </summary>
public struct TTrapPrm
{
/// <summary>
/// 加速度,单位“脉冲/毫秒 2
/// </summary>
public double acc;
/// <summary>
/// 减速度,单位“脉冲/毫秒 2
/// </summary>
public double dec;
/// <summary>
/// 起跳速度,单位“脉冲/毫秒
/// </summary>
public double velStart;
/// <summary>
/// 平滑时间,单位“毫秒
/// </summary>
public short smoothTime;
}
/// <summary>
/// Jog 模式运动参数
/// </summary>
public struct TJogPrm
{
/// <summary>
/// 加速度,单位“脉冲/毫秒 2
/// </summary>
public double acc;
/// <summary>
/// 减速度,单位“脉冲/毫秒 2
/// </summary>
public double dec;
/// <summary>
/// 平滑系数,取值范围[0,1)
/// </summary>
public double smooth;
}
/// <summary>
/// PID 参数
/// </summary>
public struct TPid
{
/// <summary>
/// 比例增益
/// </summary>
public double kp;
/// <summary>
/// 积分增益
/// </summary>
public double ki;
/// <summary>
/// 微分增益
/// </summary>
public double kd;
/// <summary>
/// 速度前馈系数
/// </summary>
public double kvff;
/// <summary>
/// 加速度前馈系数
/// </summary>
public double kaff;
/// <summary>
/// 积分饱和极限
/// </summary>
public int integralLimit;
/// <summary>
/// 微分饱和极限
/// </summary>
public int derivativeLimit;
/// <summary>
/// 控制量输出饱和极限
/// </summary>
public short limit;
}
/// <summary>
/// 线程状态
/// </summary>
public struct TThreadSts
{
/// <summary>
/// 运行状态
/// </summary>
public short run;
/// <summary>
/// 指令返回值
/// </summary>
public short error;
/// <summary>
/// 函数返回值
/// </summary>
public double result;
/// <summary>
/// 当前执行的指令行号
/// </summary>
public short line;
}
public struct TVarInfo
{
public short id;
public short dataType;
public double dumb0;
public double dumb1;
public double dumb2;
public double dumb3;
}
/// <summary>
/// 坐标系的相关参数
/// </summary>
public struct TCrdPrm
{
/// <summary>
/// 坐标系的维数,取值范围:[1,4]
/// </summary>
public short dimension;
public short profile1;
public short profile2;
public short profile3;
public short profile4;
public short profile5;
public short profile6;
public short profile7;
public short profile8;
/// <summary>
/// 该坐标系的最大合成速度。取值范围:(0,32767),单位:pulse/ms。
/// </summary>
public double synVelMax;
/// <summary>
/// 该坐标系的最大合成加速度。取值范围:(0,32767),单位:pulse/(ms* ms)。
/// </summary>
public double synAccMax;
/// <summary>
/// 每个插补段的最小匀速段时间。取值范围:[0,32767),单位:ms。
/// </summary>
public short evenTime;
}
/// <summary>
/// 缓存区内的延时和数字量输出操作
/// </summary>
public struct TCrdBufOperation
{
/// <summary>
/// 表示该插补段是否含有延时或者数字量输出操作,取值范围:[0,1]
/// </summary>
public short flag;
/// <summary>
/// 延时操作的延时时间,取值范围:[0,16383],单位:ms。
/// </summary>
public ushort delay;
/// <summary>
/// 数字量输出的类型
/// </summary>
public short doType;
/// <summary>
/// 从 bit0~bit15 按位表示指定的数字量输出是否有操作
/// </summary>
public ushort doMask;
/// <summary>
/// 从 bit0~bit15 按位表示指定的数字量输出的值
/// </summary>
public ushort doValue;
}
/// <summary>
/// 插补数据
/// </summary>
public struct TCrdData
{
public long posX;
public long posY;
public long posZ;
public long posA;
/// <summary>
/// 该插补段的目标速度。取值范围:(0,32767),单位:pulse/ms
/// </summary>
public double vel;
/// <summary>
/// 该插补段的加速度。取值范围:(0,32767),单位:pulse/(ms*ms)。
/// </summary>
public double acc;
/// <summary>
/// 表示该插补段的终点速度是否强制为 0
/// </summary>
public short velEndZero;
/// <summary>
/// 缓存区内的延时和数字量输出操作
/// </summary>
public TCrdBufOperation operation;
public double cosX;
public double cosY;
public double cosZ;
public double cosA;
/// <summary>
/// 该插补段的终点速度,取值范围:[0,32767),单位:pulse/ms
/// </summary>
public double velEnd;
/// <summary>
/// 插补模块内部使用变量。
/// </summary>
public double velEndAdjust;
/// <summary>
/// 插补模块内部使用变量。
/// </summary>
public double r;
}
#region 系统初始化
/// <summary>
/// 切换当前运动控制器卡号
/// </summary>
/// <param name="index">将被设置为当前运动控制器的卡号,取值范围:[0,15]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetCardNo(short index);
/// <summary>
/// 读取当前运动控制器卡号
/// </summary>
/// <param name="index">读取的当前运动控制器的卡号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCardNo(out short index);
/// <summary>
/// 打开运动控制器
/// </summary>
/// <param name="channel">打开运动控制器的方式,默认为:0</param>
/// <param name="param">当 channel=1 时,该参数有效</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Open(short channel, short param);
/// <summary>
/// 关闭运动控制器
/// </summary>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Close();
/// <summary>
/// 下载配置信息到运动控制器
/// </summary>
/// <param name="pFile">配置文件的文件名</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_LoadConfig(string pFile);
/// <summary>
/// 复位运动控制器
/// </summary>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Reset();
/// <summary>
/// 读取运动控制器固件版本号
/// </summary>
/// <param name="pVersion">运动控制器固件版本号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetVersion(out string pVersion);
#endregion
#region 访问硬件资源
/// <summary>
/// 设置数字 IO 输出电平状态
/// </summary>
/// <param name="doType">指定数字 IO 类型</param>
/// <param name="value">按位指示数字 IO 输出电平默认情况下,1 表示高电平,0 表示低电平</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetDo(short doType, int value);
/// <summary>
/// 按位设置数字 IO 输出电平状态
/// </summary>
/// <param name="doType">指定数字 IO 类型</param>
/// <param name="doIndex">输出 IO 的索引</param>
/// <param name="value">设置数字 IO 输出电平</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetDoBit(short doType, short doIndex, short value);
/// <summary>
/// 读取数字 IO 输出电平状态
/// </summary>
/// <param name="doType">指定数字 IO 类型</param>
/// <param name="pValue">输出 IO 的索引</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetDo(short doType, out int pValue);
/// <summary>
/// 读取数字 IO 输入电平状态
/// </summary>
/// <param name="diType">指定数字 IO 类型</param>
/// <param name="pValue">数字 IO 输入状态,按位指示 IO 输入电平</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetDi(short diType, out int pValue);
/// <summary>
/// 设置 DAC 输出电压
/// </summary>
/// <param name="dac">dac 起始轴号</param>
/// <param name="value">输出电压-32768 对应-10V;32767 对应+10V</param>
/// <param name="count">设置的通道数,默认为 1 1 次最多可以设置 8 路 dac 输出</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetDac(short dac, ref short value, short count);
/// <summary>
/// 读取 DAC 输出电压
/// </summary>
/// <param name="dac">dac 起始轴号</param>
/// <param name="value">输出电压</param>
/// <param name="count">读取的通道数,默认为 1 1 次最多可以读取 8 个 dac 轴</param>
/// <param name="pClock">读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetDac(short dac, out short value, short count, out uint pClock);
/// <summary>
/// 修改编码器位置
/// </summary>
/// <param name="encoder">编码器轴号</param>
/// <param name="encPos">编码器位置</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetEncPos(short encoder, int encPos);
/// <summary>
/// 修改编码器位置
/// </summary>
/// <param name="encoder">编码器起始轴号</param>
/// <param name="pValue">编码器位置</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个编码器轴</param>
/// <param name="pClock">读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetEncPos(short encoder, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取编码器速度
/// </summary>
/// <param name="encoder">编码器起始轴号</param>
/// <param name="pValue">编码器速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个编码器轴</param>
/// <param name="pClock">读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetEncVel(short encoder, out double pValue, short count, out uint pClock);
#endregion
#region 硬件捕获
/// <summary>
/// 设置编码器捕获模式
/// </summary>
/// <param name="encoder">编码器轴号</param>
/// <param name="mode">编码器捕获模式</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetCaptureMode(short encoder, short mode);
/// <summary>
/// 读取编码器捕获方式
/// </summary>
/// <param name="encoder">编码器起始轴号</param>
/// <param name="pMode">编码器捕获模式</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个编码器轴</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCaptureMode(short encoder, out short pMode, short count);
/// <summary>
/// 读取编码器捕获状态
/// </summary>
/// <param name="encoder">编码器起始轴号</param>
/// <param name="pStatus">读取编码器捕获状态为 1 时表示对应轴捕获触发</param>
/// <param name="pValue">读取编码器捕获值当捕获触发时,编码器捕获值会自动更新</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个编码器轴</param>
/// <param name="pClock">读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCaptureStatus(short encoder, out short pStatus, out int pValue, short count, uint pClock);
/// <summary>
/// 设置捕获电平
/// </summary>
/// <param name="encoder">编码器轴号</param>
/// <param name="mode">捕获模式</param>
/// <param name="sense">捕获电平,可设置 0 或者 1</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetCaptureSense(short encoder, short mode, short sense);
#endregion
#region 运动逻辑管理
/// <summary>
/// 清除驱动报警、限位、IO 停止、跟随误差越限等异常标志
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="count">清除的轴数,默认为 1 1 次最多可以清除 8 个轴的异常状态</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_ClrSts(short axis, short count);
/// <summary>
/// 打开驱动器使能
/// </summary>
/// <param name="axis">打开伺服使能的轴的编号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_AxisOn(short axis);
/// <summary>
/// 关闭驱动器使能
/// </summary>
/// <param name="axis">关闭伺服使能的轴的编号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_AxisOff(short axis);
/// <summary>
/// 平滑停止或急停指定轴
/// </summary>
/// <param name="mask">按位指示需要停止运动的轴号</param>
/// <param name="option">按位指示停止方式</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Stop(int mask, int option);
/// <summary>
/// 修改指定轴的规划位置
/// </summary>
/// <param name="profile">规划轴编号</param>
/// <param name="prfPos">设置的规划位置的值</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetPrfPos(short profile, int prfPos);
/// <summary>
/// axis 合成规划位置和所关联的 profile 同步
/// </summary>
/// <param name="mask">按位标识需要进行位置同步的轴号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SynchAxisPos(int mask);
/// <summary>
/// 清零规划位置和实际位置,并进行零漂补偿
/// </summary>
/// <param name="axis">需要位置清零的起始轴号</param>
/// <param name="count">需要位置清零的轴数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_ZeroPos(short axis, short count);
/// <summary>
/// 设置软限位
/// </summary>
/// <param name="axis">轴号</param>
/// <param name="positive">正向软限位,当规划位置大于该值时,正限位触发</param>
/// <param name="negative">负向软限位,当规划位置小于该值时,负限位触发</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetSoftLimit(short axis, int positive, int negative);
/// <summary>
/// 读取软限位
/// </summary>
/// <param name="axis">轴号</param>
/// <param name="pPositive">读取正向软限位</param>
/// <param name="pNegative">读取负向软限位</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetSoftLimit(short axis, out int pPositive, out int pNegative);
/// <summary>
/// 设置到位误差带
/// </summary>
/// <param name="axis">轴号</param>
/// <param name="band">误差带大小,单位:脉冲</param>
/// <param name="time">误差带保持时间,单位:250 微秒</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetAxisBand(short axis, int band, int time);
/// <summary>
/// 读取到位误差带
/// </summary>
/// <param name="axis">轴号</param>
/// <param name="pBand">读取误差带大小</param>
/// <param name="pTime">读取误差带保持时间</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisBand(short axis, out int pBand, out int pTime);
#endregion
#region 运动状态检测
/// <summary>
/// 读取指定轴状态
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pSts">32 位轴状态字,详细定义参见重点说明</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的状态</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetSts(short axis, out int pSts, short count, out uint pClock);
/// <summary>
/// 读取规划位置
/// </summary>
/// <param name="profile">起始规划轴号</param>
/// <param name="pValue">规划位置</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划位置</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPrfPos(short profile, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取规划速度
/// </summary>
/// <param name="profile">起始规划轴号</param>
/// <param name="pValue">规划速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划速度</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPrfVel(short profile, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取规划加速度
/// </summary>
/// <param name="profile">起始规划轴号</param>
/// <param name="pValue">规划加速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划加速度</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPrfAcc(short profile, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴运动模式
/// </summary>
/// <param name="profile">起始规划轴号</param>
/// <param name="pValue">轴运动模式</param>
/// <param name="count">读取的规划轴数,默认为 1 1 次最多可以读取 8 个轴的运动模式</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPrfMode(short profile, out int pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的规划位置值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的规划位置</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划位置</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisPrfPos(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的规划速度值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的规划速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划速度</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisPrfVel(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的规划加速度值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的规划加速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划加速度</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisPrfAcc(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的编码器位置值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的编码器位置</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的编码器位置</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisEncPos(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的编码器速度值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的编码器速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的编码器速度</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisEncVel(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的编码器加速度值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的编码器加速度</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的编码器加速度</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisEncAcc(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取轴(axis)的规划位置值和编码器位置值的差值
/// </summary>
/// <param name="axis">起始轴号</param>
/// <param name="pValue">轴的规划位置与编码器位置的差值</param>
/// <param name="count">读取的轴数,默认为 1 1 次最多可以读取 8 个轴的规划位置与编码器位置的差值</param>
/// <param name="pClock">读取控制器时钟,默认为:NULL,即不用读取控制器时钟</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetAxisError(short axis, out double pValue, short count, out uint pClock);
/// <summary>
/// 读取系统时钟
/// </summary>
/// <param name="pClock">读取的运动控制器的时钟,单位:毫秒</param>
/// <param name="pLoop">内部使用,默认为:NULL,即不读取该值</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetClock(out uint pClock, out uint pLoop);
#endregion
#region 设置控制参数
/// <summary>
/// 设定 PID 索引,支持 3 组 PID 参数
/// </summary>
/// <param name="control">伺服控制器编号</param>
/// <param name="index">伺服控制参数的索引号,取值范围:[1,3]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetControlFilter(short control, short index);
/// <summary>
/// 读取当前 PID 索引
/// </summary>
/// <param name="control">伺服控制器编号</param>
/// <param name="pIndex">读取的伺服控制参数的索引号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetControlFilter(short control, out short pIndex);
/// <summary>
/// 设置 PID 参数
/// </summary>
/// <param name="control">伺服控制器编号</param>
/// <param name="index">伺服控制参数的索引号,取值范围:[1,3]</param>
/// <param name="pPid">设置 PID 参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetPid(short control, short index, ref TPid pPid);
/// <summary>
/// 读取 PID 参数
/// </summary>
/// <param name="control">伺服控制器编号</param>
/// <param name="index">伺服控制参数的索引号,取值范围:[1,3]</param>
/// <param name="pPid">读取 PID 参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPid(short control, short index, out TPid pPid);
#endregion
#region 点位模式
/// <summary>
/// 设置指定轴为点位模式
/// </summary>
/// <param name="profile">规划轴号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PrfTrap(short profile);
/// <summary>
/// 设置点位模式运动参数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pPrm">设置点位模式运动参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetTrapPrm(short profile, ref TTrapPrm pPrm);
/// <summary>
/// 读取点位模式运动参数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pPrm">读取点位模式运动参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetTrapPrm(short profile, out TTrapPrm pPrm);
/// <summary>
/// 设置目标位置
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pos">设置目标位置,单位是脉冲</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetPos(short profile, int pos);
/// <summary>
/// 读取目标位置
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pPos">读取目标位置,单位是脉冲</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPos(short profile, out int pPos);
/// <summary>
/// 设置目标速度
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="vel">设置目标速度,单位是“脉冲/毫秒”</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetVel(short profile, double vel);
/// <summary>
/// 读取目标速度
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pVel">读取目标位置,单位是“脉冲/毫秒”</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetVel(short profile, out double pVel);
/// <summary>
/// 启动点位/jog运动
/// </summary>
/// <param name="mask">按位指示需要启动点位运动的轴号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Update(int mask);
#endregion
#region Jog模式
/// <summary>
/// 设置指定轴为 Jog 模式
/// </summary>
/// <param name="profile">规划轴号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PrfJog(short profile);
/// <summary>
/// 设置 Jog 运动参数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pPrm">设置 Jog 模式运动参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetJogPrm(short profile, ref TJogPrm pPrm);
/// <summary>
/// 读取 Jog 运动参数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pPrm">读取 Jog 模式指令运动参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetJogPrm(short profile, out TJogPrm pPrm);
#endregion
#region PT模式
/// <summary>
/// 设置指定轴为 PT 模式
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="mode">指定 FIFO 使用模式</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PrfPt(short profile, short mode);
/// <summary>
/// 设置 PT 模式循环执行的次数 动态模式下该指令无效
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="loop">指定 PT 模式循环执行的次数,如果需要无限循环,设置为 0 动态模式下该参数无效</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetPtLoop(short profile, int loop);
/// <summary>
/// 查询 PT 模式循环执行的次数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pLoop">查询 PT 模式循环已经执行完成的次数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPtLoop(short profile, out int pLoop);
/// <summary>
/// 查询 PT 指定 FIFO 的剩余空间
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pSpace">读取 PT 指定 FIFO 的剩余空间</param>
/// <param name="fifo">指定所要查询的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PtSpace(short profile, out short pSpace, short fifo);
/// <summary>
/// 向 PT 指定 FIFO 增加数据
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pos">段末位置,单位脉冲</param>
/// <param name="time">段末时间,单位毫秒</param>
/// <param name="type">数据段类型</param>
/// <param name="fifo">指定存放运动数据的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PtData(short profile, double pos, int time, short type, short fifo);
/// <summary>
/// 清除 PT 指定 FIFO 中的数据
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="fifo">指定所要清空的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PtClear(short profile, short fifo);
/// <summary>
/// 启动 PT 模式运动
/// </summary>
/// <param name="mask">按位指示需要启动 PT 运动的轴号</param>
/// <param name="option">按位指示所使用的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PtStart(int mask, int option);
/// <summary>
/// 设置 PT 运动模式的缓存区大小
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="memory">PT 运动缓存区大小标志:0:每个 PT 运动缓存区有 32 段空间。1:每个 PT 运动缓存区有 1024 段空间。</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetPtMemory(short profile, short memory);
/// <summary>
/// 读取 PT 运动模式的缓存区大小
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pMemory">读取 PT 运动缓存区大小标志</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetPtMemory(short profile, out short pMemory);
#endregion
#region 电子齿轮模式
/// <summary>
/// 设置指定轴为电子齿轮模式
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="dir">设置跟随方式 0 表示双向跟随,1 表示正向跟随,-1 表示负向跟随</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PrfGear(short profile, short dir);
/// <summary>
/// 设置跟随主轴
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="masterIndex">主轴索引</param>
/// <param name="masterType">主轴类型</param>
/// <param name="masterItem">轴类型,当 masterType=GEAR_MASTER_AXIS 时起作用</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetGearMaster(short profile, short masterIndex, short masterType, short masterItem);
/// <summary>
/// 读取跟随主轴
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pMasterIndex">主轴索引</param>
/// <param name="pMasterType">主轴类型</param>
/// <param name="pMasterItem">轴的输出位置值类型</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetGearMaster(short profile, out short pMasterIndex, out short pMasterType, out short pMasterItem);
/// <summary>
/// 设置电子齿轮比
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="masterEven">传动比,主轴位移</param>
/// <param name="slaveEven">传动比,从轴位移</param>
/// <param name="masterSlope">主轴离合区位移</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetGearRatio(short profile, int masterEven, int slaveEven, int masterSlope);
/// <summary>
/// 读取电子齿轮比
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pMasterEven">主轴位移</param>
/// <param name="pSlaveEven">从轴位移</param>
/// <param name="pMasterSlope">主轴离合区位移</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetGearRatio(short profile, out int pMasterEven, out int pSlaveEven, out int pMasterSlope);
/// <summary>
/// 启动电子齿轮
/// </summary>
/// <param name="mask">按位指示需要启动 Gear 运动的轴号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GearStart(int mask);
#endregion
#region Follow模式
/// <summary>
/// 设置指定轴为 Follow 模式
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="dir">设置跟随方式 0 表示双向跟随,1 表示正向跟随,-1 表示负向跟随</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PrfFollow(short profile, short dir);
/// <summary>
/// 设置跟随主轴
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="masterIndex">主轴索引</param>
/// <param name="masterType">主轴类型</param>
/// <param name="masterItem">轴类型,当 masterType=FOLLOW_MASTER_AXIS 时起作用</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetFollowMaster(short profile, short masterIndex, short masterType, short masterItem);
/// <summary>
/// 读取跟随主轴
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pMasterIndex">主轴索引</param>
/// <param name="pMasterType">主轴类型</param>
/// <param name="pMasterItem">合成轴类型
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetFollowMaster(short profile, out short pMasterIndex, out short pMasterType, out short pMasterItem);
/// <summary>
/// 设置循环次数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="loop">指定 Follow 模式循环执行的次数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetFollowLoop(short profile, int loop);
/// <summary>
/// 读取循环次数
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pLoop">读取 Follow 模式循环已经执行完成的次数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetFollowLoop(short profile, out int pLoop);
/// <summary>
/// 设置 Follow 模式启动跟随条件
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="followEvent">启动跟随条件</param>
/// <param name="masterDir">穿越启动时,主轴的运动方向 1 主轴正向运动,-1 主轴负向运动</param>
/// <param name="pos">穿越位置,当 event 为 FOLLOW_EVENT_PASS 时有效</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetFollowEvent(short profile, short followEvent, short masterDir, int pos);
/// <summary>
/// 读取 Follow 模式启动跟随条件
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pFollowEvent">启动跟随条件</param>
/// <param name="pMasterDir">主轴运动方向</param>
/// <param name="pPos">穿越位置,当 event 为 FOLLOW_EVENT_PASS 时有效</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetFollowEvent(short profile, out short pFollowEvent, out short pMasterDir, out int pPos);
/// <summary>
/// 查询 Follow 指定 FIFO 的剩余空间
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="pSpace">读取 FIFO 的剩余空间</param>
/// <param name="fifo">指定所要查询的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_FollowSpace(short profile, out short pSpace, short fifo);
/// <summary>
/// 向 Follow 指定 FIFO 增加数据
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="masterSegment">主轴位移</param>
/// <param name="slaveSegment">从轴位移</param>
/// <param name="type">数据段类型</param>
/// <param name="fifo">指定存放数据的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_FollowData(short profile, int masterSegment, double slaveSegment, short type, short fifo);
/// <summary>
/// 清除 Follow 指定 FIFO 中的数据
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="fifo">指定需要清除的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_FollowClear(short profile, short fifo);
/// <summary>
/// 启动 Follow 模式运动
/// </summary>
/// <param name="mask">按位指示需要启动 Follow 运动的轴号</param>
/// <param name="option">按位指示所使用的 FIFO,默认为 0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_FollowStart(int mask, int option);
/// <summary>
/// 切换 Follow 所使用的 FIFO
/// </summary>
/// <param name="mask">按位指示需要切换 Follow 工作 FIFO 的轴号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_FollowSwitch(int mask);
/// <summary>
/// 设置 Follow 运动模式的缓存区大小
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="memory">Follow 运动缓存区大小标志:</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetFollowMemory(short profile, short memory);
/// <summary>
/// 读取 Follow 运动模式的缓存区大小
/// </summary>
/// <param name="profile">规划轴号</param>
/// <param name="memory">读取 Follow 运动缓存区大小标志</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetFollowMemory(short profile, out short memory);
#endregion
#region 插补运动模式
/// <summary>
/// 设置坐标系参数,确立坐标系映射,建立坐标系
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pCrdPrm">设置坐标系的相关参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetCrdPrm(short crd, ref TCrdPrm pCrdPrm);
/// <summary>
/// 查询坐标系参数
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pCrdPrm">读取坐标系的相关参数</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCrdPrm(short crd, out TCrdPrm pCrdPrm);
/// <summary>
/// 向插补缓存区增加插补数据
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pCrdData">插补数据</param>
/// <param name="fifo">插补缓存区号,取值范围:[0,1],默认为:0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_CrdData(short crd, ref TCrdData pCrdData, short fifo);
/// <summary>
/// 查询插补缓存区剩余空间
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pSpace">读取插补缓存区中的剩余空间。</param>
/// <param name="fifo">插补缓存区号,取值范围:[0,1],默认为:0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_CrdSpace(short crd, ref int pSpace, short fifo);
/// <summary>
/// 清除插补缓存区内的插补数据
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="fifo">所要清除的插补缓存区号,取值范围:[0,1]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_CrdClear(short crd, short fifo);
/// <summary>
/// 启动插补运动
/// </summary>
/// <param name="mask">从 bit0~bit1 按位表示需要启动的坐标系</param>
/// <param name="option">从 bit0~bit1 按位表示坐标系需要启动的缓存区的编号</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_CrdStart(short mask, short option);
/// <summary>
/// 查询插补运动坐标系状态
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pRun">读取插补运动状态</param>
/// <param name="pSegment">读取当前 已经 完成的 插补段 数</param>
/// <param name="fifo">所要查询运动状态的 fifo 号,取值范围:[0,1],默认为:0</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_CrdStatus(short crd, ref short pRun, ref int pSegment, short fifo);
/// <summary>
/// 设置插补运动目标合成速度倍率
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="synVelRatio">设置的插补目标速度倍率,取值范围:(0,1],系统默认该值为:1。</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetOverride(short crd, double synVelRatio);
/// <summary>
/// 设置插补运动平滑停止、急停合成加速度
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="decSmoothStop">设置的坐标系合成平滑停止加速度,取值范围:(0,32767),单位:pulse/(ms* ms)。</param>
/// <param name="decAbruptStop">设置的坐标系合成急停加速度,取值范围:(0,32767),单位:pulse/(ms* ms)。</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetCrdStopDec(short crd, double decSmoothStop, double decAbruptStop);
/// <summary>
/// 查询插补运动平滑停止、急停合成加速度
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pDecSmoothStop">查询坐标系合成平滑停止加速度,单位:pulse/(ms*ms)。</param>
/// <param name="pDecAbruptStop">查询坐标系合成急停加速度,单位:pulse/(ms*ms)。</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCrdStopDec(short crd, ref double pDecSmoothStop, ref double pDecAbruptStop);
/// <summary>
/// 查询该坐标系的当前坐标位置值
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pPos">读取的坐标系的坐标值,单位:pulse。该参数应该为一个数组首元素的指针,数组的元素个数取决于该坐标系的维数。</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCrdPos(short crd, ref double pPos);
/// <summary>
/// 查询该坐标系的合成速度值
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="pSynVel">读取的坐标系的合成速度值,单位:pulse/ms。</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetCrdVel(short crd, ref double pSynVel);
/// <summary>
/// 初始化插补前瞻缓存区
/// </summary>
/// <param name="crd">坐标系号,取值范围:[1,2]</param>
/// <param name="fifo">插补缓存区编号,取值范围:[0,1]</param>
/// <param name="T">拐弯时间,单位:ms</param>
/// <param name="accMax">最大加速度,单位:pulse/(ms*ms)</param>
/// <param name="n">前瞻缓存区大小,取值范围:[0,32767)</param>
/// <param name="pLookAheadBuf">前瞻缓存区内存区指针</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_InitLookAhead(short crd, short fifo, double T, double accMax, short n, ref TCrdData pLookAheadBuf);
#endregion
#region PVT模式
#endregion
#region 运动程序
/// <summary>
/// 下载运动程序到运动控制器
/// </summary>
/// <param name="pFileName">下载到运动控制器的运动程序文件名</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Download(string pFileName);
/// <summary>
/// 读取运动程序中函数的标识
/// </summary>
/// <param name="pFunName">运动程序函数名称</param>
/// <param name="pFunId">根据运动程序函数名称查询函数标识</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetFunId(string pFunName, out short pFunId);
/// <summary>
/// 绑定线程、函数、数据页
/// </summary>
/// <param name="thread">线程编号,取值范围[0,31]。</param>
/// <param name="funId">函数标识,可以调用 GT_GetFunId 查询</param>
/// <param name="page">数据页编号,取值范围[0,31]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_Bind(short thread, short funId, short page);
/// <summary>
/// 启动线程
/// </summary>
/// <param name="thread">线程编号,取值范围[0,31]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_RunThread(short thread);
/// <summary>
/// 停止正在运行的线程
/// </summary>
/// <param name="thread">线程编号,取值范围[0,31]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_StopThread(short thread);
/// <summary>
/// 暂停正在运行的线程
/// </summary>
/// <param name="thread">线程编号,取值范围[0,31]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_PauseThread(short thread);
/// <summary>
/// 读取线程的状态
/// </summary>
/// <param name="thread">线程编号,取值范围[0,31]</param>
/// <param name="pThreadSts">读取线程状态</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetThreadSts(short thread, out TThreadSts pThreadSts);
/// <summary>
/// 读取运动程序中变量的标识
/// </summary>
/// <param name="pFunName">全局变量输入 NULL局部变量所在函数的名称</param>
/// <param name="pVarName">运动程序变量名称</param>
/// <param name="pVarInfo">根据运动程序函数名称和变量名称查询变量标识</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetVarId(string pFunName, string pVarName, out TVarInfo pVarInfo);
/// <summary>
/// 设置运动程序中变量的值
/// </summary>
/// <param name="page">数据页编号</param>
/// <param name="pVarInfo">需要访问的变量标识</param>
/// <param name="pValue">需要写入的变量值</param>
/// <param name="count">需要写入的变量值的数量,取值范围[1,8]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_SetVarValue(short page, ref TVarInfo pVarInfo, ref double pValue, short count);
/// <summary>
/// 读取运动程序中变量的值
/// </summary>
/// <param name="page">数据页编号</param>
/// <param name="pVarInfo">需要访问的变量标识</param>
/// <param name="pValue">需要读取的变量值</param>
/// <param name="count">需要读取的变量值的数量,取值范围[1,8]</param>
/// <returns></returns>
[DllImport("gts.dll")]
public static extern short GT_GetVarValue(short page, ref TVarInfo pVarInfo, out double pValue, short count);
#endregion
[DllImport("gts.dll")]
public static extern short GT_GetHandle(short cardNum, out uint pHandle);
[DllImport("gts.dll")]
public static extern short GT_GetDiReverseCount(short diType, short diIndex, out uint reverseCount, short count);
[DllImport("gts.dll")]
public static extern short GT_SetDiReverseCount(short diType, short diIndex, ref uint reverseCount, short count);
}
}

浙公网安备 33010602011771号