LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

GRAPH?????????????

我使用CVI7.0在编一个数字信号处理程序,其中主要用GRAPH控件显示时域波形和频谱数据,遇到一些无法解释的错误,通过单步调试跟踪发现一些现象,但是我找不到原因。
1. 与plot关联的光标设置序号总是出错,NON-FATAL RUN-TIME ERROR。
hSpecPlot = PlotXY (specpanel, SPECPANEL_GRAPH, pDsplFrqArray, pDsplSpecData,
       nXNumber*nCurveNumber, VAL_DOUBLE, VAL_DOUBLE, VAL_THIN_LINE,
       VAL_SIMPLE_DOT, VAL_SOLID, 1, VAL_BLACK);
SetGraphCursorIndex (specpanel, SPECPANEL_GRAPH, 1, hSpecPlot, nCursorIdx);
出错时程序break, 察看变量值,确实0 < nCursorIdx < nXNumber*nCurveNumber

NON-FATAL RUN-TIME ERROR:   "SpecChart.c", line 718, col 5, thread id 0x00000804:   Library function error (return value == -83 [0xffffffad]). New cursor position is outside plot area
为什么?

2.设置GRAPH控件的属性时导致全局指针变量意外被释放
SetAxisScalingMode (timepanel, TIMEPANEL_GRAPH, VAL_BOTTOM_XAXIS, nScaleMode, 0.0, (double)(lnSize-1));
FATAL RUN-TIME ERROR:   "TimeWave.c", line 200, col 5, thread id 0x00000B78:   The program has caused a 'General Protection' fault at 001B:685C08B3.
该语句在我的程序中随着显示内容的不同会执行很多遍,只要执行一段逆FFT运算和插值运算后想显示数据从而执行该语句时就出错,其他时候却运行正常。错误出现break时发现有时候居然会把一个全局指针变量意外释放,而该指针变量指向的正好就是我要显示的数据!不知道原因。有时候出错时改指针变量很正常,但就是要出现这个错误!
3.设置GRAPH控件的属性时导致局部指针变量意外被释放
pAxisItemValue=(double*)malloc(nAxisItemNumb*sizeof(double));
pAxisLabel=(char**)malloc(nAxisItemNumb*sizeof(char*));
InsertAxisItem (timepanel, TIMEPANEL_GRAPH, VAL_BOTTOM_XAXIS, i, pAxisLabel[i], pAxisItemValue[i]-nStartIndex);(line 216)
FATAL RUN-TIME ERROR:   "TimeWave.c", line 216, col 9, thread id 0x00000F60:   The program has caused a 'General Protection' fault at 001B:685C08B3.
该语句在我的程序中随着显示内容的不同会执行很多遍,大部分时候都运行正常,出错也是在执行一段逆FFT运算和插值运算后。错误出现break时发现有时候居然刚申请了空间的两个指针变量被意外释放了!
0 Kudos
Message 1 of 1
(3,623 Views)