接口实现(急!!!)
我有厂家提供的一个DLL,有接口如下:
int Real_Query(HANDLE icdev,REALTIMEDATA &Query_Data)
typedef struct _RealTimeData
{
UCHAR SysStatus; //系统硬件状态
UCHAR OutPutStatus;//继电器输出状态
UCHAR InputStatus; //输入口状态
short Rec_Number;//记录总数
long user_snr;//卡流水号
char datetime[13];//打卡日期
UCHAR node;//打卡结点或读头号
}REALTIMEDATA;
功能:实时查询下位结点的打卡情况。
参数: icdev:(in)串口设备句柄
Query_Data:(out)REALTIMEDATA结构类型,返回实时数据
返回: 成功返回0
我如何才能在C#中实现啦?关键是结构体类型。
------解决方案--------------------typedef struct _RealTimeData
{
UCHAR SysStatus; //系统硬件状态
UCHAR OutPutStatus;//继电器输出状态
UCHAR InputStatus; //输入口状态
short Rec_Number;//记录总数
long user_snr;//卡流水号
char datetime[13];//打卡日期
UCHAR node;//打卡结点或读头号
}REALTIMEDATA;
对应
public struct RealTimeDate
{
public byte SysStatus; //系统硬件状态
public byte OutPutStatus;//继电器输出状态
public byte InputStatus; //输入口状态
public Int16Rec_Number;//记录总数
public longuser_snr;//卡流水号
public string datetime;//打卡日期
public byte node;//打卡结点或读头号
}
------解决方案--------------------我搜了一下看到下面这段文字,希望对你有用:
为了便于理解,我举个实例来展开论述。我们首先定义一个描述具体事物的结构体—— "611311班 "。
struct stuclass{
public string classname;
public object classmumber;
public int classnumber;
}
到目前为止,这个声明很像一个类。但是,下面你将看到在使用结构方面的许多限制。
客户不必对结构进行实例化(通过new关键字)。这是因为,作为一种值类型,结构一旦被声明,就被分配。
但是正是有了这种用法,所以我们如果不亲自对结构的成员进行显式的初始化(使用new关键字),那么字段就不会被初始化。如下面这段代码,编译将会出错:
stuclass s611311;
console.writeline(s611311.classname);
以下的代码将会纠正这个错误。注意,因为s611311.classname 是一个值类型,所以初始化模认为 0 ;
stuclass s611311 = new stuclass();
console.writeline(s611311.classname);