public static void Main() { Thread.Sleep(STARTUP_DELAY); TRACE("Main", "-- DataInjector v" + VERSION + "--"); string sensors; Init(); while (true) { Thread.Sleep(POLLING_PERIOD_MS); sensors = SDCard.ReadLine(); if (null == sensors) { continue; } if (!FifoBuffer.Push(sensors)) { TRACE("FifoBuffer.Push", "Buffer is full."); } } }
private static void Init() { // WiFi // WiFi = new WiFiClient(Defines.HOST_IP, Defines.HOST_PORT); WiFiThread = new Thread(WiFi.Run); WiFiThread.Start(); // SDCard // SDCard = new Logger(Defines.LOG_FILENAME, true); // Session ID // string new_session = "--- NEW SESSION {INJECTED_SCRIPT} VERSION {" + VERSION + "}---"; FifoBuffer.Push(new_session); }
private void SendData() { if (FifoBuffer.Count() == 0) { TRACE("SendData", "Buffer empty, skipping update."); return; } TRACE("SendData", "Attempting connection... {" + HostAddress.ToString() + "}"); Led.Write(true); try { Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sender.Connect(HostAddress); TRACE("SendData", "Connected."); while (FifoBuffer.Count() > 0) { byte[] outgoing_msg = Encoding.UTF8.GetBytes(FifoBuffer.Pop()); byte[] incoming_msg = new byte[RX_BUFFER_LENGTH]; int txbytes = sender.Send(outgoing_msg); int rxbytes = sender.Receive(incoming_msg); // ADD: OK/ERROR HANDLING IF NEEDED... TRACE("SendData", "Received: {" + new string(Encoding.UTF8.GetChars(incoming_msg)) + "}"); //TRACE("SendData", "Bytes sent: {" + txbytes.ToString() + "}. Bytes received: {" + rxbytes.ToString() + "}."); } sender.Close(); TRACE("SendData", "Connection terminated."); } catch (SocketException s) { TRACE("SendData", "SocketException: could not connect to server {" + s.ToString() + "}."); } catch (Exception e) { TRACE("SendData", "Exception: " + e.ToString()); } Led.Write(false); }