Cześć,
Potrzebuję wywołać taką funkcję:
// HRESULT DirectOutput_SetLed(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwValue);
// Set the state of a LED on the device
// Parameters
// hDevice : opaque device handle
// dwPage : page to display the led on
// dwIndex : index of the led
// dwValue : value of the led (0 is off)
// returns
// S_OK : succeeded
// E_HANDLE : hDevice is not a valid device handle
// E_NOTIMPL : hDevice does not have any leds
// E_INVALIDARG : dwPage or dwIndex is not a valid id
// E_PAGENOTACTIVE : dwPage is not the active page
HRESULT __stdcall DirectOutput_SetLed(void* hDevice, DWORD dwPage, DWORD dwIndex, DWORD dwValue);
z mojej funkcji:
void x52_output::color_led(void * hDevice, DWORD dwPage, uint8_t nr, int8_t param){
if(nr==LED_FIRE || nr==LED_THROTTLE){
if(param<=0){ //wylaczony
DirectOutput_SetLed(hDevice, dwPage, nr, 0); //green
} else {
DirectOutput_SetLed(hDevice, dwPage, nr, 1); //green
}
} else {
if(param==0){ //wylaczony
DirectOutput_SetLed(hDevice, dwPage, nr, 1); //red
DirectOutput_SetLed(hDevice, dwPage, nr+1, 0); //green
} else if (param==1){ //wlaczony
DirectOutput_SetLed(hDevice, dwPage, nr, 0); //red
DirectOutput_SetLed(hDevice, dwPage, nr+1, 1); //green
} else if (param==-1){ //diody wylaczone
DirectOutput_SetLed(hDevice, dwPage, nr, 0); //red
DirectOutput_SetLed(hDevice, dwPage, nr+1, 0); //green
}else { //stan posredni
DirectOutput_SetLed(hDevice, dwPage, nr, 1); //red
DirectOutput_SetLed(hDevice, dwPage, nr+1, 1); //green
}
}
}
w pliku głównym wywołuję ją tak:
std::vector<void*> devices;
DWORD dwPage = 1;
x52output::color_led(devices[0], dwPage, 1, 1);
Wywołanie tej funkcji (DirectOutput_SetLed) z main działa bez problemu. Natomiast tutaj nie umiem poradzić sobie z poprawnym przekazaniem tego wektora do urządzenia. Próbowałem rozpisać to inaczej ale albo się nie kompiluje, albo nie działa, albo zawiesza program. Poradzicie coś?