新手求助,这个函数怎样才能运行?
有一外部函数,如下定义:
int db_write_ex6 (unsigned short BlkNr, unsigned char DatType, unsigned
short StartNr, unsigned long * pAmount, unsigned long BufLen, unsigned
char * pWriteBuffer);
已经转换成C#封装,且可以正常运行。
//以下测试db_write_ex6
UInt16 BlkNr = 4;//data block号
Prodave6.DatType DType = Prodave6.DatType.BYPE ;//要读取的数据类型
UInt16 StartNr = 0;//起始地址号
UInt32 pAmount = 10;//需要读取类型的数量
UInt32 BufLen = 100;//缓冲区长度(字节为单位)
//参数:data block号、要写入的数据类型、起始地址号、需要写入类型的数量、缓冲区长度(字节为单位)、缓冲区
byte[] pWriteBuffer = new byte[15];
for (int i = 0; i < pWriteBuffer.Length; i++)
{
pWriteBuffer[i] = (byte)(i+1);
}
RetValue = Prodave6.db_write_ex6(BlkNr, DType, StartNr, ref pAmount, BufLen, pWriteBuffer);
以上写入BYTE值,运行正常。可我想写入实数值(DWORD),改Prodave6.DatType DType = Prodave6.DatType.WORD ;//要读取的数据类型
总也不成功。怎样才能写入实数值呢?只写一个数据也行呀。修改循环里面的pWriteBuffer[i] = (byte)(2.5)后,数据自动转成整型,2.5变成2了。给pWriteBuffer=2.5,运行函数出错。pWriteBuffer是BYTE型,晕呀,大家看看怎么办呢?
以下是运行结果:
变量 类型 初始值 当前值
var1 DWORD DW#16#0 DW#16#01020304
var2 WORD W#16#0 W#16#0506
v3 REAL 0.000000 1.023416e-034
v4 BYTE B#16#0 B#16#0B
v5 BYTE B#16#0 B#16#0C