/// <summary> /// Deals with processing communication channels /// </summary> /// <param name="incomingbyte">a single byte of a command</param> public void IncomingCommand_Handle(char incomingbyte) { reader.addChar(incomingbyte); UpdateLifetime(); if (reader.usableInput) { ComData comdata = reader.getComData(); unhandledcommands.Add(comdata, this); } }
public Form1() { InitializeComponent(); mega = new Arduino("", 19200); DataInterpretor dataman = new DataInterpretor(); dataman.addString("{1,\"hallo, kaas\",5}"); ComData comdata = dataman.getComData(); int param1 = 0; string param2 = ""; int param3 = 0; comdata.Get(0, ref param1); comdata.Get(1, ref param2); comdata.Get(1, ref param3); Debug.Write(param1 + "," + param2 + "," + param3); /*StringEater eater = new StringEater(); * * eater.String("hallo there dude"); * eater.eatUntil(test); * * Debug.Write(eater.buffer);*/ tmrConnectionCheck.Enabled = true; }
/// <summary> /// Converts stringified ComData to comdata and moves it over /// </summary> /// <param name="rawcommand">A stringified ComData</param> /// <returns></returns> public bool Send(string rawcommand) { DataInterpretor reader = new DataInterpretor(); reader.addString(rawcommand); if (reader.usableInput) { ComData comdata = reader.getComData(); bool succession = Send(comdata); if (succession == true) { UpdateLifetime(); } return(succession); } else { return(false); } }
/// <summary> /// Incoming messages from clientss are processed here. /// </summary> /// <param name="message">Stringified version of ComData</param> public void SendMessage(string message) { //Process Stringified ComData data.addString(message); //Is it really usable (as ComData) if (data.usableInput) { //Get the comdata ComData comdata = data.getComData(); int senderID = 0; int receiverID = 0; int commandID = 0; string CurrentTime = DateTime.Now.ToString("HH:mm:ss"); comdata.Get(0, ref senderID); comdata.Get(1, ref receiverID); comdata.Get(2, ref commandID); //Is the command valid? if (commandID < 1) { MessagesList.Add(Commandslist.GenerateErrorMessage(senderID, 1, "Invalid command")); return; } //A message has been received by something, find device DeviceRegistry receiver = devices.FindByID(receiverID); //The receiver has not been registered in this system if (receiver == null) { //And the receiver is not supposed to be 'everyone' if (receiverID != -1) { //then stop the code.. //Add the message to return error to sender MessagesList.Add(Commandslist.GenerateErrorMessage(senderID, 1, "Invalid receiver")); return; } } //If this message is meant for this server if (receiverID == myserverID || receiverID == -1) { //Does not require a valid senderID //Switch base handshake commands dynamic result = Commandslist.ExecuteCommand(commandID, myserverID, senderID, receiverID, comdata, devices); //if result is a command if (result is ComData) { int param1 = 0; result.Get(0, ref param1); Console.WriteLine(param1); Console.WriteLine(message); MessagesList.Add(result); } } else//wasn't meant for this server { //TODO make code to transmit command to target } } else { string CurrentTime = DateTime.Now.ToString("HH:mm:ss"); Console.WriteLine("corrupted message received at " + CurrentTime); } }