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; }
void CSocketSelectDlg::DeviceListUpdate( ) { LRESULT lCount; LRESULT lData; VCIDEVICEINFO sInfo; // // remove all unavailable devices from the device list // lCount = SendItemMessage(IDC_DEVLIST, LB_GETCOUNT, 0, 0); for (LRESULT lIndex = 0; lIndex < lCount; lIndex++) { lData = SendItemMessage(IDC_DEVLIST, LB_GETITEMDATA, lIndex, 0); if ((lData != LB_ERR) && (vciDeviceGetInfo((HANDLE) lData, &sInfo) != VCI_OK)) { vciDeviceClose((HANDLE) lData); SendItemMessage(IDC_DEVLIST, LB_DELETESTRING, lIndex, 0); } } // // The selection may change because the currently selected // item is deleted. // DeviceListSelect(); // // enumerate all devices // if (m_hDevEnu != NULL) { vciEnumDeviceReset(m_hDevEnu); while (vciEnumDeviceNext(m_hDevEnu, &sInfo) == VCI_OK) DeviceListInsert(sInfo.VciObjectId); } }