Example #1
0
        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");
        }
Example #2
0
        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;
            }
        }