ยูทิลิตี
ยูทิลิตีอุปกรณ์
หัวข้อที่มีชื่อว่า “ยูทิลิตีอุปกรณ์”device.color()
หัวข้อที่มีชื่อว่า “device.color()”ฟังก์ชันนี้คือวิธีดึงข้อมูลสีจากแคนวาส โดยรับตำแหน่ง X,Y ที่สัมพันธ์กับและอยู่ภายในบัฟเฟอร์พิกเซลของอุปกรณ์บนแคนวาส และส่งคืนอาร์เรย์ [R,G,B] ของสีที่พิกเซลนั้น
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| X | Int | ค่า Int ที่แทนพิกัด X ภายในบัฟเฟอร์พิกเซลของอุปกรณ์ | 5 |
| Y | Int | ค่า 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; }device.getBrightness()
หัวข้อที่มีชื่อว่า “device.getBrightness()”ส่งคืนระดับความสว่างปัจจุบันของอุปกรณ์ภายใน SignalRGB ค่านี้ถูกนำไปใช้กับสีที่ส่งคืนโดย device.color() หรือฟังก์ชันที่คล้ายกันแล้ว
| ค่าที่ส่งคืน | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| Brightness | int | ความสว่างปัจจุบันในช่วง 0-100 | 42 |
device.getMotherboardName()
หัวข้อที่มีชื่อว่า “device.getMotherboardName()”ส่งคืนชื่อ WMI ของเมนบอร์ดในระบบปัจจุบัน
| ค่าที่ส่งคืน | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| MotherboardName | string | ชื่อเมนบอร์ดของระบบ | B550 Aorus Elite |
device.pause()
หัวข้อที่มีชื่อว่า “device.pause()”ฟังก์ชันนี้พยายามหยุดเธรดของอุปกรณ์ชั่วคราวตามระยะเวลาที่กำหนด การหยุดชั่วคราวเหล่านี้ไม่รับประกันว่าจะแม่นยำ เนื่องจากวิธีที่ระบบปฏิบัติการจัดการการพักเธรด
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| Duration | Int | ระยะเวลาหยุดชั่วคราวที่ร้องขอเป็นมิลลิวินาที | 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.device.set_endpoint()
หัวข้อที่มีชื่อว่า “device.set_endpoint()”ฟังก์ชันนี้เปลี่ยนเอนด์พอยต์ที่ใช้งานอยู่สำหรับคำสั่งอ่านและเขียนทั้งหมด มีประโยชน์สำหรับอุปกรณ์ที่มีหลายเอนด์พอยต์เปิดอยู่สำหรับคำสั่งต่าง ๆ ตัวอย่างที่พบบ่อยคืออุปกรณ์ Logitech ซึ่งมีเอนด์พอยต์ข้อมูล RGB และเอนด์พอยต์คำสั่งระบบสำหรับสิ่งต่าง ๆ เช่น การตั้งค่า DPI
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| interface | HEX | ค่าฐานสิบหกแบบ 0x ที่แทน interface ของเอนด์พอยต์ที่จะเปิด | 0x0002 |
| usage | HEX | ค่าฐานสิบหกแบบ 0x ที่แทน usage ของเอนด์พอยต์ที่จะเปิด | 0x0006 |
| usage_page | HEX | ค่าฐานสิบหกแบบ 0x ที่แทน usage_page ของเอนด์พอยต์ที่จะเปิด | 0x0080 |
| collection | HEX | ค่าฐานสิบหกแบบ 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);}device.log()
หัวข้อที่มีชื่อว่า “device.log()”ฟังก์ชันนี้คือ console.log ในเวอร์ชันของปลั๊กอิน โดยรับค่า String, Number, Object หรือ Array แล้วบันทึกลงในคอนโซลของอุปกรณ์เพื่อการดีบักและเป็นข้อมูลสำหรับผู้ใช้ ซึ่งมีประโยชน์อย่างยิ่งในการแสดงรายการต่าง ๆ เช่น การเปลี่ยน DPI ข้อผิดพลาด หรือระหว่างการพัฒนาเพื่อแสดงโครงสร้างแพ็กเก็ตหรืออินพุตจากคำสั่งอ่าน
- หมายเหตุ: ฟังก์ชันนี้จะพยายามแปลงตัวแปร JavaScript เป็นสตริงเท่าที่ทำได้ การบันทึก Template Literals ของ JavaScript โดยใช้ parseInt(), toString() หรือ JSON.stringify จะช่วยให้คุณควบคุมการแปลงและการจัดรูปแบบได้มากขึ้น
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง | ค่าเริ่มต้น |
|---|---|---|---|---|
| Item | ค่า JavaScript | สตริง ตัวเลข อาร์เรย์ หรือค่า JavaScript อื่น ๆ ที่จะบันทึก | ||
| Options | อ็อบเจกต์ JavaScript | อ็อบเจกต์ JavaScript ที่มีพารามิเตอร์การตั้งค่า | {hex: True} | {} |
| ตัวเลือก | คำอธิบาย | ชนิด | ค่าเริ่มต้น |
|---|---|---|---|
| Hex | กำหนดว่าจะพิมพ์จำนวนเต็มในรูปแบบฐานสิบหรือฐานสิบหก | Boolean | False |
| toFile | กำหนดว่ารายการที่พิมพ์ควรปรากฏในบันทึกดีบัก หรือเฉพาะในคอนโซลของอุปกรณ์ | Boolean | False |
let ImportantData = "i have really important info here"; device.log(ImportantData, {toFile: true})การแจ้งเตือน
หัวข้อที่มีชื่อว่า “การแจ้งเตือน”การแจ้งเตือนใช้เพื่อแสดงข้อความให้ผู้ใช้เห็นอย่างชัดเจนหากอุปกรณ์มีปัญหา ควรใช้อย่างประหยัด และสงวนไว้สำหรับปัญหาร้ายแรงที่ทำให้ใช้งานไม่ได้ เช่น อุปกรณ์ไม่ได้รับการกำหนดค่าอย่างถูกต้อง
device.notify()
หัวข้อที่มีชื่อว่า “device.notify()”สร้างการแจ้งเตือนใหม่ให้ผู้ใช้ ค่าที่ส่งคืนสามารถใช้เพื่อลบการแจ้งเตือนนั้นโดยเฉพาะ และควรลบเมื่อผู้ใช้แก้ไขปัญหาที่แจ้งเตือนแล้ว
| ระดับความสำคัญ | คำอธิบาย | ค่า |
|---|---|---|
| Info | การแจ้งเตือนปกติ | 0 |
| Important | การแจ้งเตือนสำคัญ (ไฮไลต์) | 1 |
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| Title | String | หัวข้อการแจ้งเตือน | Firmware Incompatible |
| Description | String | คำอธิบายการแจ้งเตือน | Firmware Version must be >= 2.0.0 |
| Priority | Int | ระดับความสำคัญของการแจ้งเตือน | 0 | 1 |
| ค่าที่ส่งคืน | ชนิด | คำอธิบาย |
|---|---|---|
| AlertId | String | สตริง ID ของการแจ้งเตือนที่สร้างขึ้น |
let Alertid = device.notify("Really Important Issue", "Please Fix", 1);device.denotify()
หัวข้อที่มีชื่อว่า “device.denotify()”ลบการแจ้งเตือนที่ระบุหากมีอยู่
| พารามิเตอร์ | ชนิด | คำอธิบาย |
|---|---|---|
| AlertId | String | AlertId ที่ส่งคืนโดย 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);ข้อความ
หัวข้อที่มีชื่อว่า “ข้อความ”ข้อความของอุปกรณ์เป็นช่องทางในการส่งข้อมูลที่สำคัญแต่ไม่ร้ายแรงถึงขั้นทำให้ใช้งานไม่ได้ให้ผู้ใช้ทราบ ข้อความเหล่านี้จะปรากฏบนหน้าของอุปกรณ์เท่านั้น

device.addMessage()
หัวข้อที่มีชื่อว่า “device.addMessage()”เพิ่มข้อความอุปกรณ์ใหม่ด้วย MessageId ที่ระบุ
| พารามิเตอร์ | ชนิด | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
| messageId | string | MessageId ที่ผูกกับข้อความอุปกรณ์ | ”mymessage” |
| message | string | ข้อความที่จะแสดง | ”The message” |
| tooltip | string | ข้อความเพิ่มเติมที่แสดงเมื่อวางเมาส์ | ”Some more info” |
device.addMessage("message1", "Hey Dude you should know this", "Here's some extra info about it too");device.removeMessage()
หัวข้อที่มีชื่อว่า “device.removeMessage()”ลบข้อความที่สร้างด้วย MessageId ที่ระบุหากมีอยู่
| พารามิเตอร์ | ชนิด | คำอธิบาย |
|---|---|---|
| messageId | string | MessageId ที่จะลบ |
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");