Exemplo n.º 1
0
        //第一次建立连接自动返回GOOD
        //任务发送机器人自动回复FNISH
        //回复FNISH后才可以发送另外一个任务给机器人执行
        /// <summary>
        /// 机器人异步socket通讯连接
        /// </summary>
        /// <param name="IP"></param>
        /// <param name="port"></param>
        /// <returns></returns>
        public static bool RobotConnect(out TengDa.Communication.SocketTarNum rbskt, string IP, int port, int outTime)
        {
            bool       affirm = false; string ss = string.Empty; byte[] buffer = new byte[1024];
            IPEndPoint ipEndPoint  = new IPEndPoint(System.Net.IPAddress.Parse(IP), Convert.ToInt32(port));
            Socket     clienSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                clienSocket.ReceiveTimeout = outTime;
                clienSocket.Connect((EndPoint)ipEndPoint);
                clienSocket.Receive(buffer);
                ss = Encoding.ASCII.GetString(buffer, 0, buffer.Length);
                if (ss.Contains("GOOD"))//已经连接上,可以发送任务命令
                {
                    affirm = true;
                }
            }
            catch (Exception EX) { }
            finally
            {
                rbskt = new TengDa.Communication.SocketTarNum()
                {
                    clienSocket = clienSocket,
                    conAffirm   = affirm,
                    code        = ss
                };
            }
            return(affirm);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 机器人发送数据
        /// </summary>
        /// <param name="st"></param>
        /// <param name="address"></param>
        /// <returns></returns>
        public static string RobotSendAddress(TengDa.Communication.SocketTarNum rbskt, string address)
        {
            string rev = string.Empty;

            if (rbskt.conAffirm)
            {
                byte[] numArray = new byte[1024];
                byte[] bytes    = Encoding.ASCII.GetBytes(address);
                try
                {
                    rbskt.clienSocket.Send(bytes); rbskt.conAffirm = false;
                    //    rbskt.clienSocket.Receive(numArray);
                    rbskt.clienSocket.BeginReceive(asynchronousBuffer, 0, asynchronousBuffer.Length, SocketFlags.None, new AsyncCallback(ReceiveCallback), rbskt.clienSocket);
                    numArray = asynchronousBuffer;
                    rev      = Encoding.ASCII.GetString(numArray, 0, numArray.Length);
                }
                catch (Exception)
                {
                    return("");
                }
            }
            return(rev);
        }