|
NON-FATAL RUN-TIME ERROR: "MBX.c", line 62, col 5, thread id 0x000005B0: Library function error (return value == -13 [0xfffffff3]). Invalid control ID
#include "mbaxp.h"
#include <ansi_c.h>
#include <cvirte.h>
#include <userint.h>
#include "MBX.h"
static CAObjHandle objecthandle;
static int panelHandle;
static VBOOL Bok;
static short int Error;
static short int rhandle;
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1; /* out of memory */
if ((panelHandle = LoadPanel (0, "MBX.uir", PANEL)) < 0)
return -1;
GetObjHandleFromActiveXCtrl(panelHandle,PANEL_MBAXP,&objecthandle);
MBAXPLib__DMbaxpSetConnection (objecthandle, NULL, MBAXPLibConst_Port1);
MBAXPLib__DMbaxpSetBaudRate (objecthandle, NULL, MBAXPLibConst_B9600);
MBAXPLib__DMbaxpSetDataBits (objecthandle, NULL, MBAXPLibConst_Eight);
MBAXPLib__DMbaxpSetParity (objecthandle, NULL, MBAXPLibConst_NONE);
MBAXPLib__DMbaxpSetStopBits (objecthandle, NULL, MBAXPLibConst_One);
MBAXPLib__DMbaxpSetProtocolMode (objecthandle, NULL, MBAXPLibConst_RTU);
MBAXPLib__DMbaxpSetTimeout (objecthandle, NULL, 1000);
MBAXPLib__DMbaxpOpenConnection (objecthandle, NULL, &Bok);
MBAXPLib__DMbaxpReadHoldingRegisters (objecthandle, NULL, 1, 1, 0, 14, 1000, &Bok);
MBAXPLib__DMbaxpUpdateEnable (objecthandle, NULL, 1, &Bok);
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
}
int CVICALLBACK TimerCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
short value[13];
float fv[13],cppm,cgm3,cwt,Lv;
int i;
static unsigned int cnt = 0;
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 0, &value[0]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 1, &value[1]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 2, &value[2]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 3, &value[3]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 4, &value[4]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 5, &value[5]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 6, &value[6]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 7, &value[7]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 8, &value[8]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 9, &value[9]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 10, &value[10]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 11, &value[11]);
MBAXPLib__DMbaxpGetRegister (objecthandle, NULL, 1, 12, &value[12]);
MBAXPLib__DMbaxpGetLastError (objecthandle, NULL, &Error);
SetCtrlVal(panelHandle,PANEL_NUMERIC_17,Error); //这个语句出错~~~ 运行的时候,很正常;在我按EXIT时,已经正常调用了ExitCB
//PANEL_NUMERIC_17 这个控件是存在的,
for(i=0; i<13; i++)
{
fv = (float)value;
}
// ctmp = UP0*(Ut/10 + 273.0)*log((float)v1/v2)*1000000.0/308.0/(C_L2 - C_L1)/Up/273.0;
GetCtrlVal(panelHandle,PANEL_NUMERIC_15,&Lv);
if((fv[8] > 0.0001)&&(fv[9] > 0.0001)&&(fv[3] > 0.0001))
{
cppm = 272.0*(fv[4]/10+273.0)*log(fv[8]/fv[9])*1000000.0/308.0/-Lv/fv[3]/273.0;
cgm3 = 48*cppm/22414;
cwt = 100*cgm3/(cgm3+(1-cgm3*22.414/48000)*1429);
}
else
{
cppm = 0.0f;
cgm3 = 0.0f;
cwt = 0.0f;
}
SetCtrlVal(panelHandle,PANEL_NUMERIC_16,cppm);
SetCtrlVal(panelHandle,PANEL_NUMERIC_18,cgm3);
SetCtrlVal(panelHandle,PANEL_NUMERIC_19,cwt);
fv[0] /= 1000;
fv[1] /= 1000;
fv[2] /= 1000;
fv[3] /= 1000;
fv[4] /= 10;
fv[5] /= 1000;
fv[6] /= 1000;
fv[7] /= 1000;
fv[8] /= 1000;
fv[9] /= 1000;
fv[10] /= 100;
fv[11] /= 100;
fv[12] /= 100;
SetCtrlVal(panelHandle,PANEL_NUMERIC,fv[0]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_2,fv[1]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_3,fv[2]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_4,fv[3]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_5,fv[4]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_7,fv[5]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_8,fv[6]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_9,fv[7]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_10,fv[8]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_11,fv[9]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_12,fv[10]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_13,fv[11]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_14,fv[12]);
SetCtrlVal(panelHandle,PANEL_NUMERIC_6,++cnt);
return 0;
}
int CVICALLBACK ExitCB (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
MBAXPLib__DMbaxpCloseConnection (objecthandle, NULL);
QuitUserInterface(0);
break;
}
return 0;
}
[ 本帖最后由 cyberjok 于 2008-2-2 12:23 编辑 ] |
|