private void btnStart_Click(object sender, EventArgs e) { if (m_fIsRunning) { m_serCresnet.Close(); btnStart.Text = "Start"; m_fIsRunning = false; } else { if (string.IsNullOrEmpty(txtDeviceId.Text)) { m_bDevId = 0; } else if (!byte.TryParse(txtDeviceId.Text, NumberStyles.AllowHexSpecifier, null, out m_bDevId)) { MessageBox.Show("Invalid Device ID", "Cresnet Monitor", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!OpenPort((string)selComPort.SelectedItem, ref m_serCresnet)) { return; } m_lstMessage = new List <byte>(MessageSize); m_state = SerialState.Searching; btnStart.Text = "Stop"; m_fIsRunning = true; new Thread(CresNetProcessByte).Start(); } }
public State(SerialState ss, ObjectCollection objectCollection) { stateObjects = new Dictionary<int, StateObject>(); grid = GameObject.FindGameObjectWithTag(GRID_TAG); stateObjectButtonTemplate = (GameObject)Resources.Load(STATE_OBJECT_BUTTON_NAME); name = ss.name; id = ss.id; InitializeStateObjects(ss, objectCollection); }
public WiFiTracker(int trackerID) { TrackerID = trackerID; ComPort = null; Serial = null; serialState = SerialState.Idle; countMacsForReceive = 0; macList = new List <PhysicalAddress>(); data = ""; }
void ShowMessage() { byte bDest; bDest = m_bDestId == MasterAddr ? m_bSendId : m_bDestId; if (m_bDevId == 0 || bDest == m_bDevId) { BeginInvoke(DisplayMessageDelegate, FormatMessage(m_lstMessage), bDest, m_bDestId == MasterAddr); } m_lstMessage.Clear(); m_state = SerialState.Ready; }
public void SetUp(SerialState s) { stateObjects = new List<GameObject>(); name = s.name; id = s.id; foreach (SerialStateObject sso in s.stateObjects) { GameObject currentStateObjectGO = FileLoader.loadPrefab(sso.modelName); currentStateObjectGO = Instantiate(currentStateObjectGO); StateObject currentStateObject = currentStateObjectGO.AddComponent<StateObject>(); currentStateObjectGO.transform.SetParent(transform); currentStateObject.SetUp(sso); stateObjects.Add(currentStateObjectGO); } }
private void InitializeStateObjects(SerialState serialState, ObjectCollection objectCollection) { foreach (SerialStateObject s in serialState.stateObjects) { foreach (GameObject g in objectCollection.GetUserObjects()) { if (g.name.Equals(s.modelName)) { GameObject toSpawn = MonoBehaviour.Instantiate(g); StateObject stateObject = new StateObject(toSpawn); s.InitializeStateObject(stateObject); AddToState(stateObject); nextStateObjectId = Mathf.Max(s.id, nextStateObjectId); Debug.Log(id + ", " +s.id); break; } } } nextStateObjectId++; }
public List <PhysicalAddress> Collect() { macList.Clear(); StartSerialConnection(); Serial.WriteLine(SerialMessageParser.Encode("DISCOVERY")); Console.WriteLine("1"); serialState = SerialState.Initialize; while (serialState == SerialState.Initialize) { } System.Threading.Thread.Sleep(1000); Serial.Write(SerialMessageParser.Encode("COLLECT")); Console.WriteLine("2"); serialState = SerialState.Collecting; while (serialState == SerialState.Collecting || serialState == SerialState.Receiving) { } Console.WriteLine("99"); Serial.Close(); Serial.Dispose(); return(macList); }
// Executed in a different thread void CresNetProcessByte() { byte b; while (m_serCresnet.IsOpen) { try { b = (byte)m_serCresnet.ReadByte(); switch (m_state) { case SerialState.Searching: if (b == 0) { m_state = SerialState.Ready; } break; case SerialState.Ready: if (b >= MinMsgAddr && b < MaxMsgAddr) { m_state = SerialState.Addressed; m_bDestId = b; if (b != MasterAddr) { m_bSendId = b; } } else if (b != 0) { m_state = SerialState.Searching; } // Leave in Ready state if zero break; case SerialState.Addressed: if (b > MaxMsgSize) { m_state = SerialState.Searching; } else if (b != 0) { m_iMsgSize = b; m_state = SerialState.Payload; } else { m_state = SerialState.Ready; // Count polling cycles if (m_bDestId != MasterAddr) { // Choose an ID to represent the polling cycle if (m_bPollId == 0) { m_bPollId = m_bDestId; } if (m_bDestId == m_bPollId) { BeginInvoke(DisplayMessageDelegate, null, (byte)0, false); } } } break; case SerialState.Payload: m_lstMessage.Add(b); m_iMsgSize--; if (m_iMsgSize == 0) { ShowMessage(); } break; } } catch (Exception exc) { Debug.WriteLine("Exception in CresNetProcessByte: " + exc.Message); return; } } }
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; } }
public ProjectState ToSerial() { ProjectState project = new ProjectState(); List<SerialState> serialStates = new List<SerialState>(); Dictionary<int, State>.Enumerator enumerator = stateList.GetEnumerator(); while (enumerator.MoveNext()) { SerialState serialState = new SerialState(enumerator.Current.Value); serialStates.Add(serialState); } project.serialStates = serialStates; return project; }