发送的事件
可通过websocket向sdk发送的事件
Event | 描述 |
---|---|
getFirmVersion | 获取固件版本号 |
read | 读取事件(按键事件旋钮事件背景图片设置成功事件都要发了这个事件之后才会开始读取,连接后只需要发送一次) |
setBackgroundImg | 设置背景图(不同的设备背景图可能不同) |
setBackgroundImgData | 设置背景图通过字节数据(不同的设备背景图可能不同) |
clearAllIcon | 清空所有按键图标(建议在设置图标之前先发送该事件清理背景图) |
clearIcon | 清空某个按键图标 |
setKeyImg | 设置某个按键图标(不同设备图标尺寸不一样) |
setKeyImgData | 通过字节数据设置某个按键图标(不同设备图标尺寸不一样) |
setBrightness | 设置设备亮度(0-100) |
refresh | 刷新设备(设置图标后刷新才会显示,默认调用) |
getFirmVersion
获取固件版本号(base64格式)
{
"event": "getFirmVersion",
"path": path
}
成员 | 描述 |
---|---|
event | getFirmVersion |
path | 设备路径(唯一标识,设备的连接事件获取) |
read
读取事件(按键事件旋钮事件都要发了这个事件之后才会开始读取),建议websocket连接之后直接发送该事件启动事件监听,当设备断开连接后会自动停止监听
{
"event":"read",
"path":path
}
成员 | 描述 |
---|---|
event | read |
path | 设备路径(唯一标识,设备的连接事件获取) |
setBackgroundImg
设置背景图(不同的设备背景图可能不同),设置背景图的过程中不可发送其他事件,否则可能会花屏,需要接受背景图设置成功事件后才能发送其他事件(背景图片设置成功事件需要发送read后才有,所以read事件需要在setBackgroundImg之前发送)
{
"event":"setBackgroundImg",
"path":path,
"payload":{
"url":"E:\\img\\bg.jpg"
}
}
成员 | 描述 |
---|---|
event | setBackgroundImg |
path | 设备路径(唯一标识,设备的连接事件获取) |
payload | json对象 |
payload 对象包含以下成员:
payload | 描述 |
---|---|
url | 要设置的背景图的地址(293V2\293V3\N4背景图尺寸:800×480,N3背景图尺寸:320×240) |
setBackgroundImgData
设置背景图通过字节数据(不同的设备背景图可能不同),设置背景图的过程中不可发送其他事件,否则可能会花屏,需要接受背景图设置成功事件后才能发送其他事件(背景图片设置成功事件需要发送read后才有,所以read事件需要在setBackgroundImgData之前发送)
{
"event":"setBackgroundImgData",
"path":path,
"payload":{
"imgData":base64String
}
}
成员 | 描述 |
---|---|
event | setBackgroundImgData |
path | 设备路径(唯一标识,设备的连接事件获取) |
payload | json对象 |
payload 对象包含以下成员:
payload | 描述 |
---|---|
imgData | 要设置的bsae64格式的RGB字节数组(293V2\293V3\N4背景图尺寸:800×480,N3背景图尺寸:320×240) |
示例:
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = 800
canvas.height = 480
ctx.fillStyle = "pink";
ctx.fillRect(0, 0, 800, 480);
ctx.font = `${100}px'YaHei'`;
ctx.fillStyle = "white";
ctx.fillText("TEST", 150, 100);
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const byteArray = imageData.data; // 获取字节数组
// 将 RGBA 转换为 RGB(SDK里面用的是RGB通道)
const rgbByteArray = [];
for (let i = 0; i < byteArray.length; i += 4) {
rgbByteArray.push(byteArray[i+2], byteArray[i+1], byteArray[i]);
}
// 将 RGB 字节数组转换为 Base64
function byteArrayToBase64(byteArray) {
let binary = '';
for (let i = 0; i < byteArray.length; i++) {
binary += String.fromCharCode(byteArray[i]);
}
return btoa(binary); // 将二进制字符串转换为 Base64
}
const base64String = byteArrayToBase64(rgbByteArray);
const data = {
"event": "setBackgroundImgData",
"path": path,
"payload": {
"imgData": base64String,
}
};
ws.send(JSON.stringify(data));
clearAllIcon
清空所有按键图标(建议在设置图标之前先发送该事件清理背景图)
{
"event":"clearAllIcon",
"path":path
}
成员 | 描述 |
---|---|
event | clearAllIcon |
path | 设备路径(唯一标识,设备的连接事件获取) |
clearIcon
清空某个按键图标
{
"event":"clearIcon",
"path":path,
"payload":{
"key":1
}
}
成员 | 描述 |
---|---|
event | clearIcon |
path | 设备路径(唯一标识,设备的连接事件获取) |
payload | json对象 |
payload 对象包含以下成员:
payload | 描述 |
---|---|
key | 按键序号从1开始 |
setKeyImg
设置某个按键图标(不同设备图标尺寸不一样)
{
"event":"setKeyImg",
"path":path,
"payload":{
"url":"E:\\img\\icon.jpg",
"key":1,
"refresh":false
}
}
成员 | 描述 |
---|---|
event | setKeyImg |
path | 设备路径(唯一标识,设备的连接事件获取) |
payload | json对象 |
payload 对象包含以下成员:
payload | 描述 |
---|---|
url | 要设置的按键图标的地址 |
key | 要设置的按键序号从1开始 |
refresh | 是否刷新显示,选填参数,默认刷新显示,如果设置为false则需要调用refresh事件来刷新显示(主要用于批量设置图片一次刷新全部展示) |
TIP
293V2图片尺寸为:100×100
293V3图片尺寸为:112×112
N3图片尺寸为:64×64
N4图片尺寸为:112×112(按键),176×112(副屏)
setKeyImgData
通过字节数据设置某个按键图标(不同设备图标尺寸不一样)
{
"event":"setKeyImgData",
"path":path,
"payload":{
"imgData":base64String,
"key":1,
"refresh":false
}
}
成员 | 描述 |
---|---|
event | setKeyImgData |
path | 设备路径(唯一标识,设备的连接事件获取) |
payload | json对象 |
payload 对象包含以下成员:
payload | 描述 |
---|---|
imgData | 要设置的按键图标bsae64格式的RGB字节数组 |
key | 要设置的按键序号从1开始 |
refresh | 是否刷新显示,选填参数,不填则默认刷新显示,如果设置为false则需要调用refresh事件来刷新显示(主要用于批量设置图片一次刷新全部展示) |
TIP
293V2图片尺寸为:100×100
293V3图片尺寸为:112×112
N3图片尺寸为:64×64
N4图片尺寸为:112×112(按键),176×112(副屏)
示例:
const canvas = document.createElement("canvas");
const ctx = canvas.getContext("2d");
canvas.width = canvas.height = 100;
ctx.fillStyle = "black";
ctx.fillRect(0, 0, 100, 100);
ctx.font = `${35}px'YaHei'`;
ctx.fillStyle = "white";
ctx.fillText("tExt", 0, 50);
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const byteArray = imageData.data; // 获取字节数组
// 将 RGBA 转换为 RGB(SDK里面用的是RGB通道)
const rgbByteArray = [];
for (let i = 0; i < byteArray.length; i += 4) {
rgbByteArray.push(byteArray[i+2], byteArray[i+1], byteArray[i]);
}
// 将 RGB 字节数组转换为 Base64
function byteArrayToBase64(byteArray) {
let binary = '';
for (let i = 0; i < byteArray.length; i++) {
binary += String.fromCharCode(byteArray[i]);
}
return btoa(binary); // 将二进制字符串转换为 Base64
}
const base64String = byteArrayToBase64(rgbByteArray);
const data = {
"event": "setKeyImgData",
"path": path,
"payload": {
"imgData": base64String,
"key": 15
}
};
ws.send(JSON.stringify(data))
setBrightness
设置设备亮度(0-100)
{
"event":"setBrightness",
"path":path,
"payload":{
"brightness":100
}
}
成员 | 描述 |
---|---|
event | setBrightness |
path | 设备路径(唯一标识,设备的连接事件获取) |
payload | json对象 |
payload 对象包含以下成员:
payload | 描述 |
---|---|
brightness | 亮度(0-100) |
refresh
刷新设备(设置图标后刷新才会显示)
{
"event":"refresh",
"path":path
}
成员 | 描述 |
---|---|
event | refresh |
path | 设备路径(唯一标识,设备的连接事件获取) |