我要怎麼讓旋鈕數值不要從最小值直接跳到最大值?



主要軟體: LabWindows/CVI Development Systems>>Full Development System
主要軟體版本: 4.0.1
主要軟體修正版本:
次要軟體: N/A

問題: 我要怎麼讓旋鈕數值不要從最小值直接跳到最大值?目前來說,並沒有任何屬性設定可以讓旋鈕不要從最小值跳到最大值或從最大值跳到最小值。

解答:
接下來的旋鈕回呼函式程式碼適用於整數型的旋鈕。如果要用在浮點數或倍精數型態的旋鈕,就要更改程式碼因為浮點數需要fudge factor 來做浮點數準確度的補償。

int CVICALLBACK KnobCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
static int previousValue = 0;
int currentValue;
int max, min, inc;

switch (event)
{
case EVENT_COMMIT:
Beep();
break;

case EVENT_VAL_CHANGED:
GetCtrlVal(panel, control, ¤tValue);
GetCtrlAttribute (panel, control, ATTR_MIN_VALUE, &min);
GetCtrlAttribute (panel, control, ATTR_MAX_VALUE, &max);
GetCtrlAttribute (panel, control, ATTR_INCR_VALUE, &inc);

if (((previousValue == min) && ( abs(currentValue-min) != inc) ) ||
((previousValue == max) && ( abs(max-currentValue) != inc) ))
{
SetCtrlVal (panel, control, previousValue);
return 1; // Swallow event to prevent from updating UIR
}
else
previousValue = currentValue;
break;
}
return 0;
}



相關連結:

附加檔案:





報告日期: 03/19/1998
最後更新: 12/27/2007
文件偏號: 17IF16TL