private void SerialPortAutoDiscover(object sender, SerialDataReceivedEventArgs e) { Console.WriteLine("AutoDiscover readline"); Console.WriteLine(autoDiscoverPort); int nodeid = 0; //TODO try catch serial disconnected/notfound string data = autoDiscoverPort.ReadExisting(); if (SerialMessageParser.Parse(data).StartsWith("NodeMcu")) { data = SerialMessageParser.Parse(data); int.TryParse(SerialMessageParser.GetValue(data), out nodeid); Console.WriteLine(data); } if (nodeid != 0) { Console.WriteLine("NodeMCU found"); autoDiscoverPort.Write(SerialMessageParser.Encode("ACK")); trackers.Add(autoDiscoverPort.PortName, nodeid); autoDiscoverPort.Close(); } Console.WriteLine("yeet"); }
private void SerialPortDataReceived(object sender, SerialDataReceivedEventArgs e) { Console.WriteLine("3"); data = SerialMessageParser.Parse(Serial.ReadExisting()); Console.WriteLine(data); Console.WriteLine(ComPort); Console.WriteLine(serialState); if (data.Contains("HEARTBEAT")) { Serial.Write(SerialMessageParser.Encode("ACK")); data = ""; } switch (serialState) { case SerialState.Idle: break; case SerialState.Initialize: Console.WriteLine("6"); if (data.StartsWith("NodeMcu")) { Console.WriteLine("7"); Serial.Write(SerialMessageParser.Encode("ACK")); Console.WriteLine("Nodemcu ack"); serialState = SerialState.Idle; } else if (data.Contains("HEARTBEAT")) { Console.WriteLine("8"); Serial.Write(SerialMessageParser.Encode("ACK")); Serial.Write(SerialMessageParser.Encode("COLLECT")); serialState = SerialState.Collecting; } break; case SerialState.Collecting: Console.WriteLine("HALLO YEET HIER BEN IK"); Console.WriteLine(data); Console.WriteLine("9"); if (data.StartsWith("DONE:")) { Console.WriteLine("10"); Console.WriteLine("gedont"); Int32.TryParse(SerialMessageParser.GetValue(data), out countMacsForReceive); Serial.Write(SerialMessageParser.Encode("ACK")); Serial.Write(SerialMessageParser.Encode("SEND")); serialState = SerialState.Receiving; } break; case SerialState.Receiving: Console.WriteLine("11"); if (data.Contains("HEARTBEAT")) { Console.WriteLine("12"); Serial.Write(SerialMessageParser.Encode("ACK")); Serial.Write(SerialMessageParser.Encode("SEND")); } Console.WriteLine("Receiving"); if (data == "ACK") { Console.WriteLine("13"); Serial.Write(SerialMessageParser.Encode("ACK")); } if (data.StartsWith("MAC:")) { try { //data = data.Substring(4); //data = data.Replace(':', '-').ToUpper(); macList.Add(PhysicalAddress.Parse(data.Substring(4).Replace(':', '-').ToUpper())); Serial.Write(SerialMessageParser.Encode("ACK")); } catch (FormatException) { Serial.Write(SerialMessageParser.Encode("NACK")); } } else if (data == "FINISH") { //TODO check macList.Count == countMacsForReceive (not in WiFiTracker yet) serialState = SerialState.Idle; } break; default: break; } }