ข้ามไปยังเนื้อหา

ยูทิลิตี

ฟังก์ชันนี้คือวิธีดึงข้อมูลสีจากแคนวาส โดยรับตำแหน่ง X,Y ที่สัมพันธ์กับและอยู่ภายในบัฟเฟอร์พิกเซลของอุปกรณ์บนแคนวาส และส่งคืนอาร์เรย์ [R,G,B] ของสีที่พิกเซลนั้น

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
XIntค่า Int ที่แทนพิกัด X ภายในบัฟเฟอร์พิกเซลของอุปกรณ์5
YIntค่า Int ที่แทนพิกัด Y ภายในบัฟเฟอร์พิกเซลของอุปกรณ์3
  • หมายเหตุ: พิกัด X,Y ที่ส่งไปต้องอยู่ภายในบัฟเฟอร์พิกเซลที่กำหนดโดย export Size()
ค่าที่ส่งคืนชนิดคำอธิบายตัวอย่าง
ColorArrayอาร์เรย์ 1 มิติอาร์เรย์ความยาว 3 ที่มีค่า [R, G, B] ตามพิกัด ในช่วง 0-255 (HEX 00-FF)[128,158,255]

ด้านล่างนี้คือตัวอย่างแบบย่อของการใช้ฟังก์ชันนี้ในสถานการณ์ทั่วไป

for(var iIdx = 0; iIdx < vLedPositions.length; iIdx++) //For each Led on the device
{
var iPxX = vLedPositions[iIdx][0]; //Get the X and Y values from the [X,Y] array
var iPxY = vLedPositions[iIdx][1];
var col; // create a variable to contain the [R.G.B] array data
if(shutdown){ // Check for some settings that can override the Device.color() call
col = hexToRgb(shutdownColor)
}else if (LightingMode == "Forced") {
col = hexToRgb(forcedColor)
}else{
col = device.color(iPxX, iPxY); //Calling Device.color with the X and Y values
}
//Saving the Color data in order into a larger Array of all the LED's data
RGBdata[iIdx*3] = col[0]; // Red Channel
RGBdata[iIdx*3+1] = col[1]; //Green Channel
RGBdata[iIdx*3+2] = col[2]; //Blue Channel
TotalLedCount += 1;
}

ส่งคืนระดับความสว่างปัจจุบันของอุปกรณ์ภายใน SignalRGB ค่านี้ถูกนำไปใช้กับสีที่ส่งคืนโดย device.color() หรือฟังก์ชันที่คล้ายกันแล้ว

ค่าที่ส่งคืนชนิดคำอธิบายตัวอย่าง
Brightnessintความสว่างปัจจุบันในช่วง 0-10042

ส่งคืนชื่อ WMI ของเมนบอร์ดในระบบปัจจุบัน

ค่าที่ส่งคืนชนิดคำอธิบายตัวอย่าง
MotherboardNamestringชื่อเมนบอร์ดของระบบB550 Aorus Elite

ฟังก์ชันนี้พยายามหยุดเธรดของอุปกรณ์ชั่วคราวตามระยะเวลาที่กำหนด การหยุดชั่วคราวเหล่านี้ไม่รับประกันว่าจะแม่นยำ เนื่องจากวิธีที่ระบบปฏิบัติการจัดการการพักเธรด

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
DurationIntระยะเวลาหยุดชั่วคราวที่ร้องขอเป็นมิลลิวินาที1
  • หมายเหตุ: Windows มีเวลาพักขั้นต่ำ 1-2ms และจะเริ่มคลาดเคลื่อนเมื่อเวลาพักนานขึ้น จึงไม่ควรใช้ฟังก์ชันนี้สำหรับการจับเวลาที่ต้องการความแม่นยำ
packet[89] = CalculateCrc(packet);
device.send_report(packet, 91);
device.pause(1); // We need a pause here (between packets), otherwise the ornata can't keep up.

ฟังก์ชันนี้เปลี่ยนเอนด์พอยต์ที่ใช้งานอยู่สำหรับคำสั่งอ่านและเขียนทั้งหมด มีประโยชน์สำหรับอุปกรณ์ที่มีหลายเอนด์พอยต์เปิดอยู่สำหรับคำสั่งต่าง ๆ ตัวอย่างที่พบบ่อยคืออุปกรณ์ Logitech ซึ่งมีเอนด์พอยต์ข้อมูล RGB และเอนด์พอยต์คำสั่งระบบสำหรับสิ่งต่าง ๆ เช่น การตั้งค่า DPI

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
interfaceHEXค่าฐานสิบหกแบบ 0x ที่แทน interface ของเอนด์พอยต์ที่จะเปิด0x0002
usageHEXค่าฐานสิบหกแบบ 0x ที่แทน usage ของเอนด์พอยต์ที่จะเปิด0x0006
usage_pageHEXค่าฐานสิบหกแบบ 0x ที่แทน usage_page ของเอนด์พอยต์ที่จะเปิด0x0080
collectionHEXค่าฐานสิบหกแบบ 0x ที่แทน collection ของเอนด์พอยต์ที่จะเปิด0x0001
function Apply()
{
var packet = [];
packet[0] = 0x11;
packet[1] = 0xFF;
packet[2] = 0x0C;
packet[3] = 0x5E;
device.set_endpoint(1, 0x0602, 0xff43); // System Interface
device.write(packet, 20);
}

