BOOL CSocketSelectDlg::OnBtnOk(WORD wCode, HWND hCtrl)
{
  HRESULT       hResult;
  VCIDEVICEINFO sInfo;

  if (m_hCurDev != NULL)
  {
    if (m_lCtrlNo >= 0)
    {
      //
      // re-open the selected device. This is neccessary because the
      // handle in m_hCurDev is invalid after the dialog has closed.
      //
      hResult = vciDeviceGetInfo(m_hCurDev, &sInfo);
      if (hResult == VCI_OK)
        hResult = vciDeviceOpen(sInfo.VciObjectId, &m_hSelDev);

      if (hResult == VCI_OK)
      {
        m_nSelDev = sInfo.VciObjectId;
        EndDialog(IDOK);
      }
      else
      {
        DeviceListUpdate();
      }
    }
    else
    {
      TCHAR szTitle[256];
      GetWindowText(szTitle, 256);
      MessageBox(CDialogWnd::GetHandle(),
                 TEXT("Please select a BUS line !"),
                 szTitle, MB_OK | MB_ICONSTOP);
    }
  }
  else
  {
    TCHAR szTitle[256];
    GetWindowText(szTitle, 256);
    MessageBox(CDialogWnd::GetHandle(),
               TEXT("Please select a device !"),
               szTitle, MB_OK | MB_ICONSTOP);
  }

  return(TRUE);
}
LRESULT CSocketSelectDlg::DeviceListInsert(VCIID vciid)
{
  HANDLE        hDevice;
  LRESULT       lIndex;
  TCHAR         szText[512];
  VCIDEVICEINFO sInfo;

  lIndex = DeviceListSearch(vciid);

  if (lIndex == LB_ERR)
  {
    if (vciDeviceOpen(vciid, &hDevice) == VCI_OK)
    {
      if (vciDeviceGetInfo(hDevice, &sInfo) == VCI_OK)
      {
        wsprintf(szText, TEXT("%08X%08X - %s"),
          vciid.AsLuid.HighPart, vciid.AsLuid.LowPart,  sInfo.Description);

        lIndex = SendItemMessage(IDC_DEVLIST,
                   LB_ADDSTRING, 0, (LPARAM) szText);

        if (lIndex >= 0)
        {
          SendItemMessage(IDC_DEVLIST,
            LB_SETITEMDATA, lIndex, (LPARAM) hDevice);
        }
        else
        {
          vciDeviceClose(hDevice);
        }
      }
      else
      {
        vciDeviceClose(hDevice);
      }
    }
  }

  return( lIndex );
}
Esempio n. 3
0
int CANDriver::initialize()
{
    CHAR errorBuffer[VCI_MAX_ERRSTRLEN];
    HRESULT vciResult;

    if ( (vciResult = vciInitialize()) != VCI_OK )
    {
        vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer));
        emit errorOccured(errorBuffer);
        return 1;
    }

    HANDLE hEnum;
    if ( (vciResult = vciEnumDeviceOpen(&hEnum)) != VCI_OK )
    {
        vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer));
        emit errorOccured(errorBuffer);
        return 1;
    }
    vciEnum_ptr phEnum(&hEnum, vciEnumDeviceClose);

    VCIDEVICEINFO deviceInfo;
    if ( (vciResult = vciEnumDeviceNext(hEnum, &deviceInfo)) != VCI_OK )
    {
        vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer));
        emit errorOccured(errorBuffer);
        return 1;
    }

    HANDLE hDevice;
    if ( (vciResult = vciDeviceOpen(deviceInfo.VciObjectId, &hDevice)) != VCI_OK )
    {
        vciFormatError(vciResult, &errorBuffer[0], sizeof(errorBuffer));
        emit errorOccured(errorBuffer);
        return 1;
    }
    vciDevice_ptr phDevice(&hDevice, vciDeviceClose);

    return 0;
}