im building an arduino project using Ethernet Shield as Telnet server connecting to server using php telnet class almost takes 3 seconds to load
add to that the sending commands time it ranges between 3 and 3.06 seconds though arduino response very well through a normal telnet clinets
i dont know where the problem exactly
this is my arduino code
#include <SPI.h>
#include <Ethernet.h>
#define MAX_CMD_LENGTH 25
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0xE3, 0x5B };
IPAddress ip(169, 254, 7, 155);
IPAddress gateway(169, 254, 7, 1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server = EthernetServer(23);
EthernetClient client;
boolean connected = false;
String cmd;
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(13, OUTPUT);
pinMode(7, INPUT_PULLUP);
}
void loop()
{
client = server.available();
if (client == true) {
if (!connected) {
client.flush();
connected = true;
server.println("--- Please Type on or off ---");
}
if (client.available() > 0) {
readTelnetCommand(client.read());
}
}
// check for input
if(digitalRead(7) == LOW) {
while(digitalRead(7) == LOW);
server.println("Input triggered :-)");
}
delay(10);
}
void readTelnetCommand(char c) {
if(cmd.length() == MAX_CMD_LENGTH) {
cmd = "";
}
cmd += c;
if(c == '\n') {
if(cmd.length() > 2) {
// remove \r and \n from the string
cmd = cmd.substring(0,cmd.length() - 2);
parseCommand();
}
}
}
void parseCommand() {
if(cmd.equals("quit")) {
client.stop();
connected = false;
} else if(cmd.equals("help")) {
server.println("--- Telnet Server Help ---");
server.println("on : switch on the Main Power");
server.println("off : switch off the Main Power");
server.println("quit : close the connection");
} else if(cmd.equals("on")) {
digitalWrite(13, HIGH);
server.println("--- Led Has Been Activated Ya FOX ---");
} else if(cmd.equals("off")) {
digitalWrite(13, LOW);
server.println("--- Led Has Been Deactivated Ya FOX ---");
} else {
server.println("Invalid command, type help");
}
cmd = "";
}
and im using this class i found on GitHub Php Telnet class
and this is my simple php script to turn a led on and off
<?php
require_once 'telnet.class.php';
$status = '';
$telnet = new Telnet();
if(!$telnet->connect())
{
echo "failed to connect";
}
if($_SERVER["REQUEST_METHOD"] == "POST")
{
if(isset($_POST["on"]))
{
$telnet->exec('on');
$status = "its ON";
}
if(isset($_POST["off"]))
{
$telnet->exec('off');
$status = "its OFF";
}
}
?>
<div id="controlshit">
<form action="test.php" method="post">
<div>
<input type="submit" value="on" name="on">
</div>
<div>
<input type="submit" value="off" name="off">
</div>
</form>
<div id="status">
<p><?php echo $status; ?></p>
</div>
</div>
you should use Socket, see here Telnet is a different protocol witch can give some problem, see here