using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace CommonLib.DAQ
{
public class VK70xNMC_Wrapper
{
///
/// DLL加载路径
///
private const string DLLName = "VK70xNMC_DAQ2.dll";
//========================================================
// External variables
//=========================================================
//------------------------------------------- ADC Sampling control
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Initialize(int mci, double refvol, int bitmode, int sr, int volrg15, int volrg26, int volrg37, int volrg48);
///
/// 初始化已连接的采集卡参数(适用于 VK7
///
/// 已连接到服务器上的采集卡序
/// 选择采集卡模式
/// 采样精度
/// 采样率
/// 电压输入范围
/// 电压输入范围
/// 电压输入范围
/// 电压输入范围
///
[DllImport(DLLName, EntryPoint = "VK70xNMC_Initialize", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Initialize(int mci, double refvol, int bitmode, int sr, int volrg15, int volrg26, int volrg37, int volrg48);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Initialize_2(int mci, double refvol, int bitmode, int sr, int npoints, int timeinval, int *volrg);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Initialize_2", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Initialize_2(int mci, double refvol, int bitmode, int sr, int npoints, int timeinval, int[] volrg);
[DllImport(DLLName, EntryPoint = "VK70xNMC_StartSampling", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_StartSampling(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_StartSampling_NPoints", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_StartSampling_NPoints(int mci, int Npointsnums);
[DllImport(DLLName, EntryPoint = "VK70xNMC_StopSampling", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_StopSampling(int mci);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Set_SystemMode(int mci, int modelval,int samplemethod,int sdfilefmt);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Set_SystemMode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Set_SystemMode(int mci, int modelval, int samplemethod, int sdfilefmt);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Set_AdditionalFeature(int mci, int funcNo, int para1, double para2);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Set_AdditionalFeature", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Set_AdditionalFeature(int mci, int funcNo, int para1, double para2);
// VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Set_DeviceDefaultParameter(int mci, char *wrmodel, char *wrsn, int *para);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Set_DeviceDefaultParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Set_DeviceDefaultParameter(int mci, byte[] wrmodel, byte[] wrsn, int[] para);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Set_eNetParameter(int mci, char *para, int len);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Set_eNetParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Set_eNetParameter(int mci, byte[] para, int len);
// VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_ADCConfigParameter(int mci, int *sr, int *npoints, int *timeintervals, int *bitmode, int *para, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_ADCConfigParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_ADCConfigParameter(int mci, ref int sr, ref int npoints, ref int timeintervals, ref int bitmode, int[] para, int timeout);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_SystemMode(int mci, int *sysmode, int *samplecmd, int *sdfilefmt, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_SystemMode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_SystemMode(int mci, ref int sysmode, ref int samplecmd, ref int sdfilefmt, int timeout);
// VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_DeviceDefaultParameter(int mci, char *rdmodol, char *rdswver, char *rdhdver, char *rdsn, int *para, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_DeviceDefaultParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_DeviceDefaultParameter(int mci, byte[] rdmodol, byte[] rdswver, byte[] rdhdver, byte[] rdsn, int[] para, int timeout);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_eNetParameter(int mci, char *tvalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_eNetParameter", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_eNetParameter(int mci, byte[] tvalue, int timeout);
//-------------------------------------------------byt
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetVersionLot", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern char[] VK70xNMC_GetVersionLot();
//------------------------------------------ ADC Sampling Data ouppout
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetOneChannel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetOneChannel(int mci, int CHNum, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetFourChannel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetFourChannel(int mci,double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
//public static extern int VK70xNMC_GetFourChannel(int mci,ref double adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetAllChannel", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetAllChannel(int mci, double[] adcbuffer, int rsamplenum); // for VK702N
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetOneChannel_WithIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetOneChannel_WithIOStatus(int mci, int CHNum, double[] adcbuffer, int rsamplenum, int ioenable);// for VK701N,VK701S,VK702N
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetFourChannel_WithIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetFourChannel_WithIOStatus(int mci, double[] adcbuffer, int rsamplenum, int ioenable);// for VK701N,VK701S,VK702N
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetAllChannel_WithIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetAllChannel_WithIOStatus(int mci, double[] adcbuffer, int rsamplenum, int ioenable); // for VK702N
//-------------------------
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetFixedFourChannel_CH1CH2_IO2IO3", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetFixedFourChannel_CH1CH2_IO2IO3(int mci, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetFixedFourChannel_CH3CH4_IO2IO3", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetFixedFourChannel_CH3CH4_IO2IO3(int mci, double[] adcbuffer, int rsamplenum);// for VK701N,VK701S,VK702N
//------------
[DllImport(DLLName, EntryPoint = "VK70xNMC_GetIOStatus", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_GetIOStatus(int mci, int[] iostatus);
//===========================================================
// output
//==========================================================
//------------------------------------------ IO funtion setup
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_AllIOS_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_AllIOS_Blocking(int mci, ref int iobuffer, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_IO1_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_IO1_Blocking(int mci, ref int iovalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_IO2_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_IO2_Blocking(int mci, ref int iovalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_IO3_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_IO3_Blocking(int mci, ref int iovalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_IO4_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_IO4_Blocking(int mci, ref int iovalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_PWM_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_PWM_Blocking(int mci, ref double dutyval, ref int freqval, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_DAC_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_DAC_Blocking(int mci, ref int dacvalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_Counter_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_Counter_Blocking(int mci, ref int countervalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_Temperature_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_Temperature_Blocking(int mci, ref double tempvalue, int timeout);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_Freq_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_Freq_Blocking(int mci, ref int freqvalue, int timeout);
//[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_ExTemperatureHumidity_Blocking", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
//public static extern int VK70xNMC_Get_ExTemperatureHumidity_Blocking(int mci, ref double tempvalue, ref double humidity, int timeout);
//=========================================================
// sd card
//=========================================================
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Set_SaveFileDeafultPath(int tflag, const char *defaultdir);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Set_SaveFileDeafultPath", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Set_SaveFileDeafultPath(int tflag, char[] defaultdir);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_SDFileRuningInformation(int mci, int *para);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_SDFileRuningInformation", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_SDFileRuningInformation(int mci, int[] para);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Enter_SDFileSystem(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Enter_SDFileSystem", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Enter_SDFileSystem(int mci);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Exit_SDFileSystem(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Exit_SDFileSystem", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Exit_SDFileSystem(int mci);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_SDFileDIR(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_SDFileDIR", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_SDFileDIR(int mci);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_OneSDFile(int mci, int fileindex);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_OneSDFile", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_OneSDFile(int mci, int fileindex);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Get_MultiSDFiles(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_MultiSDFiles", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_MultiSDFiles(int mci);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Delete_OneSDFile(int mci, int fileindex);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Delete_OneSDFile", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Delete_OneSDFile(int mci, int fileindex);
//VK70xnMCDLL_fmt int Def_Function_OUTfmt VK70xNMC_Delete_MultiSDFiles(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Delete_MultiSDFiles", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Delete_MultiSDFiles(int mci);
//=========================================================
// Server
//=========================================================
//------------------------------------------ TCP/IP Server
[DllImport(DLLName, EntryPoint = "Server_TCPClose", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_TCPClose(int portnumber);
[DllImport(DLLName, EntryPoint = "Server_TCPOpen", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_TCPOpen(int portnumber);
[DllImport(DLLName, EntryPoint = "Server_Get_ServerPort", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_Get_ServerPort(ref int iport);
[DllImport(DLLName, EntryPoint = "Server_Bind_ConnectedClient", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_Bind_ConnectedClient(int tflag);
//---------------------------------------- device information
[DllImport(DLLName, EntryPoint = "Server_Get_ConnectedClientNumbers", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_Get_ConnectedClientNumbers(ref int cnum);
[DllImport(DLLName, EntryPoint = "Server_Get_ConnectedClientHandle", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_Get_ConnectedClientHandle(int mci, ref int ihadble, Byte[] ipadr);
//public static extern int Server_Get_ConnectedClientHandle(int mci, ref int ihadble, System.IntPtr ipadr);
[DllImport(DLLName, EntryPoint = "Server_Get_RxTotoalBytes", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Server_Get_RxTotoalBytes(ref int totalbytesnum, int clrflag);
//------------------------------------------- facotry and update
[DllImport(DLLName, EntryPoint = "VK702NHMC_Set_DeviceEnterUpgradeMode", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK702NHMC_Set_DeviceEnterUpgradeMode(int mci);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Get_ConvertBin2Text_Progress", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Get_ConvertBin2Text_Progress(ref int precent, ref int tstatus);
[DllImport(DLLName, EntryPoint = "VK70xNMC_Start_ConvertBin2Text", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int VK70xNMC_Start_ConvertBin2Text(char[] filename);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
static String ByteToStr(Byte[] bt, Encoding encoding)
{
return encoding.GetString(bt);
}
static string ToHexStrFromByte(byte[] byteDatas)
{
StringBuilder builder = new StringBuilder();
for (int i = 0; i < byteDatas.Length; i++)
{
builder.Append(string.Format("0x{0:X2},", byteDatas[i]));
}
return builder.ToString().Trim();
}
static bool check_hex(byte[] num1, byte[] num2)
{
if (num1.Length != num2.Length)
return false;
for (int i = 0; i < num1.Length; i++)
{
if (num1[i] != num2[i])
return false;
}
return true;
}
static byte[] recvBuf = new byte[1032];
}
}