1)dll中的GetInfo函数定义如下:
USHORT GetInfo(char *Manufacturer,char *Producer,char *SerialNumber,char *BufLength);
功能:读取找到的设备信息
参数:char *Manufacturer 厂商字符串,一般为: Rational
char *Producer 产品字符串,一般为: USB302
char *SerialNumber 产品序列号,一般为:XXXX-XXXX 即 “硬件版本号”-“软件版本号”
char *BufLength 设备缓冲区长度
2)C++中调用格式如下:
char manu[256],product[256],sernum[256],buflen[8],Reserved[10];
USHORT Connect=ConnectUSB303();
if(Connect==0)
{
GetInfo(manu,product,sernum,buflen);
EditManu.SetWindowText(manu);
EditProduct.SetWindowText(product);
EditSN.SetWindowText(sernum);
EditBufLen.SetWindowText(buflen);
问题:C#中如何定义及调用这个 GetInfo函数,我初步写了下编译通过,但不能调用
[DllImport("RationalScale.dll",EntryPoint="GetInfo")]
public static extern ushort GetInfo(string Manufacturer, string Producer, string SerialNumber, string BufLength);?怎么定义?
string manu = "1", product = "", sernum = "", buflen = "";?怎么定义?
ushort us=ConnectUSB302();
GetInfo( manu, product, sernum, buflen);
textBox2.Text = manu;
------解决思路----------------------
上面忘记写返回了,现在加上
如果直接调用1中的函数的话,他返回的是一个值,你就定义一个整型变量来接收他:int result = GetInfo(‘参数1’,‘参数2’,‘参数3’,‘参数4’);
如果你是要定义一个方法,然后来调用这个方法的话,就是:
public static ushort GetInfo(string Manufacturer, string Producer, string SerialNumber, string BufLength) //此方法返回一个值
{
ushort result = 0;
...代码
return result ;
}
然后再你要调用的方法下面:
string Manufacturer = null, Producer = null, SerialNumber = null, BufLength = null; //定义变量来当参数
int result = GetInfo(Manufacturer, Producer, SerialNumber, BufLength); //定义整型来接收方法返回的值。
------解决思路----------------------
..你真不懂C#? 上面改参数类型,也边的引用,当然也要跟着改呀,汗。
你直接string 传给StringBuilder当然编译不通过。。