void SerialInterface::serialReadChar(char value) { rxBuffer.write(value); if(value==DEFAULT_LINEFEED){ char data[SERIAL_BUFFER_LENGTH]; for(int i=0;i<SERIAL_BUFFER_LENGTH;i++){ if(rxBuffer.isEmpty()){ data[i]=0; break; } data[i]=rxBuffer.read(); if(data[i]==DEFAULT_LINEFEED||i>=SERIAL_BUFFER_LENGTH-1){ data[i]=0; serialReadString(data); break; } } } }
void loop() { switch (rs485State) { case Rs485Loopback: serialReadString(); serialWriteString(); break; case Rs485RxTest: if (TIMER_COUNT_1S < timerCounter) { Serial.write("~!EloHello$75~"); timerCounter = 0; } break; case Rs485TxTest: serialReadString(); break; default: break; } // Create a client connection EthernetClient client = server.available(); if (client) { while (client.connected()) { if (client.available()) { char c = client.read(); //read char by char HTTP request if (readString.length() < 100) { //store characters to string readString += c; } //if HTTP request has ended if (c == '\n') { //controls the Arduino if you press the buttons if (readString.indexOf("?button485Loopback") >0) changeRs485Mode(Rs485Loopback); else if (readString.indexOf("?button485RxTest") >0) changeRs485Mode(Rs485RxTest); else if (readString.indexOf("?button485TxTest") >0) changeRs485Mode(Rs485TxTest); //clearing string for next read readString=""; client.println("HTTP/1.1 200 OK"); //send new page client.println("Content-Type: text/html"); client.println("Refresh: 5"); // refresh the page automatically every 5 sec client.println(); client.println("<HTML>"); client.println("<HEAD>"); refreshSection(client); client.println("<meta name='apple-mobile-web-app-capable' content='yes' />"); client.println("<meta name='apple-mobile-web-app-status-bar-style' content='black-translucent' />"); client.println("<link rel='stylesheet' type='text/css' href='http://randomnerdtutorials.com/ethernetcss.css' />"); client.println("<TITLE>RS-485 - RET tester</TITLE>"); client.println("</HEAD>"); client.println("<BODY>"); client.println("<H1>RS-485 - RET tester</H1>"); client.println("<hr />"); client.println("<br />"); client.println("<H2>RS-485 mode</H2>"); client.println("<a href=\"/?button485Loopback\"\">1. RS-485 Loopback</a>"); client.println("<a href=\"/?button485RxTest\"\">2. RS-485 RX Test</a>"); client.println("<a href=\"/?button485TxTest\"\">3. RS-485 TX Test</a>"); client.println("<br />"); client.println("<H2>RET Status</H2>"); // DC Voltage section // RS485 section client.print("<a style=\"background-color:#4DB257\">RS-485 mode: "); // client.print(rs485State); client.println("</a> <br />"); client.println("<br />"); // Last 10 received messages section client.print("<H2>Last "); client.print(MSG_BUFFER_SIZE); client.println(" received messages</H2>"); char counter = msgBuffer.counter; for(char i = 0; i < MSG_BUFFER_SIZE; ++i) { client.print(msgBuffer.readString[counter]); client.println("<br />"); if (--counter < 0) counter = MSG_BUFFER_SIZE-1; } client.println("<br />"); client.println("</BODY>"); client.println("</HTML>"); delay(1); //stopping client client.stop(); } } } } }