用电脑使唤新知esp8266继电器开关灯C#(成为一个DIYer,二)

博客59篇,耿耿于怀!59分比60分好?

esp8266不能使用C#掌控,耿耿于怀!保持求知欲?

耿耿于怀,不怕被贼偷,就怕被贼惦记,我就是惦记计算机那个‘贼’。

在前面基础上,大太阳好几天,今天早上成了阴天,光在哪里?手机在哪里?先打开这个esp8266WiFi台灯,找什么找?骑驴找驴吗?计算机都搞定了,还要手机干嘛?手机还得手指戳好几下,c#的运行程序鼠标点一下就ok,好,搞定,灯亮了,让我们把c#的完整代码贡献上来,那个异步的网络tcpip套接字vc++通讯代码实在太难搞了,一大堆,这个c#好,入门简单,代码不多:

第一,创建一个c#form,然后添加引用

          using System.Net.Sockets;
           using System.Net;  

第二, 添加变量

             Socket clientsocket;
             EndPoint Endpoint;//ip地址和端口号,192.168.4.1,8080(区分esp8266的是WiFi名称的不同,ip地址和端口号可以固定死)

第三,在formload(...)函数中添加代码,初始化

          //202001292046更改为esp8266wifi开关灯
            byte[] ad = new byte[4];
            ad[0] = 192; ad[1] = 168; ad[2] = 4; ad[3] = 1;
            IPAddress ip = new IPAddress(ad);
            IPEndPoint endpoint = new IPEndPoint(ip,8080);
            Endpoint = endpoint;

第四,在form上添加‘开灯’按钮button,代码如下: 

      private void openlight_Click(object sender, EventArgs e)
        {
            clientsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
              clientsocket.Connect(Endpoint);
              if (clientsocket.Connected)
              {
                  byte[] openrelay = new byte[4];//close light
                  openrelay[0] = 0x0a0;
                  openrelay[1] = 0x01;
                  openrelay[2] = 0x01;
                  openrelay[3] = 0x0a2;
                  clientsocket.SendTo(openrelay, Endpoint);
              }
              clientsocket.Close();
        }

第五,在form上添加‘关灯’按钮button,代码如下:

  private void closelight_Click(object sender, EventArgs e)
        {
             clientsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
              clientsocket.Connect(Endpoint);
              if (clientsocket.Connected)
              {
                  byte[] openrelay = new byte[4];//close light
                  openrelay[0] = 0x0a0;
                  openrelay[1] = 0x01;
                  openrelay[2] = 0x00;
                  openrelay[3] = 0x0a1;
                  clientsocket.SendTo(openrelay, Endpoint);
              }
              clientsocket.Close();
        }

好了,搞定,需要解释的是开关灯中相同的代码:

 clientsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
              clientsocket.Connect(Endpoint);
              if (clientsocket.Connected){...} 
              clientsocket.Close();

原因是,你不知道esp8266WiFi什么时候自动踢掉你(原因是人家是服务器,你是客户端,人家不待见你时,就会踢掉你,可恶!这人情世故,好像也蛮有道理的,换做你自己,你也不可能无限连接吧!),这些相同的代码就是为了解决这个问题。另外程序运行时,记得先连接无线esp8266WiFi,(否则,自己怎么死的都不知道!)如图:

发布了66 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ganggangwawa/article/details/104121770