C#调用LabView 数据采集VI生成的DLL

marks_tan 2014-03-09 01:17:14
各位大神,本人最近使用C#开发一个项目使用NI-DQA PCI-6229采集电压与音频信号.
NI公司有提供了相应的Labview 生成的DLL,静态调用后,运行里面的函数,出现LabView对话加载框,一直加载,程式卡死,将该DLL在 C++Builder上调用一切正常.
大神们帮忙看看哪儿出了问题.
Labview 生成的MeasureAudio.dll,MeasureAudio.h,
MeasureAudio.h 内容如下:
/*
#include "extcode.h"
#pragma pack(push)
#pragma pack(1)

#ifdef __cplusplus
extern "C" {
#endif

void __cdecl Measuresound(int32_t ChannelToProcess,
int32_t samplesPerChannel, char Chanel[], double *THD, double *RMSValue,
double *detectedFrequency, double *detectedAmplitude);

long __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);

#ifdef __cplusplus
} // extern "C"
#endif

#pragma pack(pop)*/


C#中调用;
[DllImport("MeasureAudio.dll", EntryPoint = "Measuresound", CallingConvention = CallingConvention.Cdecl)]
static extern void Measuresound(int ChannelToProcess, int samplesPerChannel, char[] Chanel, out double THD, out double RMSValue, out double detectedFrequency, out double detectedAmplitude);


//使用button调用该函数Measuresound时出现Labview运行框,程式就一直卡死了.
private void button4_Click(object sender, EventArgs e)
{
double Thd, RMS, Freq, Amp;
try
{
int process = Convert.ToInt32(comboBox1.Text);
char [] Chanel=comboBox2.Text.ToCharArray();

Measuresound(process,1000,Chanel, out Thd, out RMS, out Freq, out Amp);
textBox5.AppendText(Thd.ToString() + "\r\n" + RMS.ToString() + "\r\n" + Freq.ToString() + "\r\n" + Amp.ToString() + "\r\n");
}
catch (Exception ex)
{ MessageBox.Show(ex.Message);}


}
...全文
1263 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_34806795 2016-07-03
  • 打赏
  • 举报
回复
我也在搞这个, 发现类似的问题,
wangzhenzhen11 2014-07-30
  • 打赏
  • 举报
回复
NI公司有提供的相应的Labview 生成的DLL去哪里找
bdmh 2014-03-09
  • 打赏
  • 举报
回复
提醒一下,参数的out修饰,这个是不需要初始化的,如果厂家dll中处理不是作为可空参数处理的话,就可能会出问题,所以你换做 ref 试试
marks_tan 2014-03-09
  • 打赏
  • 举报
回复
试了,怎么弄都不行,后来将Labview生成.NET DLL,通过引用调Measuresound函数,也是一样的现象. 后来在网上找寻动态调用DLL方法(LoadLibrary,GetProcAddress)相关资料,可是在函数调用那块好些复杂,还是没有搞定.唉郁闷。。。。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