public FrameMainData returnFrameData(string message, byte stationAdress) { if (message.Length > 9) { if (string.IsNullOrEmpty(message) || message[0] != ':') { return(null); } byte adress = byte.Parse(message.Substring(1, 2), NumberStyles.HexNumber); if (adress != (byte)0) { if (stationAdress != adress) { return(null); } } byte code = byte.Parse(message.Substring(3, 2), NumberStyles.HexNumber); byte lrc = byte.Parse(message.Substring(message.Length - 4, 2), NumberStyles.HexNumber); string msg = message.Substring(5, message.Length - 5 - 4); if (lrc != convertLRC((byte)adress, (byte)code, hexToString(msg))) { return(null); } FrameMainData frameMainData = new FrameMainData(adress, code, msg); return(frameMainData); } return(null); }
public FrameMainData(FrameMainData data) { adress = data.adress; code = data.code; msg = data.msg; }
public void slaveReceive() { string frameRcv; frameTime.Restart(); //odliczamy czas wczytywania ramki //wczytanie lini z serial portu do napotkania \n bez wczytania \n string msg = frameRcv = serialPort.ReadLine() + "\r\n"; //\n dodajemy ręcznie, żeby data.Length nie był 0 frameTime.Stop(); //zatrzymujemy odliczanie wczytywania ramki /*frameTime zwracamy w milisekundach i przeliczamy na ile milisekund przypada 1 znak z wczytanej ramki * po czym sprawdzamy czy nie przekracza ograniczeniea czasowego na odstęp pomiędzy znakami ramki*/ if (frameTime.ElapsedMilliseconds / msg.Length > Convert.ToInt32(frameSpace)) { MessageBox.Show("Przekroczono ograniczenie czasowe na odstęp pomiędzi znakami ramki"); return; } FrameMainData frameData = outFunctions.returnFrameData(msg, slaveStationAdress); if (frameData == null) { return; } if (frameData.adress == 0) { slaveReceiveTxt(msg); return; } else { if (slaveStationAdress != frameData.adress) { return; } else { if (frameData.code == (byte)1) { if (richTextBoxMasterReceiveFrame.InvokeRequired) { Action act = () => richTextBoxMasterReceiveFrame.Text += frameRcv; Invoke(act); //wywołanie delegata } else { richTextBoxMasterReceiveFrame.Text += frameRcv; } slaveReceiveTxt(msg); } else if (frameData.code == (byte)2) { sendSlaveFrame(); } else { MessageBox.Show("Zła wartość rozkazu"); } } } }