ฟังก์ชันนี้คือ console.log ในเวอร์ชันของปลั๊กอิน โดยรับค่า String, Number, Object หรือ Array แล้วบันทึกลงในคอนโซลของอุปกรณ์เพื่อการดีบักและเป็นข้อมูลสำหรับผู้ใช้ ซึ่งมีประโยชน์อย่างยิ่งในการแสดงรายการต่าง ๆ เช่น การเปลี่ยน DPI ข้อผิดพลาด หรือระหว่างการพัฒนาเพื่อแสดงโครงสร้างแพ็กเก็ตหรืออินพุตจากคำสั่งอ่าน

  • หมายเหตุ: ฟังก์ชันนี้จะพยายามแปลงตัวแปร JavaScript เป็นสตริงเท่าที่ทำได้ การบันทึก Template Literals ของ JavaScript โดยใช้ parseInt(), toString() หรือ JSON.stringify จะช่วยให้คุณควบคุมการแปลงและการจัดรูปแบบได้มากขึ้น
พารามิเตอร์ชนิดคำอธิบายตัวอย่างค่าเริ่มต้น
Itemค่า JavaScriptสตริง ตัวเลข อาร์เรย์ หรือค่า JavaScript อื่น ๆ ที่จะบันทึก
Optionsอ็อบเจกต์ JavaScriptอ็อบเจกต์ JavaScript ที่มีพารามิเตอร์การตั้งค่า{hex: True}{}
ตัวเลือกคำอธิบายชนิดค่าเริ่มต้น
Hexกำหนดว่าจะพิมพ์จำนวนเต็มในรูปแบบฐานสิบหรือฐานสิบหกBooleanFalse
toFileกำหนดว่ารายการที่พิมพ์ควรปรากฏในบันทึกดีบัก หรือเฉพาะในคอนโซลของอุปกรณ์BooleanFalse
let ImportantData = "i have really important info here";
device.log(ImportantData, {toFile: true})

การแจ้งเตือนใช้เพื่อแสดงข้อความให้ผู้ใช้เห็นอย่างชัดเจนหากอุปกรณ์มีปัญหา ควรใช้อย่างประหยัด และสงวนไว้สำหรับปัญหาร้ายแรงที่ทำให้ใช้งานไม่ได้ เช่น อุปกรณ์ไม่ได้รับการกำหนดค่าอย่างถูกต้อง

สร้างการแจ้งเตือนใหม่ให้ผู้ใช้ ค่าที่ส่งคืนสามารถใช้เพื่อลบการแจ้งเตือนนั้นโดยเฉพาะ และควรลบเมื่อผู้ใช้แก้ไขปัญหาที่แจ้งเตือนแล้ว

ระดับความสำคัญคำอธิบายค่า
Infoการแจ้งเตือนปกติ0
Importantการแจ้งเตือนสำคัญ (ไฮไลต์)1
พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
TitleStringหัวข้อการแจ้งเตือนFirmware Incompatible
DescriptionStringคำอธิบายการแจ้งเตือนFirmware Version must be >= 2.0.0
PriorityIntระดับความสำคัญของการแจ้งเตือน0 | 1
ค่าที่ส่งคืนชนิดคำอธิบาย
AlertIdStringสตริง ID ของการแจ้งเตือนที่สร้างขึ้น
let Alertid = device.notify("Really Important Issue", "Please Fix", 1);

ลบการแจ้งเตือนที่ระบุหากมีอยู่

พารามิเตอร์ชนิดคำอธิบาย
AlertIdStringAlertId ที่ส่งคืนโดย device.notify
let Alertid = device.notify("Really Important Issue", "Please Fix", 1);
// Do stuff and recheck if the alerted issue is fixed
device.denotify(AlertId);

ข้อความของอุปกรณ์เป็นช่องทางในการส่งข้อมูลที่สำคัญแต่ไม่ร้ายแรงถึงขั้นทำให้ใช้งานไม่ได้ให้ผู้ใช้ทราบ ข้อความเหล่านี้จะปรากฏบนหน้าของอุปกรณ์เท่านั้น

เพิ่มข้อความอุปกรณ์ใหม่ด้วย MessageId ที่ระบุ

พารามิเตอร์ชนิดคำอธิบายตัวอย่าง
messageIdstringMessageId ที่ผูกกับข้อความอุปกรณ์”mymessage”
messagestringข้อความที่จะแสดง”The message”
tooltipstringข้อความเพิ่มเติมที่แสดงเมื่อวางเมาส์”Some more info”
device.addMessage("message1", "Hey Dude you should know this", "Here's some extra info about it too");

ลบข้อความที่สร้างด้วย MessageId ที่ระบุหากมีอยู่

พารามิเตอร์ชนิดคำอธิบาย
messageIdstringMessageId ที่จะลบ
device.addMessage("message1", "Hey Dude you should know this", "Here's some extra info about it too");
// message is no longer relevant
device.removeMessage("message1");