“的目的是什么?”;num";在arduinoWebSockets中?

“的目的是什么?”;num";在arduinoWebSockets中?,websocket,arduino,esp8266,Websocket,Arduino,Esp8266,webSocket.sendTXT(num,“Connected”)中的num的用途是什么或在代码中使用的任何其他位置,它提供什么功能?因为它从未在任何地方被定义为任何东西,但它必须 作为函数参数传递,以使其工作 在void webSocketEvent(uint8\u t num、WStype\u t type、uint8\u t*有效负载、大小\u t长度)中,它被设置为一个函数参数 /* *WebSocketServer_LEDcontrol.ino * *创建日期:2015年11月26

webSocket.sendTXT(num,“Connected”)中的num的用途是什么或在代码中使用的任何其他位置,它提供什么功能?因为它从未在任何地方被定义为任何东西,但它必须
作为函数参数传递,以使其工作

void webSocketEvent(uint8\u t num、WStype\u t type、uint8\u t*有效负载、大小\u t长度)
中,它被设置为一个函数参数

/*
*WebSocketServer_LEDcontrol.ino
*
*创建日期:2015年11月26日
*
*/
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义LED_红色15
#定义LED_绿色12
#定义LED_蓝色13
#定义使用\u串行
ESP8266WiFiMulti WiFiMulti;
ESP8266WebServer服务器=ESP8266WebServer(80);
webSocket服务器webSocket=webSocket服务器(81);
无效webSocketEvent(uint8\u t num、WStype\u t type、uint8\u t*有效负载、大小\u t长度){
开关(类型){
案例WStype_断开:
使用_SERIAL.printf(“[%u]已断开连接!\n”,num);
打破
案例WStype_已连接:{
ip地址ip=webSocket.remoteIP(num);
使用_SERIAL.printf(“[%u]连接自%d.%d.%d url:%s\n”,num,ip[0],ip[1],ip[2],ip[3],有效负载);
//向客户端发送消息
sendTXT(num,“已连接”);
}
打破
案例WStype_文本:
使用_SERIAL.printf(“[%u]获取文本:%s\n”,num,有效负载);
如果(有效载荷[0]='#'){
//我们得到RGB数据
//解码rgb数据
uint32_t rgb=(uint32_t)strtol((const char*)和有效负载[1],NULL,16);
模拟写入(LED_红色,((rgb>>16)和0xFF));
模拟写入(LED_绿色,((rgb>>8)和0xFF));
模拟写入(LED_蓝色,((rgb>>0)和0xFF));
}
打破
}
}
无效设置(){
//使用_SERIAL.begin(921600);
使用_SERIAL.begin(115200);
//使用_SERIAL.setDebugOutput(true);
使用_SERIAL.println();
使用_SERIAL.println();
使用_SERIAL.println();
对于(uint8_t=4;t>0;t--){
使用_SERIAL.printf(“[SETUP]引导等待%d..\n”,t);
使用_SERIAL.flush();
延迟(1000);
}
引脚模式(LED_红色,输出);
引脚模式(LED_绿色,输出);
引脚模式(LED_蓝色,输出);
数码写入(LED红色,1);
数码写入(LED_绿色,1);
数码写入(LED_蓝色,1);
WiFiMulti.addAP(“SSID”、“passpasspass”);
while(WiFiMulti.run()!=WL_已连接){
延迟(100);
}
//启动webSocket服务器
begin();
webSocket.onEvent(webSocketEvent);
如果(MDNS.begin(“esp8266”)){
使用_SERIAL.println(“MDNS响应程序已启动”);
}
//句柄索引
服务器。在(“/”,[](){
//发送index.html
server.send(200,“text/html”,“var connection=new WebSocket('ws://'+location.hostname+':81/',['arduino']);connection.onopen=function(){connection.send('Connect'+new Date());};connection.onerror=function(error){console.log('WebSocket error',error);};connection.onmessage=function(e){console.log('server:',e.data);};函数sendRGB(){var r=parseInt(document.getElementById('r').value).toString(16);var g=parseInt(document.getElementById('g').value).toString(16);var b=parseInt(document.getElementById('b').value).toString(16);if(r.length<2){r='0'+r;}if(g.length<2){g='0'+g;}if(b.length<2){var rgb='#'+r+g+b;console.log('rgb:'+rgb);connection.send(rgb);}LED控件:

r:
g:
b:
”; }); server.begin(); //向MDN添加服务 addService(“http”,“tcp”,80); addService(“ws”,“tcp”,81); 数码写入(LED_红色,0); 数码写入(LED_绿色,0); 数码写入(LED_蓝色,0); } void循环(){ loop(); server.handleClient(); }
,它显示它是一个客户端id,因此您可以区分同时连接的多个客户端

/*
*向客户端发送文本数据
*@param num uint8\u t客户端id
*@param有效载荷uint8\u t*
*@参数长度大小\u t
*@param headerToPayload bool(有关更多详细信息,请参阅sendFrame)
*@如果确定,则返回true
*/
bool WebSocketsServer::sendTXT(uint8_t num,uint8_t*有效负载,大小长度,bool headerToPayload){
如果(num>=WEBSOCKETS\u服务器\u客户端\u最大值){
返回false;
}
如果(长度==0){
长度=strlen((常量字符*)有效载荷);
}
WSclient_t*client=&u clients[num];
if(客户端已连接(客户端)){
返回sendFrame(客户端、WSop_文本、有效负载、长度、false、true、headerToPayload);
}
返回false;
}
,它显示它是一个客户端id,因此您可以区分同时连接的多个客户端

/*
*向客户端发送文本数据
*@param num uint8\u t客户端id
*@param有效载荷uint8\u t*
*@参数长度大小\u t
*@param headerToPayload bool(有关更多详细信息,请参阅sendFrame)
*@如果确定,则返回true
*/
bool WebSocketsServer::sendTXT(uint8_t num,uint8_t*有效负载,大小长度,bool headerToPayload){
如果(num>=WEBSOCKETS\u服务器\u客户端\u最大值){
返回false;
}
如果(长度==0){
长度=strlen((常量字符*)有效载荷);
}
WSclient_t*client=&u clients[num];
if(客户端已连接(客户端)){
返回sendFrame(客户端、WSop_文本、有效负载、长度、false、true、headerToPayload);
}
返回false;
}