NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

labview调用动态链接库时,界面变得非常慢,怎么解决?

各位大牛们,小弟使用labview的cln模块,调用vs2005生成的dll文件,在wince6.0的系统上运行,运行结果倒是能显示出来,但是,界面几乎没反应,要等好几分钟才能显示出结果。这个问题怎么解决呢?

 

vs2005的dll代码如下:

 

// SmartADC.cpp : Defines the entry point for the DLL application.

//

#include "stdafx.h"

#include  <windows.h>

#include  <commctrl.h>

#include  <winioctl.h>

 

// constants define

#define IOCTL_ADC_START \ CTL_CODE(FILE_DEVICE_UNKNOWN, 60, METHOD_BUFFERED, FILE_ANY_ACCESS) //60??? 

 

 //全局变量

HANDLE hAdc;

 

extern "C" __declspec(dllexport) int GetDeviceValue(unsigned int *output)

{

 

  DWORD dwBytesRead;

  DWORD convalue;

 

  hAdc = CreateFile(TEXT("ADC1:"),GENERIC_READ,0,NULL,OPEN_EXISTING,0,NULL);     //打开wince的ADC驱动文件

 

  DeviceIoControl (hAdc, IOCTL_ADC_START, NULL, 0, NULL, 0, NULL, NULL);      //进行硬件交互

 

  //while(1)

  //{

    //MessageBox(NULL, _T("2"), _T("2"), MB_OK);

    //WaitForSingleObject(hThread, INFINITE);

 

    ReadFile(hAdc, &convalue, sizeof(DWORD), &dwBytesRead, NULL);     //读取ADC数据寄存器的值

 

    *output = convalue; //数据能正确读取,也能在控件上显示出来,但是结果要过好长时间才能显示在控件上,并且labview的界面超卡

  //}

 

    return TRUE;

}

 

BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved )

{

    return TRUE;

}

 

函数功能是,将开发板上的AD采集结果convalue,显示在labview的数值控件上。 小弟在此先谢谢了,各位大牛帮帮小弟吧!

0 项奖励
1 条消息(共 5 条)
3,128 次查看

Use the "Producer/consumer" design.

Put the CIN in the consumer loop.

 

George Zou
0 项奖励
2 条消息(共 5 条)
3,116 次查看

谢谢你的回复,小弟愚钝,刚接触labview不久,没大看明白你的意思,能再详细讲述一下么?

0 项奖励
3 条消息(共 5 条)
3,114 次查看
labview调用vs2005编写的dll文件时,是不是不执行DllMain函数呀?
BOOL APIENTRY DllMain( HANDLE hModule,
       DWORD  ul_reason_for_call,
       LPVOID lpReserved
       )
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
    MessageBox(NULL, _T("0"), _T("0"), MB_OK);
  break;
case DLL_PROCESS_DETACH:
  break;
case DLL_THREAD_ATTACH:
  break;
case DLL_THREAD_DETACH:
  break;
}
return TRUE;
}
如果DllMain函数如上面所写,并且假设labview在调用dll时是执行DllMain函数的,那么,在执行过程中,会弹出标题和内容都为0的消息对话框啊!但是,我这么写,没有弹出对话框啊。而是,labview直接执行了代码中,定义为__declspec(dllexport)的那个函数。
这又是怎么回事呢?
0 项奖励
4 条消息(共 5 条)
3,111 次查看

Take a look here:

https://decibel.ni.com/content/docs/DOC-14516

 

George

 

George Zou
0 项奖励
5 条消息(共 5 条)
3,105 次查看