Hoppa till innehåll

Hjälpfunktioner

Den här funktionen är sättet att hämta färgdata från canvasen. Den tar en X,Y-position relativt enhetens pixelbuffert på canvasen och inom den bufferten, och returnerar en [R,G,B]-array med färgen på den pixeln.

ParameterTypBeskrivningExempel
XIntInt-värde som representerar X-koordinaten i enhetens pixelbuffert5
YIntInt-värde som representerar Y-koordinaten i enhetens pixelbuffert3
  • Obs: De X,Y-koordinater som skickas in måste ligga inom pixelbufferten som definieras av Size()-exporten.
ReturnerarTypBeskrivningExempel
ColorArray1D ArrayArray med längd 3 som innehåller [R, G, B]-värden koordinerade i intervallet 0–255 (HEX 00–FF)[128,158,255]

Nedan visas ett förkortat exempel på hur funktionen används i ett typiskt scenario.

for(var iIdx = 0; iIdx < vLedPositions.length; iIdx++) // För varje LED på enheten
{
var iPxX = vLedPositions[iIdx][0]; // Hämta X- och Y-värden från [X,Y]-arrayen
var iPxY = vLedPositions[iIdx][1];
var col; // Skapa variabel för att hålla [R,G,B]-arraydata
if(shutdown){ // Kontrollera några inställningar som kan åsidosätta device.color()-anropet
col = hexToRgb(shutdownColor)
}else if (LightingMode == "Forced") {
col = hexToRgb(forcedColor)
}else{
col = device.color(iPxX, iPxY); // Anropa Device.color med X- och Y-värden
}
// Spara färgdata i ordning i den stora arrayen med alla LED-data
RGBdata[iIdx*3] = col[0]; // Röd kanal
RGBdata[iIdx*3+1] = col[1]; // Grön kanal
RGBdata[iIdx*3+2] = col[2]; // Blå kanal
TotalLedCount += 1;
}

Returnerar aktuell ljusstyrkenivå för enheten i SignalRGB. Det här värdet är redan applicerat på färgerna som returneras av device.color() och liknande funktioner.

ReturnerarTypBeskrivningExempel
BrightnessintAktuell ljusstyrka i intervallet 0–10042

Returnerar WMI-namnet på det aktuella systemets moderkort.

ReturnerarTypBeskrivningExempel
MotherboardNamestringSystemets moderkortnamnB550 Aorus Elite

Den här funktionen försöker pausa enhetens tråd under den angivna tiden. På grund av hur operativsystemet hanterar trådvilolägen är dessa pauser inte exakt garanterade.

ParameterTypBeskrivningExempel
DurationIntÖnskad pauslängd i millisekunder1
  • Obs: Windows minimala vilotid är 1–2 ms och problem kan uppstå vid längre vilolägen — använd inte dessa för exakt timing.
packet[89] = CalculateCrc(packet);
device.send_report(packet, 91);
device.pause(1); // En paus behövs här (mellan paket), annars hinner inte firmware med.

Den här funktionen ändrar den aktiva slutpunkten för alla läs- och skrivkommandon. Användbart för enheter med flera öppna slutpunkter för olika kommandon. Ett vanligt exempel är Logitech-enheter som har en RGB-datasluttpunkt och en systemkommandasluttpunkt för saker som DPI-inställningar.

ParameterTypBeskrivningExempel
interfaceHEX0x Hex-värde som representerar interface-värdet för slutpunkten som ska öppnas0x0002
usageHEX0x Hex-värde som representerar usage-värdet för slutpunkten som ska öppnas0x0006
usage_pageHEX0x Hex-värde som representerar usage_page-värdet för slutpunkten som ska öppnas0x0080
collectionHEX0x Hex-värde som representerar collection-värdet för slutpunkten som ska öppnas0x0001
function Apply()
{
var packet = [];
packet[0] = 0x11;
packet[1] = 0xFF;
packet[2] = 0x0C;
packet[3] = 0x5E;
device.set_endpoint(1, 0x0602, 0xff43); // Systemgränssnitt
device.write(packet, 20);
}

Den här funktionen är plugin-filens version av console.log. Den tar en sträng, ett nummer, ett objekt eller en array och loggar det i enhetens konsol för felsökning och användarinformation. Detta är särskilt användbart för att visa DPI-ändringar, fel eller paketlayouten och indata från läskommandon under utveckling.

  • Obs: Den här funktionen försöker konvertera JavaScript-variabler till strängar där det är möjligt. Att logga malliteraler med parseInt(), toString() eller JSON.stringify() ger mer kontroll över konvertering och formatering.
ParameterTypBeskrivningExempelStandard
ItemJavascript-värdeEn sträng, ett nummer, en array eller annat JavaScript-värde att logga
OptionsJavaScript-objektJavaScript-objekt med inställningsparametrar{hex: True}{}
AlternativBeskrivningTypStandard
HexStäller in om heltal skrivs ut i decimalt eller hex-formatBooleanFalse
toFileStäller in om utskrivna objekt visas i felsökningsloggar eller bara i enhetens konsolBooleanFalse
let ImportantData = "verkligen viktig information här";
device.log(ImportantData, {toFile: true})

Varningar kan användas för att visuellt varna användaren om det finns ett problem med deras enhet. De bör användas sparsamt och reserveras för showstoppande problem som att enheter inte är korrekt konfigurerade.

Skapar en ny varning för användaren. Returvärdet kan användas för att selektivt ta bort varningen och bör göras om användaren åtgärdar det varnade problemet.

VarningsprioritetBeskrivningVärde
InfoNormal varning0
ImportantKritisk (markerad) varning1
ParameterTypBeskrivningExempel
TitleStringVarningsrubrikFirmware Incompatible
DescriptionStringVarningsbeskrivningFirmware Version must be >= 2.0.0
PriorityIntVarningsprioritet0 | 1
ReturnerarTypBeskrivning
AlertIdStringId-strängen för den skapade varningen
let Alertid = device.notify("Verkligt viktigt problem", "Vänligen åtgärda", 1);

Tar bort den angivna varningen om den finns.

ParameterTypBeskrivning
AlertIdStringAlertId som returnerades av device.notify
let Alertid = device.notify("Verkligt viktigt problem", "Vänligen åtgärda", 1);
// Utför åtgärder och kontrollera om det varnade problemet är löst
device.denotify(AlertId);

Enhetsmeddelanden ger ett sätt att kommunicera viktig men icke-showstoppande information till användaren. Dessa meddelanden visas enbart på enhetens sida.

Lägger till ett nytt enhetsmeddelande med det angivna messageId.

ParameterTypBeskrivningExempel
messageIdstringMessageId kopplat till enhetsmeddelandet”mymessage”
messagestringMeddelandetexten som visas”Meddelande”
tooltipstringYtterligare text som visas vid hovring”Lite mer information”
device.addMessage("message1", "Hej, det här bör du känna till", "Det finns även lite extra information om detta");

Tar bort meddelandet skapat med det angivna messageId om det finns.

ParameterTypBeskrivning
messageIdstringMessageId att ta bort
device.addMessage("message1", "Hej, det här bör du känna till", "Det finns även lite extra information om detta");
// meddelandet är inte längre relevant
device.removeMessage("message1");