📄 didma.c
字号:
CheckRadioButton(hDlg, IDC_NORMAL, IDC_BURST,IDC_NORMAL);
if( BD_MIC3755 == gdwBoardId )
{
EnableWindow(GetDlgItem(hDlg, IDC_DMA_SLAVE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_DMA_MASTER), FALSE);
}
break;
case 1:
CheckRadioButton(hDlg, IDC_NORMAL, IDC_BURST,IDC_8255);
if( BD_MIC3755 == gdwBoardId )
{
EnableWindow(GetDlgItem(hDlg, IDC_DMA_SLAVE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_DMA_MASTER), FALSE);
}
break;
case 2:
CheckRadioButton(hDlg, IDC_NORMAL, IDC_BURST,IDC_BURST);
if( BD_MIC3755 == gdwBoardId )
{
EnableWindow(GetDlgItem(hDlg, IDC_DMA_SLAVE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_DMA_MASTER), TRUE);
}
break;
default:
break;
}
switch(gdwDIStartMode)
{
case 1:
CheckRadioButton(hDlg, IDC_SOFT_START, IDC_MATCH_START,IDC_SOFT_START);
break;
case 2:
CheckRadioButton(hDlg, IDC_SOFT_START, IDC_MATCH_START,IDC_EXTERNAL_START);
break;
case 3:
CheckRadioButton(hDlg, IDC_SOFT_START, IDC_MATCH_START,IDC_MATCH_START);
break;
default:
break;
}
// initialize stop type
switch(gdwDIStopMode)
{
case 1:
CheckRadioButton(hDlg, IDC_SOFT_STOP, IDC_MATCH_STOP,IDC_SOFT_STOP);
break;
case 2:
CheckRadioButton(hDlg, IDC_SOFT_STOP, IDC_MATCH_STOP,IDC_EXTERNAL_STOP);
break;
case 3:
CheckRadioButton(hDlg, IDC_SOFT_STOP, IDC_MATCH_STOP,IDC_MATCH_STOP);
break;
default:
break;
}
// Initialize DMA mode
switch(gdwDmaMode)
{
case 0:
CheckRadioButton(hDlg, IDC_DMA_SLAVE, IDC_DMA_MASTER, IDC_DMA_SLAVE);
break;
case 1:
CheckRadioButton(hDlg, IDC_DMA_SLAVE, IDC_DMA_MASTER, IDC_DMA_MASTER);
break;
default:
break;
}
if( BD_MIC3755 != gdwBoardId )
{
EnableWindow(GetDlgItem(hDlg, IDC_DMA_SLAVE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_DMA_MASTER), FALSE);
}
// initialize trigger source combo
// Add trigger source control selection strings
// The trigger source X'tal 30MHz - 10Mhz
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 0,(LPARAM)((LPSTR)"30 MHz"));
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 1,(LPARAM)((LPSTR)"15 MHz"));
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 2,(LPARAM)((LPSTR)"10 MHz"));
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 3,(LPARAM)((LPSTR)"Counter 0"));
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 4,(LPARAM)((LPSTR)"External"));
if( BD_MIC3755 == gdwBoardId )
{
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 5,(LPARAM)((LPSTR)"12 MHz"));
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_ADDSTRING, 6,(LPARAM)((LPSTR)"20 MHz"));
}
// 30MHz(1), 15Mhz(2), 10Mhz(3), Counter 0(4), External (5)
// 12MHz(6), 20MHz(7)
SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_SETCURSEL, gdwDITriggerSource-1, 0);
// Initialize Counter0 value
itoa((int)gdwCounterValue[0], szBuffer, 10);
SendDlgItemMessage(hDlg, IDC_EDIT_COUNTER0_VALUE, EM_REPLACESEL, 0,
(LPARAM)((LPSTR)szBuffer));
if ( gdwDITriggerSource != 4 )
{
EnableWindow( GetDlgItem(hDlg, IDC_EDIT_COUNTER0_VALUE), FALSE);
}
// Initialize pattern Match value
sprintf(szBuffer,"%X",gdwPatternMatchValue);
SetDlgItemText(hDlg,IDC_PATTERN_MATCH,szBuffer);
// Initialize Repeated Mode
CheckRadioButton(hDlg, IDC_CYCLIC, IDC_NONCYCLIC,
(gdwCyclicMode)?IDC_CYCLIC:IDC_NONCYCLIC);
// Initialize Data Width
CheckRadioButton(hDlg, IDC_32DI, IDC_8DIO, (IDC_32DI + gdwDataWidth) );
// initialize User Buffer
// Add trigger source control selection strings
SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_ADDSTRING, 0,(LPARAM)((LPSTR)"1 Mega"));
SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_ADDSTRING, 1,(LPARAM)((LPSTR)"2 Mega"));
SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_ADDSTRING, 2,(LPARAM)((LPSTR)"4 Mega"));
SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_ADDSTRING, 3,(LPARAM)((LPSTR)"8 Mega"));
SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_ADDSTRING, 4,(LPARAM)((LPSTR)"16 Mega "));
SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_SETCURSEL, gdwUserBufferSize, 0);
return TRUE;
case WM_COMMAND :
switch (LOWORD(wParam))
{
case IDOK :
{
// save the data width
for ( i = IDC_32DI; i <= IDC_8DIO; i++)
{
if( SendDlgItemMessage(hDlg, i, BM_GETCHECK, 0, 0) == 1)
{
gdwDataWidth = (i - IDC_32DI);
}
}
// save the start type
for ( i = IDC_SOFT_START; i <= IDC_MATCH_START; i++ )
{
if ( SendDlgItemMessage( hDlg, i, BM_GETCHECK, 0, 0 ) == 1 )
{
gdwDIStartMode = i - IDC_SOFT_START + 1;
}
}
// save the operation mode
for ( i = IDC_NORMAL; i <= IDC_BURST; i++ )
{
if ( SendDlgItemMessage( hDlg, i, BM_GETCHECK, 0, 0 ) == 1 )
{
gdwOperationMode = i - IDC_NORMAL ;
}
}
// save the stop type
for ( i = IDC_SOFT_STOP; i <= IDC_MATCH_STOP; i++ )
{
if ( SendDlgItemMessage( hDlg, i, BM_GETCHECK, 0, 0 ) == 1 )
{
gdwDIStopMode = i - IDC_SOFT_STOP + 1;
}
}
// save the trigger source
// 30MHz(1), 15Mhz(2), 10Mhz(3), Counter 0(4), External (5)
gdwDITriggerSource = SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_GETCURSEL, 0, 0) + 1;
// save the counter0 value
SendDlgItemMessage(hDlg, IDC_EDIT_COUNTER0_VALUE, WM_GETTEXT, 10, (LPARAM)(LPSTR)szBuffer) ;
gdwCounterValue[0] = (DWORD)atoi(szBuffer);
// save the pattern match value
sprintf(szBuffer,"%s","0x");
GetDlgItemText(hDlg,IDC_PATTERN_MATCH,&(szBuffer[2]),10);
gdwPatternMatchValue=strtoul(szBuffer,(char**)(&szTemp),16);
// save user buffer size
// 1M(0), 2M(1), 4M(2), 8M(3), 16M(4)
gdwUserBufferSize = SendDlgItemMessage(hDlg, IDC_LIST_USER_BUFFER, LB_GETCURSEL, 0, 0);
//DRV_DeviceClose((LONG far *)&DriverHandle);
}
case IDCANCEL :
EndDialog(hDlg, 0);
return TRUE;
case IDC_LIST_TRIGGER_SOURCE:
{
if( HIWORD(wParam) == LBN_SELCHANGE )
{
if( SendDlgItemMessage(hDlg, IDC_LIST_TRIGGER_SOURCE, LB_GETCURSEL ,0,0) == 3 )
bEnable = TRUE;
else
bEnable = FALSE;
EnableWindow( GetDlgItem(hDlg, IDC_EDIT_COUNTER0_VALUE), bEnable);
}
}
break;
case IDC_DeviceSelect:
/*
// Step 1: Select Device
ErrCde = DRV_SelectDevice(hDlg, FALSE, &dwDeviceNum, szDeviceName);
if (ErrCde != SUCCESS)
{
DRV_GetErrorMessage(ErrCde,(LPSTR)szErrMsg);
MessageBox(hWnd,(LPCSTR)szErrMsg,"Driver Message",MB_OK);
return 0;
}
SetDlgItemText(hDlg,IDC_DEVICE_NAME,szDeviceName);
// -------------------------------------------------
// 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 5: Close device
DRV_DeviceClose((LONG far *)&DriverHandle);
return TRUE;
*/
gbConfigured = FALSE;
SendMessage(hDlg, WM_INITDIALOG, 0, 0);
break;
case IDC_CYCLIC :
gdwCyclicMode = 1;
break;
case IDC_NONCYCLIC :
gdwCyclicMode = 0;
break;
case IDC_DMA_SLAVE :
gdwDmaMode = 0;
break;
case IDC_DMA_MASTER :
gdwDmaMode = 1;
break;
case IDC_NORMAL :
case IDC_8255 :
if( BD_MIC3755 == gdwBoardId )
{
EnableWindow(GetDlgItem(hDlg, IDC_DMA_SLAVE), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_DMA_MASTER), FALSE);
}
break;
case IDC_BURST :
if( BD_MIC3755 == gdwBoardId )
{
EnableWindow(GetDlgItem(hDlg, IDC_DMA_SLAVE), TRUE);
EnableWindow(GetDlgItem(hDlg, IDC_DMA_MASTER), TRUE);
}
break;
}
break;
}
return FALSE ;
}
/******************************************************************************
FUNCTION: ShowDataDlgProc(HWND, unsigned, WPARAM, LPARAM)
PURPOSE: Processes dialog box messages for acquired data
******************************************************************************/
BOOL FTYPE ShowDataDlgProc(hDlg, message, wParam, lParam)
HWND hDlg; /* window handle */
unsigned message; /* type of message */
WPARAM wParam; /* additional information */
LPARAM lParam; /* additional information */
{
ULONG lEndDisplay, lStartDisplay;
ULONG i;
DWORD dwUserBufferSize, dwCount;
switch (message)
{
case WM_INITDIALOG :
{
dwUserBufferSize = (DWORD)(Mega * pow((double)2, (double)gdwUserBufferSize));
// 32DI(0)/32DO(1)/ 16 DIO(2) / 8DIO(3)
switch( gdwDataWidth )
{
case 3:
dwCount = dwUserBufferSize;
break;
case 2:
dwCount = dwUserBufferSize / 2;
break;
default:
dwCount = dwUserBufferSize / 4;
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -