📄 adint.c
字号:
WPARAM wParam; /* additional information */
LPARAM lParam; /* additional information */
{
int i;
char szBuffer[100];
LONG lFifoSize;
char szFifoSize[10];
switch (message)
{
case WM_INITDIALOG :
// Step 1: Select Device
ErrCde = DRV_SelectDevice(hDlg, FALSE, &dwDeviceNum, szBuffer);
if (ErrCde != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
return 0;
}
// Step 2: Open Device
ErrCde = DRV_DeviceOpen(dwDeviceNum, (LONG far *)&DriverHandle);
if (ErrCde != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
return 0;
}
// Step 3: Get device features
ptDevFeatures.buffer = (LPDEVFEATURES)&DevFeatures;
ptDevFeatures.size = sizeof(DEVFEATURES);
if ((ErrCde = DRV_DeviceGetFeatures(DriverHandle,
(LPT_DeviceGetFeatures)&ptDevFeatures)) != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
DRV_DeviceClose((LONG far *)&DriverHandle);
return 0;
}
// Step 4 : Initialize Input Range List Combobox with device features
if (DevFeatures.usNumGain != 0)
{
EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
for (i = 0; i < (int)DevFeatures.usNumGain; i ++)
SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_ADDSTRING, 0,
(LPARAM)((LPSTR)(DevFeatures.glGainList[i].szGainStr)));
SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_SELECTSTRING, (WPARAM)(-1),
(LPARAM)((LPSTR)(DevFeatures.glGainList[gwGainCode].szGainStr)));
}
else
{
EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
0, (LPARAM)((LPSTR)0));
}
// Initialize Conversion Number
ultoa(gulConvNum, szBuffer, 10);
SendDlgItemMessage(hDlg, IDC_CONVERSION, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
// Initialize Pacer Rate
ultoa(gdwPacerRate, szBuffer, 10);
SendDlgItemMessage(hDlg, IDC_PACER, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
if (gwExtTrig)
EnableWindow(GetDlgItem(hDlg, IDC_PACER), FALSE);
else
EnableWindow(GetDlgItem(hDlg, IDC_PACER), TRUE);
// Initialize Start Channel
itoa((int)gwStartChl, szBuffer, 10);
SendDlgItemMessage(hDlg, IDC_ESTART, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
// Initialize Stop Channel
itoa((int)gwStopChl, szBuffer, 10);
SendDlgItemMessage(hDlg, IDC_ESTOP, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
// Initialize Triggering
CheckRadioButton(hDlg, IDC_INTTRIG, IDC_EXTTRIG,
(gwExtTrig)?IDC_EXTTRIG:IDC_INTTRIG);
// Initialize Repeated Mode
CheckRadioButton(hDlg, IDC_CYCLIC, IDC_NONCYCLIC,
(gwCyclicMode)?IDC_CYCLIC:IDC_NONCYCLIC);
// Initialize Buffer Mode
EnableWindow(GetDlgItem(hDlg, IDC_BUFSINGLE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_BUFDOUBLE), FALSE);
// CheckRadioButton(hDlg, IDC_BUFSINGLE, IDC_BUFDOUBLE,
// (gwBufferMode)?IDC_BUFDOUBLE:IDC_BUFSINGLE);
// Initialize Data Type
CheckRadioButton(hDlg, IDC_DATAUSHORT, IDC_DATAFLOAT,
(gwDataType)?IDC_DATAFLOAT:IDC_DATAUSHORT);
// Initialize Message Flag
CheckRadioButton(hDlg, IDC_EVTENABLE, IDC_EVTDISABLE,
(gwEvtFlag)?IDC_EVTENABLE:IDC_EVTDISABLE);
// Initialize number of interrupt count
EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), FALSE);
if (gwFifoEnable)
{
SendDlgItemMessage(hDlg, IDC_FifoEnable,BM_SETCHECK,1,0);
EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), TRUE);
itoa((int)gwFifoSize, szBuffer, 10);
SendDlgItemMessage(hDlg, IDC_FIFOSIZE, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
}
SendDlgItemMessage(hDlg, IDC_CONVINT, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
// Initialize gain table option
if (gwGainList)
{
CheckRadioButton(hDlg, IDC_OVERALLGAIN, IDC_GAINARRAY,
IDC_GAINARRAY);
EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_GAINLIST), TRUE);
}
else
{
CheckRadioButton(hDlg, IDC_OVERALLGAIN, IDC_GAINARRAY,
IDC_OVERALLGAIN);
EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_GAINLIST), FALSE);
}
// Step 5: Close device
DRV_DeviceClose((LONG far *)&DriverHandle);
return TRUE;
case WM_COMMAND :
switch (LOWORD(wParam))
{
case IDOK :
case IDCANCEL :
EndDialog(hDlg, 0);
return TRUE;
case IDC_GAINLIST :
DialogBox (hInst, MAKEINTRESOURCE(IDD_GAINLIST),
hDlg, lpfnGainListDlgProc) ;
return TRUE;
case IDC_DeviceSelect:
// Step 1: Select Device
ErrCde = DRV_SelectDevice(hDlg, FALSE, &dwDeviceNum, szBuffer);
if (ErrCde != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
return 0;
}
// -------------------------------------------------
// Initialize Input Range List Combobox, it needs to
// get device features for gain list
// -------------------------------------------------
// Step 2: Open Device
ErrCde = DRV_DeviceOpen(dwDeviceNum, (LONG far *)&DriverHandle);
if (ErrCde != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd, (LPCSTR)szErrMsg,
"Driver Message", MB_OK);
return 0;
}
// Step 3: Get device features
ptDevFeatures.buffer = (LPDEVFEATURES)&DevFeatures;
ptDevFeatures.size = sizeof(DEVFEATURES);
if ((ErrCde = DRV_DeviceGetFeatures(DriverHandle,
(LPT_DeviceGetFeatures)&ptDevFeatures)) != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd, (LPCSTR)szErrMsg, "Driver Message",
MB_OK);
DRV_DeviceClose((LONG far *)&DriverHandle);
return 0;
}
// Step 4: Initialize Range Combobox with device features
gwGainCode = 0;
if (DevFeatures.usNumGain != 0)
{
EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), TRUE);
SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
0, (LPARAM)((LPSTR)0));
for (i = 0; i < (int)DevFeatures.usNumGain; i ++)
SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_ADDSTRING, 0,
(LPARAM)((LPSTR)(DevFeatures.glGainList[i].szGainStr)));
SendDlgItemMessage(hDlg, IDC_INPRANGE,
CB_SELECTSTRING, (WPARAM)(-1),
(LPARAM)((LPSTR)(DevFeatures.glGainList[gwGainCode].szGainStr)));
}
else
{
EnableWindow(GetDlgItem(hDlg, IDC_INPRANGE), FALSE);
SendDlgItemMessage(hDlg, IDC_INPRANGE, CB_RESETCONTENT,
0, (LPARAM)((LPSTR)0));
}
// Step 5: close device
DRV_DeviceClose((LONG far *)&DriverHandle);
return TRUE;
case IDC_CONVERSION :
if (HIWORD(wParam) == EN_KILLFOCUS)
{
if(SendDlgItemMessage(hDlg, IDC_CONVERSION,
EM_GETMODIFY, 0, 0))
{
SendDlgItemMessage(hDlg, IDC_CONVERSION,
WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
gulConvNum = (ULONG)atol(szBuffer);
SendDlgItemMessage(hDlg, IDC_CONVERSION,
EM_SETMODIFY, FALSE, 0) ;
}
}
return TRUE;
case IDC_PACER :
if (HIWORD(wParam) == EN_KILLFOCUS)
{
if(SendDlgItemMessage(hDlg, IDC_PACER,
EM_GETMODIFY, 0, 0))
{
SendDlgItemMessage(hDlg, IDC_PACER,
WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
gdwPacerRate = (ULONG)atol(szBuffer);
SendDlgItemMessage(hDlg, IDC_PACER,
EM_SETMODIFY, FALSE, 0) ;
}
}
return TRUE;
case IDC_INPRANGE :
if (HIWORD(wParam) == CBN_KILLFOCUS)
{
i = (int)SendDlgItemMessage(hDlg, IDC_INPRANGE,
CB_GETCURSEL, 0, 0) ;
if (i != CB_ERR)
gwGainCode = (USHORT)i;
}
return TRUE;
case IDC_ESTART :
if (HIWORD(wParam) == EN_KILLFOCUS)
{
if(SendDlgItemMessage(hDlg, IDC_ESTART,
EM_GETMODIFY, 0, 0))
{
SendDlgItemMessage(hDlg, IDC_ESTART,
WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
gwStartChl = (USHORT)atoi(szBuffer);
SendDlgItemMessage(hDlg, IDC_ESTART,
EM_SETMODIFY, FALSE, 0) ;
}
}
return TRUE;
case IDC_ESTOP :
if (HIWORD(wParam) == EN_KILLFOCUS)
{
if(SendDlgItemMessage(hDlg, IDC_ESTOP,
EM_GETMODIFY, 0, 0))
{
SendDlgItemMessage(hDlg, IDC_ESTOP,
WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
gwStopChl = (USHORT)atoi(szBuffer);
SendDlgItemMessage(hDlg, IDC_ESTOP,
EM_SETMODIFY, FALSE, 0) ;
}
}
return TRUE;
case IDC_FifoEnable :
gwFifoEnable = (int)SendDlgItemMessage(hDlg, IDC_FifoEnable,
BM_GETCHECK,0,0);
if(gwFifoEnable==1)
{
EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), TRUE);
// Step 1: Open device
ErrCde = DRV_DeviceOpen(dwDeviceNum, (LONG far *)&DriverHandle);
if (ErrCde != SUCCESS)
{
gwFifoEnable = 0;
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd, (LPCSTR)szErrMsg,
"Driver Message", MB_OK);
return 0;
}
// Step 2: Get FIFO size
ErrCde = DRV_GetFIFOSize(DriverHandle, &lFifoSize);
if(ErrCde != SUCCESS)
{
gwFifoEnable = 0;
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd, (LPCSTR)szErrMsg,
"Driver Message", MB_OK);
return 0;
}
// Step 3: Close device
DRV_DeviceClose((LONG far *)&DriverHandle);
// divide by 2 for conversion from byte to word
gwFifoSize = (USHORT)lFifoSize / 2;
SetWindowText(GetDlgItem(hDlg, IDC_FIFOSIZE),
itoa((int)gwFifoSize, szFifoSize, 10));
}
else
{
EnableWindow(GetDlgItem(hDlg, IDC_FIFOSIZE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_FIFOTEXT), FALSE);
}
return TRUE;
case IDC_FIFOSIZE :
if(gwFifoEnable==1)
{
if (HIWORD(wParam) == EN_KILLFOCUS)
if(SendDlgItemMessage(hDlg, IDC_FIFOSIZE, EM_GETMODIFY, 0, 0))
{
SendDlgItemMessage(hDlg, IDC_FIFOSIZE, WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
gwFifoSize = (USHORT)atoi(szBuffer);
SendDlgItemMessage(hDlg, IDC_FIFOSIZE, EM_SETMODIFY, FALSE, 0) ;
}
}
else
gwFifoSize = (USHORT)1024;
return TRUE;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -