Ejemplo n.º 1
0
        private void sentDeliveryReport(string sentPackageId)
        {
            object[] parameters = new object[] { sentPackageId, lastPackageId.Equals(sentPackageId) };
            var      package    = new PackageViaWireless(0, true);

            package.DefineQueryAndParams(PackageConvertation.PACKAGE_CONFIRMATION_NAME, PackageConvertation.GetStrPatametersFromArray(parameters));
            SendPackage(package.GetPackage());
        }
Ejemplo n.º 2
0
        public void SendToServer(string QueryName, params object[] Parameters)
        {
            PackageViaWireless Package = new PackageViaWireless(0, true);

            Package.DefineQueryAndParams(QueryName, PackageConvertation.GetStrPatametersFromArray(Parameters));
            Package.ClientCode = User;
            ConnectionAgent.WaitingPackageID = Package.PackageID;
            ConnectionAgent.SendPackage(Package.GetPackage());
        }
Ejemplo n.º 3
0
        private bool Connect()
        {
            try
            {
                TCPClient = new TcpClient(IPAddress, PortNumber);
            }
            catch (Exception exc)
            {
                Console.WriteLine("Can't connect: " + exc.Message);
                return(false);
            }

            String ConnResult = "";

            try
            {
                TCPStream = TCPClient.GetStream();
                byte[] StreamTest = new byte[10];

                IAsyncResult NetStreamReadRes = TCPStream.BeginRead(StreamTest, 0, StreamTest.Length, null, null);

                if (NetStreamReadRes.AsyncWaitHandle.WaitOne(1500, false))
                {
                    int streamLength = TCPStream.EndRead(NetStreamReadRes);
                    ConnResult = Encoding.GetEncoding(1251).GetString(StreamTest, 0, streamLength);
                }
            }
            catch (Exception exc)
            {
                Console.WriteLine("Can't create the network stream: " + exc.Message);
                return(false);
            }
            if (ConnResult != "$M$_$ERVER")
            {
                return(false);
            }

            SetConnectionStatus(true);
            if (Client.User != 0)
            {
                PackageViaWireless Package = new PackageViaWireless(0, true);
                Package.DefineQueryAndParams("ConnectionRecovery", "");
                Package.ClientCode = Client.User;
                SendPackage(Package.GetPackage());
            }
            // Запуск пинга сервера

            //PingAgent = new CallTimer(PingServer, 500);
            return(true);
        }
Ejemplo n.º 4
0
        private void InformFileAccepted(bool update)
        {
            // Отправка сообщение серверу, что файл получен
            PackageViaWireless Package = new PackageViaWireless(Client.User, true);

            Package.DefineQueryAndParams("FileAccepted", "");
            SendPackage(Package.GetPackage());
            System.Threading.Thread.Sleep(1000);
            if (update)
            {
                lock (Client)
                {
                    Client.TryToUpdate();
                }
            }
        }
Ejemplo n.º 5
0
        public object[] PerformQuery(string QueryName, params object[] Parameters)
        {
            PackageViaWireless Package = new PackageViaWireless(0, true);

            Package.DefineQueryAndParams(QueryName, PackageConvertation.GetStrPatametersFromArray(Parameters));
            Package.ClientCode = User;
            ConnectionAgent.WaitingPackageID = Package.PackageID;
            ConnectionAgent.Executed         = false;
            MainForm.ShowQueryWait();
            if (ConnectionAgent.SendPackage(Package.GetPackage()))
            {
                while (!ConnectionAgent.RequestReady & ConnectionAgent.OnLine)
                {
                    Thread.Sleep(300);
                }

                MainForm.ShowQueryComplated();

                if (ConnectionAgent.Package == null || !ConnectionAgent.Executed)
                {
                    Process.ShowMessage("Пропала связь с сервером!");
                    return(null);
                }
                if (ConnectionAgent.Package.Parameters == "#ERROR:1C_AGENT_DISABLE#")
                {
                    ConnectionAgent.Package.Parameters = string.Empty;
                    ConnectionAgent.RequestReady       = false;
                    Process.ShowMessage("1С-агент неактивен. Обратитесь к оператору!");
                    return(null);
                }
                object[] result = PackageConvertation.GetPatametersFromStr(ConnectionAgent.Package.Parameters);

                ConnectionAgent.RequestReady = false;

                if (result.Length == 0)
                {
                    return(null);
                }
                if (result.GetType() == typeof(object[]) && result.Length == 1 && result[0] == null)
                {
                    return(null);
                }
                return(result);
            }
            return(null);
        }
Ejemplo n.º 6
0
        private void ReadPackages()
        {
            #region Define local variables

            string StorekeeperQuery = "", StorekeeperQueryHead = "";

            //Byte[] emptyData = System.Text.Encoding.GetEncoding(1251).GetBytes("");

            //int streamLength;

            #endregion

            while (wifiEnabled)
            {
                #region Getting package

                if (PackageViaWireless.isCompletelyPackage(StorekeeperQueryHead))
                {
                    StorekeeperQuery     = StorekeeperQueryHead;
                    StorekeeperQueryHead = "";
                }
                else
                {
                    StorekeeperQuery = ReadStream();
                    WriteToFile(" << ReadStream [" + StorekeeperQuery + "]", false);
                }


                Package = null;
                if (StorekeeperQuery == null)
                {
                    return;
                }

                StorekeeperQuery = StorekeeperQueryHead + StorekeeperQuery;

                if (!PackageViaWireless.isCompletelyPackage(StorekeeperQuery))
                {
                    StorekeeperQueryHead = StorekeeperQuery;
                    continue;
                }

                WriteToFile(" << Read Query [" + StorekeeperQuery + "]", false);
                try
                {
                    Package = new PackageViaWireless(StorekeeperQuery, out StorekeeperQueryHead);
                }
                catch (Exception exp)
                {
                    string.Format("", exp.Message);
                }

                if (PackageConvertation.PACKAGE_CONFIRMATION_NAME.Equals(Package.QueryName))
                {
                    sentDeliveryReport(PackageConvertation.GetPatametersFromStr(Package.Parameters)[0] as string);
                    continue;
                }

                lastPackageId = Package.PackageID;
                sentDeliveryReport(lastPackageId);

                StorekeeperQuery = "";

                #endregion

                #region Pinging server

                Trace.WriteLine(string.Format("Pack id: {0};\tquery = {1};\t{2}", Package.PackageID, Package.QueryName, DateTime.Now.ToString("mm:ss")));

                if (Package.QueryName == "Ping")
                {
                    Package.QueryName = "PingReply";
                    SendPackage(Package.GetPackage());
                    continue;
                }

                if (Package.QueryName == "PingReply")
                {
                    WriteToFile("? ShowPingResult");
                    DataRepresent.ShowPingValue(PackageConvertation.GetPatametersFromStr(Package.Parameters)[0] as string);
                    //Client.MainForm.ShowPingResult(PackageConvertation.GetPatametersFromStr(Package.Parameters)[0] as string);
                    WriteToFile("OK ShowPingResult");

                    continue;
                }

                #endregion

                if (Package.QueryName == "KeyPressing")
                {
                    SendKeyCode = (int)PackageConvertation.GetPatametersFromStr(Package.Parameters)[0];
                    var CallTimer = new CallTimer(SendKey, 1, true);
                    continue;
                }

                if (Package.QueryName == "BarcodeEvent")
                {
                    SendBarcode = PackageConvertation.GetPatametersFromStr(Package.Parameters)[0] as string;
                    var CallTimer = new CallTimer(SendKey, 1, true);
                    continue;
                }

                if (Package.QueryName == "TimeSynchronization")
                {
                    SetTime(PackageConvertation.GetPatametersFromStr(Package.Parameters)[0] as string);
                    continue;
                }

                if (Package.QueryName == "FileTransmit")
                {
                    object[] Params = PackageConvertation.GetPatametersFromStr(Package.Parameters);
                    StorekeeperQueryHead = AcceptFile(Params[0] as string, (int)Params[1], StorekeeperQueryHead, Convert.ToBoolean(Params[2]));
                    continue;
                }

                #region Message handling

                if (Package.QueryName == "Message")
                {
                    object[] Parameters = PackageConvertation.GetPatametersFromStr(Package.Parameters);
                    System.Windows.Forms.MessageBox.Show(Parameters[0] as string);

                    // В параметры записывается только ID, текс сообщения уже не нужен
                    Package.Parameters = ((int)Parameters[1]).ToString();
                    SendPackage(Package.GetPackage());
                    continue;
                }
                #endregion

                #region PackageHandling
                if (Package.PackageID != WaitingPackageID)
                {
                    continue;
                }
                Executed     = true;
                RequestReady = true;
                requestReadyTrigger.Set();
                requestReadyTrigger.WaitOne();

                while (RequestReady)
                {
                    Thread.Sleep(100);
                }
                #endregion
            }
        }
Ejemplo n.º 7
0
        public object[] PerformQuery(string QueryName, params object[] Parameters)
        {
            Current.LastQueryIsSuccessfull = false;
            if (!Current.OnLine && Current.MainForm.IsMainThread)
            {
                //"Нет подключения к серверу".Warning();
                return(null);
            }

            PackageViaWireless Package = new PackageViaWireless(0, true);

            Package.DefineQueryAndParams(QueryName, PackageConvertation.GetStrPatametersFromArray(Parameters));
            Package.ClientCode = User;
            ConnectionAgent.WaitingPackageID = Package.PackageID;
            ConnectionAgent.Executed         = false;
            MainForm.ShowQueryWait();
            if (ConnectionAgent.SendPackage(Package.GetPackage()))
            {
                var stopWatch = new Stopwatch();
                stopWatch.Start();
                while (!ConnectionAgent.RequestReady & ConnectionAgent.OnLine)
                {
                    Thread.Sleep(300);

                    const int MAX_WAIT_TIME_MILISEC = 5000;
                    if (stopWatch.ElapsedMilliseconds > MAX_WAIT_TIME_MILISEC)
                    {
                        RemoteCallDialog.WaitForServerResponse();
                        break;
                    }
                }

                if (!Current.ConnectionAgent.WifiEnabled)
                {
                    Thread.Sleep(1000);
                    Current.StartConnectionAgent();
                }

                MainForm.ShowQueryComplated();

                if (ConnectionAgent.Package == null || !ConnectionAgent.Executed)
                {
                    "Пропала связь с сервером!".ShowMessage();
                    return(null);
                }
                //if (ConnectionAgent.Package.Parameters == "#ERROR:1C_AGENT_DISABLE#")
                //    {
                //    ConnectionAgent.Package.Parameters = string.Empty;
                //    ConnectionAgent.RequestReady = false;
                //    "1С-агент неактивен. Обратитесь к оператору!".ShowMessage();
                //    return null;
                //    }
                object[] result = PackageConvertation.GetPatametersFromStr(ConnectionAgent.Package.Parameters);

                ConnectionAgent.RequestReady = false;

                if (result.Length == 0 ||
                    (result.GetType() == typeof(object[]) && result.Length == 1 && result[0] == null))
                {
                    return(null);
                }

                LastQueryIsSuccessfull = true;
                return(result);
            }
            return(null);
        }