Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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);
 }
Esempio n. 4
0
        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);
        }