我要用winform,C#语言来控制一台频普仪器
好象是这个仪器提供一些接口函数?(我以前做网页的)现在我看别人用VB来控制那个频普仪器的代码 ,是调用一个DLL文件。
我想知道用C#如何实现呀??
这是他VB的代码
Declare Function ibwrt Lib "gpib.dll" (ByVal nAddr As Long, ByVal str As String, ByVal ustrlen As Long) As Long调用----VB代码(设定仪器的频率)
Private Sub Command58_Click()
On Error GoTo ErrHandler
If Text11.Text = "" Then
MsgBox "先输入数值后选择相应功能按钮!"
Exit Sub
End If
Test_Frequency = Val(Text10.Text) '测试频率
flag = ibwrt(GPIBIP, "CF " & Trim(Text11.Text) & "MHz", Len("CF " & Trim(Text11.Text) & "MHz"))
Exit Sub
ErrHandler:
MsgBox Err.DescriptionEnd Sub
就是那个 gpib.dll文件。。
请问在C#中如何实现啊?我直接用那个gpib.dll文件?还是重写下gpib.dll文件?
一头雾水!以前没操作过硬件哦。
好象是这个仪器提供一些接口函数?(我以前做网页的)现在我看别人用VB来控制那个频普仪器的代码 ,是调用一个DLL文件。
我想知道用C#如何实现呀??
这是他VB的代码
Declare Function ibwrt Lib "gpib.dll" (ByVal nAddr As Long, ByVal str As String, ByVal ustrlen As Long) As Long调用----VB代码(设定仪器的频率)
Private Sub Command58_Click()
On Error GoTo ErrHandler
If Text11.Text = "" Then
MsgBox "先输入数值后选择相应功能按钮!"
Exit Sub
End If
Test_Frequency = Val(Text10.Text) '测试频率
flag = ibwrt(GPIBIP, "CF " & Trim(Text11.Text) & "MHz", Len("CF " & Trim(Text11.Text) & "MHz"))
Exit Sub
ErrHandler:
MsgBox Err.DescriptionEnd Sub
就是那个 gpib.dll文件。。
请问在C#中如何实现啊?我直接用那个gpib.dll文件?还是重写下gpib.dll文件?
一头雾水!以前没操作过硬件哦。
[DllImport("gpib.dll", EntryPoint = "ibwrt")]
static extern long ibwrt(long nAddr, StringBuilder str, long ustrlen);
private void button5_Click(object sender, EventArgs e)
{
long flag;
long GPIBIP = 1234;
StringBuilder str = new StringBuilder(string.Format("CF {0}MHz", textBox1.Text.Trim()));
flag = ibwrt(GPIBIP, str, str.Length);
}
static extern long ibwrt(long nAddr, string str, long ustrlen);
private void button5_Click(object sender, EventArgs e)
{
long flag;
long GPIBIP = 1234;
StringBuilder str = new StringBuilder(string.Format("CF {0}MHz", textBox1.Text.Trim()));
flag = ibwrt(GPIBIP, str.ToString(), str.Length);
}
2、 StringBuilder str 换成 string str 可以吗?? 为什么要用StringBuilder
这个是什么错误啊!!!!我按照上面的写的
原来是因为WinAPI的long类型是32位的,而C#的long是64位的,这就导致堆栈不对称,引发错误.
1、为什么要用 extern 这个关键字?
2、 StringBuilder str 换成 string str 可以吗?? 为什么要用StringBuilder
这两个问题请求解答