using System; using System.Runtime.InteropServices; using System.Text; namespace VisualStudioCsharp_StdApp { public class HartDLL { //Handles public const int INVALID_DRV_HANDLE = -1; public const int INVALID_SRV_HANDLE = -1; //Boolean public const byte T_TRUE = 1; public const byte T_FALSE = 0; //Baud Rates public const uint CBR_1200 = 1200; public const uint CBR_9600 = 9600; public const uint CBR_19200 = 19200; public const uint CBR_38400 = 38400; //Service Completion Report Codes public const byte SRV_EMPTY = 0; public const byte SRV_NO_DEV_RESP = 1; public const byte SRV_COMM_ERR = 2; public const byte SRV_INVALID_HANDLE = 3; public const byte SRV_IN_PROGRESS = 4; public const byte SRV_SUCCESSFUL = 5; //Quality of Service public const byte DRV_NO_WAIT = 0; public const byte DRV_WAIT = 1; //Endians public const byte MSB_FIRST = 0; public const byte LSB_FIRST = 1; [StructLayout(LayoutKind.Sequential)] public struct T_strConfiguration { public int lBaudrate; public byte byNumPreambles; public byte byNumRetries; }; [StructLayout(LayoutKind.Sequential)] public struct T_strConnection { public byte byManuId; public byte byDevId; public byte byNumPreambles; public byte byCmdRevNum; public byte bySpecRevCode; public byte bySwRev; public byte byHwRev; public byte byHartFlags; public byte byError; public byte byResp_1; public byte byResp_2; public byte byUsedRetries; public byte bDeviceInBurstMode; public byte byReserved1; public byte byReserved2; public byte byReserved3; public byte byUniqueId_0; public byte byUniqueId_1; public byte byUniqueId_2; public byte byUniqueId_3; public byte byUniqueId_4; }; [StructLayout(LayoutKind.Sequential)] public struct T_strConfirmation { public byte byCmd; public byte byResp_1; public byte byResp_2; public byte byError; public byte byUsedRetries; public byte bDeviceBursting; public short sDuration; public int uiAppKey; public byte byReserved1; public byte byReserved2; public byte byReserved3; public byte byDataLen; public byte zData_00; public byte zData_01; public byte zData_02; public byte zData_03; public byte zData_04; public byte zData_05; public byte zData_06; public byte zData_07; public byte zData_08; public byte zData_09; public byte zData_10; public byte zData_11; public byte zData_12; public byte zData_13; public byte zData_14; public byte zData_15; public byte zData_16; public byte zData_17; public byte zData_18; public byte zData_19; public byte zData_20; public byte zData_21; public byte zData_22; public byte zData_23; public byte zData_24; public byte zData_25; public byte zData_26; public byte zData_27; public byte zData_28; public byte zData_29; public byte zData_30; public byte zData_31; public byte zData_32; public byte zData_33; public byte zData_34; public byte zData_35; public byte zData_36; public byte zData_37; public byte zData_38; public byte zData_39; public byte zData_40; public byte zData_41; public byte zData_42; public byte zData_43; public byte zData_44; public byte zData_45; public byte zData_46; public byte zData_47; public byte zData_48; public byte zData_49; public byte zData_50; public byte zData_51; public byte zData_52; public byte zData_53; public byte zData_54; public byte zData_55; public byte zData_56; public byte zData_57; public byte zData_58; public byte zData_59; public byte zData_60; public byte zData_61; public byte zData_62; public byte zData_63; }; [StructLayout(LayoutKind.Sequential)] public struct T_strDataBuffer { public byte byDataLen; public byte zData_00; public byte zData_01; public byte zData_02; public byte zData_03; public byte zData_04; public byte zData_05; public byte zData_06; public byte zData_07; public byte zData_08; public byte zData_09; public byte zData_10; public byte zData_11; public byte zData_12; public byte zData_13; public byte zData_14; public byte zData_15; public byte zData_16; public byte zData_17; public byte zData_18; public byte zData_19; public byte zData_20; public byte zData_21; public byte zData_22; public byte zData_23; public byte zData_24; public byte zData_25; public byte zData_26; public byte zData_27; public byte zData_28; public byte zData_29; public byte zData_30; public byte zData_31; public byte zData_32; public byte zData_33; public byte zData_34; public byte zData_35; public byte zData_36; public byte zData_37; public byte zData_38; public byte zData_39; public byte zData_40; public byte zData_41; public byte zData_42; public byte zData_43; public byte zData_44; public byte zData_45; public byte zData_46; public byte zData_47; public byte zData_48; public byte zData_49; public byte zData_50; public byte zData_51; public byte zData_52; public byte zData_53; public byte zData_54; public byte zData_55; public byte zData_56; public byte zData_57; public byte zData_58; public byte zData_59; public byte zData_60; public byte zData_61; public byte zData_62; public byte zData_63; }; [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern int BHDrv_OpenChannel(byte byComPort); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_CloseChannel(int hChannel); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_GetConfiguration(int hChannel, ref T_strConfiguration pstrConfig); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_SetConfiguration(int hChannel, ref T_strConfiguration pstrConfig); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern int BHDrv_ConnectByAddr(int hChannel, byte byAddr, byte byQOS, byte byNumRetries); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_FetchConnection(int hService, ref T_strConnection pstrConnData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern int BHDrv_DoCommand(int hChannel, byte byCmd, byte byQOS, ref byte pbyData, byte byLen, uint lAppKey, ref byte byUniqueID); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern byte BHDrv_IsServiceCompleted(int hService); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_FetchConfirmation(int hService, ref T_strConfirmation pstrConfData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutInt8(byte byData, byte byOffset, ref byte pbyData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutInt16(short iData, byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutInt24(uint uiData, byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutInt32(uint uiData, byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutFloat(float fData, byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutPackedASCII(StringBuilder sb, byte byLen, byte byOffset, ref byte pbyData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PutOctets(ref byte pbySrcData, byte byLen, byte byOffset, ref byte pbyDstData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern byte BHDrv_PickInt8(byte byOffset, ref byte pbyData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern ushort BHDrv_PickInt16(byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern uint BHDrv_PickInt24(byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern uint BHDrv_PickInt32(byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern float BHDrv_PickFloat(byte byOffset, ref byte pbyData, byte byEndian); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PickPackedASCII(StringBuilder sb, byte byStrLen, byte byOffset, ref byte pbyData); [DllImport("BaHartDrv40_Trial.dll", CharSet = CharSet.Ansi)] public static extern void BHDrv_PickOctets(ref byte pbyDstData, byte byNumOctets, byte byOffset, ref byte pbySrcData); public static string CommaToPoint(string sIn) { sIn.Replace(",","."); return sIn; } } public class BaHartDrvInterface { public BaHartDrvInterface() { } } }