}
void loop() { webSocket.loop(); }
// //WebSocket客户端 处理 void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { switch(type) { case WStype_DISCONNECTED: break; case WStype_CONNECTED: { while(1){ //发送数据 String result =“”; //完整信息数据 String VStr,v1,v2,v3,v4 = “”; //存电压信息字符串 String IStr,i1,i2,i3,i4 = “”; //电流字符串 String PStr,p1,p2,p3,p4 = “”; //功率字符串 String QStr,q1,q2,q3,q4 = “”; //电量字符串 webSocket.sendTXT(“发送数据=》”); Serial.write(USART_TX_BUF,8); delay(500); //开始读数据 for(int i = 0; i<37;i++){ String byteData = “”; byteData = String(Serial.read(),HEX); //第i+1个字节数据 result += byteData; //第4~7个字节是电压信息 if(i == 3)v1=byteData; if(i == 4)v2=byteData; if(i == 5)v3=byteData; if(i == 6)v4=byteData; //第8~11个字节是电流信息 if(i == 7)i1=byteData; if(i == 8)i2=byteData; if(i == 9)i3=byteData; if(i == 10)i4=byteData; //第12~15个字节是功率信息 if(i == 11)p1=byteData; if(i == 12)p2=byteData; if(i == 13)p3=byteData; if(i == 14)p4=byteData; //第16~19个字节是电能信息 if(i == 15)q1=byteData; if(i == 16)q2=byteData; if(i == 17)q3=byteData; if(i == 18)q4=byteData; } webSocket.sendTXT(result);//websocket 发送完整的字节 //IM1266文档 发送的第一个字节是01 用于判断接受的数据是否有效 if(result.charAt(0)== ‘1’){ //将4位拼接在一起 组成一个完整的信息 VStr =v1+v2+v3+v4; IStr =i1+i2+i3+i4; PStr =p1+p2+p3+p4; QStr =q1+q2+q3+q4; //拼接json数据发送给服务器 String data = “{”; data += ““v”:”"; data += VStr;
data += "\",";
data += "\"i\":\"";
data += IStr;
data += "\",";
data += "\"p\":\"";
data += PStr;
data += "\",";
data += "\"q\":\"";
data += QStr;
data += "\"}";
webSocket.sendTXT(data);
delay(1000);
}
}
break;
case WStype_TEXT:
break;
case WStype_BIN:
break;
case WStype_PING:
break;
case WStype_PONG:
break;
}
} }
直接复制代码可以正常运行
### 2.代码解读
这是IM1266的文档。通过下列文档可知道需要先发送给IM1266发送数据01,03,00,48,00,08,C4,1A
然后IM1266会返回37个字节的数据。每个字节代表的数据可以在下面图片看到: ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c6329158a7424b9d9fbb437a3fbf8734.png)
发送给IM1266数据
unsigned char USART_TX_BUF[8]={0x01,0x03,0x00,0x48,0x00,0x08,0xC4,0x1A}; //发送给IM1266的数据 Serial.write(USART_TX_BUF,8);//串口发送 delay(500);//延迟 IM1266数据的读取频率是250ms
IM1266会返回37个字节的数据,串口每次读取一个字节的数据。写个循环读取每个字节的信息,将对应的几个字节信息拼接在一起组成原始的数据信息,然后发送给服务器(如:第4~7个字节是电压信息,将4-7个字节拼接在一起,就是电压的16进制信息),下列是代码说明:
for(int i = 0; i<37;i++){ String byteData = “”; byteData = String(Serial.read(),HEX); //第i+1个字节数据 result += byteData; //第4~7个字节是电压信息 if(i == 3)v1=byteData; if(i == 4)v2=byteData; if(i == 5)v3=byteData; if(i == 6)v4=byteData; //第8~11个字节是电流信息 if(i == 7)i1=byteData; if(i == 8)i2=byteData; if(i == 9)i3=byteData; if(i == 10)i4=byteData; //第12~15个字节是功率信息 if(i == 11)p1=byteData; if(i == 12)p2=byteData; if(i == 13)p3=byteData; if(i == 14)p4=byteData; //第16~19个字节是电能信息 if(i == 15)q1=byteData; if(i == 16)q2=byteData; if(i == 17)q3=byteData; if(i == 18)q4=byteData; } webSocket.sendTXT(result);//websocket 发送完整的字节 //IM1266文档 发送的第一个字节是01 用于判断接受的数据是否有效 if(result.charAt(0)== ‘1’){ //将4位拼接在一起 组成一个完整的信息 VStr =v1+v2+v3+v4; IStr =i1+i2+i3+i4; PStr =p1+p2+p3+p4; QStr =q1+q2+q3+q4; //拼接json数据发送给服务器 String data = “{”; data += ““v”:”"; data += VStr;
data += "\",";
data += "\"i\":\"";
data += IStr;
data += "\",";
data += "\"p\":\"";
data += PStr;
data += "\",";
data += "\"q\":\"";
data += QStr;
data += "\"}";
webSocket.sendTXT(data);
delay(1000);
}
接下来是websocket服务端获取数据并显示,我这里是使用php的webman框架写的websocket服务:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f51441f31cb9466884d43c6a2430e4ec.png)
完整的电压电流信息是16进制的数据除以1000
然后启动websocket服务,给esp8266通电:
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b32359f744ae448ebf5d913e9cc44061.png)
电能390是之前接吹风机然后的数据,第一次应该都是0;
这样我们完整的数据测试通过了,然后下期我们接上插座正常测试下数据信息。
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/0991a1b0781680c47137bfc081dfeaa5.png)
![img](https://img-blog.csdnimg.cn/img_convert/4284f3dde3cda51810a819b36756d19f.jpeg)
![img](https://img-blog.csdnimg.cn/img_convert/b6bfea0da320021fe5c3c5057592fe67.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!**
![img](https://img-blog.csdnimg.cn/img_convert/90c9a8bfc2442594b49d994d9326594e.png)
![img](https://img-blog.csdnimg.cn/img_convert/181845100384fe27b33097e6853d2ceb.png)
**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**
**如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)**
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
! (备注:嵌入式)**
# 最后
**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**
**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**
**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**
推荐阅读
发表评论