private bool sendCS(byte[] Buf, UInt16 expectedCS, int size = 2) { bool wait = true; int equal = 0; int timeout = 0; byte[] expectedResponse = new byte[] { (byte)(expectedCS & 0xFF), (byte)(expectedCS >> 8) }; PortChat.GetInstance._packetsList.Clear(); PortChat.Send(Buf); try { //Debug.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString()); while (wait && timeout < MAX_TIMEOUT_CS) { if (PortChat.GetInstance._packetsList.Count != 0) { if (expectedCS == 0) { expectedResponse = new byte[] { 100, 0, 0, 200, 0, 0, 0, 27, 166 }; size = 9; } for (int i = 0; i < PortChat.GetInstance._packetsList.ElementAt(0).Count(); i++) { if (PortChat.GetInstance._packetsList.ElementAt(0)[i] == expectedResponse[i]) { equal++; } } if (equal == size) { wait = false; //for(int k = 0; k < size; k++) // Debug.WriteLine(" rcv " + (int)(PortChat.GetInstance._packetsList.ElementAt(k)[0])); } } timeout++; Thread.Sleep(1); } //Debug.WriteLine(DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString()); } catch { //Debug.WriteLine("Error: " + DateTime.Now.ToString() + "." + DateTime.Now.Millisecond.ToString()); } if (timeout == MAX_TIMEOUT_CS) { return(false); } else { return(true); } }
public bool erase() { Thread.Sleep(100); EventRiser.Instance.RiseEevent("Erase start"); wait = true; equal = 0; timeout = 0; PortChat.GetInstance._packetsList.Clear(); Debug.WriteLine(DateTime.Now.ToString("hh.mm.ss.ffffff")); expectedResponse = new byte[] { (byte)(_checkSum & 0xFF), (byte)(_checkSum >> 8) }; PortChat.Send(_header); while (wait && timeout < MAX_TIMEOUT) { if (PortChat.GetInstance._packetsList.Count != 0) { for (int i = 0; i < PortChat.GetInstance._packetsList.ElementAt(0).Count(); i++) { if (PortChat.GetInstance._packetsList.ElementAt(0)[i] == expectedResponse[i]) { equal++; } } if (equal == 2) { wait = false; } } timeout++; Thread.Sleep(200); } if (timeout == MAX_TIMEOUT) { EventRiser.Instance.RiseEevent(string.Format($"Erase fail")); PortChat.GetInstance.ReadTick((int)eSTATE.STOP); PortChat.GetInstance.CloseComunication(); return(false); } else { EventRiser.Instance.RiseEevent(string.Format($"Erase sucess")); } Debug.WriteLine(DateTime.Now.ToString("hh.mm.ss.ffffff")); return(true); }
public bool autobaud() { EventRiser.Instance.RiseEevent("Baud lock started"); byte[] A = new byte[1] { 65 }; expectedResponse = new byte[] { 65 }; wait = true; for (int i = 0; i < 3 && wait == true; i++) { wait = true; timeout = 0; PortChat.GetInstance._packetsList.Clear(); PortChat.Send(A); while (wait && timeout < MAX_TIMEOUT) { if (PortChat.GetInstance._packetsList.Count != 0) { if (PortChat.GetInstance._packetsList.ElementAt(0)[0] == expectedResponse[0]) { wait = false; break; } } timeout++; Thread.Sleep(60); } } if (timeout == MAX_TIMEOUT) { EventRiser.Instance.RiseEevent("Baud lock fail"); PortChat.GetInstance.ReadTick((int)eSTATE.STOP); PortChat.GetInstance.CloseComunication(); return(false); } else { EventRiser.Instance.RiseEevent("Baud lock sucess"); } return(true); }
public void ParseOutputData(object Data2Send, Int16 Id, Int16 SubId, bool IsSet, bool IsFloat) { char tempChar = (char)0; if (IsSet) { temp = new byte[11] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } ; else { temp = new byte[7] { 0, 0, 0, 0, 0, 0, 0 } }; temp[0] = 0x49; //PreambleLSByte temp[1] = 0x5d; //PreambleMsbyte temp[2] = (byte)(Id); // ID msb tempChar = (char)(tempChar | ((char)(((Id >> 8)) & 0x3F)) | (((char)(SubId & 0x3)) << 6)); temp[3] = (byte)tempChar; tempChar = (char)0; tempChar = (char)(tempChar | (char)(SubId >> 2)); temp[4] = (byte)tempChar; if (IsSet == false) // Set/Get { temp[4] |= (1 << 4); } if (IsFloat) // Float/Int { temp[4] |= (1 << 5); } if (IsSet == false) { //Risng up delegate , to call static function from CRC class ushort TempGetCrc = CrcInputCalc(temp.Take(5), 2); temp[5] = (byte)(TempGetCrc & 0xFF); temp[6] = (byte)((TempGetCrc >> 8) & 0xFF); PortChat.Send(temp); return; } if (Data2Send is double) //Data float { var datvaluevalue = BitConverter.GetBytes((float)(Data2Send is double?(double)Data2Send: 0)); temp[5] = (byte)(datvaluevalue[0]); temp[6] = (byte)(datvaluevalue[1]); temp[7] = (byte)(datvaluevalue[2]); temp[8] = (byte)(datvaluevalue[3]); } else if (Data2Send is int) //Data int { temp[5] = (byte)(((int)Data2Send & 0xFF)); temp[6] = (byte)(((int)Data2Send >> 8) & 0xFF); temp[7] = (byte)(((int)Data2Send >> 16) & 0xFF); temp[8] = (byte)(((int)Data2Send >> 24) & 0xFF); } else if (IsFloat) //Data float { float value = 0; float.TryParse((string)Data2Send, out value); byte[] _value = BitConverter.GetBytes(value); temp[5] = (byte)(_value[0]); temp[6] = (byte)(_value[1]); temp[7] = (byte)(_value[2]); temp[8] = (byte)(_value[3]); } else // String Value { if (Data2Send.ToString().Length != 0) { if (Data2Send.ToString().IndexOf(".") != -1) { Data2Send = Data2Send.ToString().Substring(0, Data2Send.ToString().IndexOf(".")); } try { var datvaluevalue = 0; Int32.TryParse(Data2Send.ToString(), out datvaluevalue); temp[5] = (byte)(((int)datvaluevalue & 0xFF)); temp[6] = (byte)(((int)datvaluevalue >> 8) & 0xFF); temp[7] = (byte)(((int)datvaluevalue >> 16) & 0xFF); temp[8] = (byte)(((int)datvaluevalue >> 24) & 0xFF); } catch { var datvaluevalue = 0; Int32.TryParse(Data2Send.ToString(), out datvaluevalue); temp[5] = (byte)(((int)datvaluevalue & 0xFF)); temp[6] = (byte)(((int)datvaluevalue >> 8) & 0xFF); temp[7] = (byte)(((int)datvaluevalue >> 16) & 0xFF); temp[8] = (byte)(((int)datvaluevalue >> 24) & 0xFF); } } } //Risng up delegate , to call static function from CRC class ushort TempCrc = CrcInputCalc(temp.Take(9), 2); // Delegate won temp[9] = (byte)(TempCrc & 0xFF); temp[10] = (byte)((TempCrc >> 8) & 0xFF); PortChat.Send(temp); }