极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12222|回复: 1

关于MsTimer2与Ethernet冲突的问题

[复制链接]
发表于 2016-5-20 14:03:25 | 显示全部楼层 |阅读模式
本帖最后由 Cimate 于 2016-5-20 14:07 编辑

我现在用MsTimer2实现每隔1秒通过TCP socket向服务器发送数据,arduino再开个TCP服务器端,当接收到客户端发送online?服务器就返回1234,我用电脑的TCP/UDP软件连接arduino时,每隔1秒发送online?这时会收到1234,但没过多久就收不到了。但,如果我把MsTimer2那段代码去掉,又很正常了
代码如下:

#include <SPI.h>
#include <Ethernet.h>
#include <MsTimer2.h>

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
IPAddress Pserver(192,168,1,200);

EthernetClient client;
EthernetServer server(15000);

void heard()
{

   client.println("OK1234");
}


void setup() {
  Serial.begin(9600);
  Ethernet.begin(mac, ip);
  Serial.println(Ethernet.localIP());
  server.begin();
  if (client.connect(Pserver,16000)){
    Serial.println("connected");
  }
  MsTimer2::set(10000, heard);
   MsTimer2::start();
}

void loop() {
  
  String msg="";

        EthernetClient client = server.available();
  if (client) {
    while (client.connected()&&client.available()>0) {
    char c = client.read();
    msg+=c;
  }
  if(msg.equals("online?")){
          server.print("1234");
  }
  }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2018-1-2 15:25:39 | 显示全部楼层
不知这样可不可以,
boolean flag=false;
void heard()
{
  flag=true;
  
}
void loop() {
  
  String msg="";

        EthernetClient client = server.available();
  if (client) {
          while (client.connected()&&client.available()>0) {
                     char c = client.read();
                      msg+=c;
                  }
               if(msg.equals("online?")){
                         server.print("1234");
                     }
            }
   if(flag)
                {
                           flag=false;
                         client.println("OK1234");
                }
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 11:13 , Processed in 0.039616 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表