Пример #1
0
        /*public void SendCommand(String Commands, String Address, String Data)
         * {
         *  string FCS;
         *  string input = "00" + Commands + Address + Data;
         *  char[] values = input.ToCharArray();
         *  char[] first = "@".ToCharArray();
         *  int sum = first[0];
         *  foreach (char letter in values)
         *  {
         *      sum = letter ^ sum;
         *  }
         *  FCS = Convert.ToString(sum, 16);
         *  string sendcommand = "@00" + Commands + Address + Data + FCS + "*\r\n";
         *  Comports.WriteLine(sendcommand);    //写入数据
         * }*/
        private int CommandTrant2(String Commands, String Address, String Data)
        {
            try
            {
                //FCS转换
                string FCS;
                int    temp;
                temp     = Convert.ToInt32(Data);
                Data     = Convert.ToString(temp, 16);
                Data     = Data.PadLeft(4, '0');
                Commands = Commands.ToUpper();
                Address  = Address.ToUpper();
                Data     = Data.ToUpper();
                string input  = "00" + Commands + Address + Data;
                char[] values = input.ToCharArray();
                char[] first  = "@".ToCharArray();
                int    sum    = first[0];
                foreach (char letter in values)
                {
                    sum = letter ^ sum;
                }
                FCS = Convert.ToString(sum, 16);

                //发送指令
                string sendcommand = "@00" + Commands + Address + Data + FCS.ToUpper() + "*\r\n";
                //Console.Write(sendcommand);

                string FCS2;
                string input2  = "00" + Commands + "00";
                char[] values2 = input2.ToCharArray();
                char[] first2  = "@".ToCharArray();
                int    sum2    = first2[0];
                foreach (char letter2 in values2)
                {
                    sum2 = letter2 ^ sum2;
                }
                FCS2 = Convert.ToString(sum2, 16);
                Comports.WriteLine(sendcommand);
                result = null;
                Thread.Sleep(70);
                Console.Write("正确输出:" + "@00" + Commands + "00" + FCS2.ToUpper() + "*\n");
                int count = 0;
                while (result != "@00" + Commands + "00" + FCS2.ToUpper() + "*")
                {
                    if (result == "@00WD0152*")
                    {
                        return(0);
                    }

                    //Console.Write("实际输出:" + result);
                    Comports.WriteLine(sendcommand);
                    //Thread.Sleep(20);
                    count++;
                    if (count == 3)
                    {
                        OpenComPortSig = false;
                        return(-1);
                    }

                    // Console.Write("输入命令:" + sendcommand + "\n");
                }
                return(0);
                //Console.Write("最后输出:" + result);
            }
            catch
            {
                return(-1);
            }
        }