}

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获取!!! (备注:嵌入式)**

嵌入式 小白使用ESP8266 IM1266 电量计数模块获取数据通过websocket发送服务器(1)  第1张

# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

! (备注:嵌入式)**

嵌入式 小白使用ESP8266 IM1266 电量计数模块获取数据通过websocket发送服务器(1)  第1张

# 最后

**资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~**

**你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!**

**[更多资料点击此处获qu!!](https://bbs.csdn.net/topics/618376385)**

推荐阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: