Пример #1
0
        //TSDUtils.CustomEncodingClass CustomEncodingClass MyEncoder = new CustomEncodingClass();
        public DataLoaderClass()
        {
            
            productsDataSet1 = new ProductsDataSet();
            productAdapter = new TSDServer.ProductsDataSetTableAdapters.ProductsTblTableAdapter(productsDataSet1);
            docsAdapter = new TSDServer.ProductsDataSetTableAdapters.DocsTblTableAdapter(productsDataSet1);
            scannedDs = new TSDServer.ScannedProductsDataSet();
            scannedTA = new TSDServer.ScannedProductsDataSetTableAdapters.ScannedBarcodesTableAdapter(scannedDs);
            SetFormats();
            sendmail = Program.sendmail;


           // mEvt.Set();
            

        }
Пример #2
0
        static int Main(string[] args)
        {

            System.IO.FileInfo fi = new System.IO.FileInfo(
                            System.IO.Path.Combine(Application.StartupPath,
                            "log4netconfig.xml"));
            XmlConfigurator.Configure(fi);
            


            sendmail = new SendMailAttach.SendMailClass(Properties.Settings.Default.AddressFrom,
                Properties.Settings.Default.UserNameFrom,
                false,
                Properties.Settings.Default.SmtpClient);


            if (args.Length > 0 && args[0].ToLower() == "/c")
            {
                if (args.Length == 4 && args[0].ToLower() == "/c")
                {
                    try
                    {
                        InProductName = args[1];
                        InDocName = args[2];
                        Properties.Settings.Default.LocalFilePath = args[3];
                        
                        

                        DataLoaderClass loader = new DataLoaderClass();
                        loader.OnFinishImport += new DataLoaderClass.FinishImport(loader_OnFinishImport);
                        mEvt.Reset();
                        loader.AutoLoadProduct(InProductName);

                        if (mEvt.WaitOne(1000 * 15 * 60, false) == false)
                        {
                            Console.WriteLine("ERROR LOAD PRODUCT - TIMEOUT");
                            return (int)ERRORLEVELS.TimeOut;
                        }

                        mEvt.Reset();
                        loader.AutoLoadDoc(InDocName);

                        if (mEvt.WaitOne(1000 * 15 * 60, false) == false)
                        {
                            Console.WriteLine("ERROR LOAD DOCS - TIMEOUT");
                            return (int)ERRORLEVELS.TimeOut;
                        }
                        return (int)ERRORLEVELS.NoError;
                    }
                    catch (Exception err)
                    {
                        log.Fatal(err);
                        
                        sendmail.SendMail(
                            new string[] { "", "Ошибка загрузки данных", err.ToString(), 
                                Properties.Settings.Default.AddressToList, "", "" });
                        MessageBox.Show(err.ToString());
                        return (int)ERRORLEVELS.SomeException;
                    }

                }
                else
                    return (int)ERRORLEVELS.IncorrectParametrs;
            }
            #region oldtest
            /*ProductsDataSet ds = new ProductsDataSet();
            
            using (System.IO.StreamWriter wr = new System.IO.StreamWriter("documents1.txt"))
            {
                using (ProductsDataSetTableAdapters.DocsBinTblTableAdapter ta =
                    new TSDServer.ProductsDataSetTableAdapters.DocsBinTblTableAdapter())
                {

                    ta.Fill(ds.DocsBinTbl);
                }
                string[] s = new string [ds.DocsTbl.Columns.Count];
                string stringToWrite = string.Empty;
                foreach (ProductsDataSet.DocsBinTblRow row in ds.DocsBinTbl)
                {
                    ProductsDataSet.DocsTblRow docRow = ds.ConvertFromBin(row);
                    for (int i = 0; i < docRow.Table.Columns.Count; i++)
                    {
                        s[i] = docRow[i].ToString();
                    }
                    stringToWrite = String.Join("|", s);
                    wr.WriteLine(stringToWrite);
                }
                wr.Flush();
                wr.Close();
            }
            return;*/
            //}
            /*
            byte [] ba = new byte[155];
            for (byte b = 0; b < 155; b++)
            {
                ba[b] = (byte)(b+100);
            }
            string s = System.Text.Encoding.GetEncoding("windows-1251").GetString(ba);
            TSDServer.CustomEncodingClass custEnc = new CustomEncodingClass();
            byte [] ba = custEnc.GetBytes("ХОЗЯЙСТВЕННЫЙ САНТИМЕТР|В АСС.|Китай|357792|ПЛАСТИК");
            
            string s = System.Text.Encoding.GetEncoding("windows-1251").GetString(ba);

            return;*/
            
            /*
            using (System.Data.SqlServerCe.SqlCeConnection conn =
                new System.Data.SqlServerCe.SqlCeConnection(Properties.Settings.Default.ProductsConnectionString))
            {
                conn.Open();
                using (System.Data.SqlServerCe.SqlCeCommand cmd =
                    new System.Data.SqlServerCe.SqlCeCommand("select * from productsbintbl", conn))
                {
                    using (System.Data.SqlServerCe.SqlCeCommand cmdUpd =
                    new System.Data.SqlServerCe.SqlCeCommand(@"UPDATE    ProductsBinTbl SET ActionCode = @ac
, Shablon = @sc
, SoundCode = @sndc
WHERE     (ProductsBinTbl.Barcode = @b)", conn))
                    {
                        
                        cmdUpd.Parameters.Add("@ac", typeof(byte));
                        cmdUpd.Parameters.Add("@sc", typeof(int));
                        cmdUpd.Parameters.Add("@sndc", typeof(int));
                        cmdUpd.Parameters.Add("@b", typeof(Int64));
                        System.Random r = new Random();
                        Array vals = Enum.GetValues(typeof(TSDUtils.ActionCode));
                        Array vals1 = Enum.GetValues(typeof(TSDUtils.ShablonCode));

                        using (System.Data.SqlServerCe.SqlCeDataReader rdr = cmd.ExecuteReader())
                        {
                            while (rdr.Read())
                            {
                                
                                Int64 bc =  (Int64)rdr[0];
                                cmdUpd.Parameters[3].Value = bc;
                                byte c = 0;
                                
                                
                                for (int k=0;k<5;k++)
                                
                                {
                                    int b = 0;
                                    Double d = Math.Round(r.NextDouble());//произвольное число от 0 до 1
                                    //при округлении получаем случайное значение 0 или 1
                                    b = (byte)((byte)vals.GetValue(k) * ((byte)d));//Если d=0, то указанный k-й код действия не используется,
                                    //иначе, если 1 - то используется
                                    c = (byte)(b|c);//суммируем все биты
                                }
                                uint sum = 0;
                                //по каждому биту действия
                                for (byte k = 0; k < 8; k++)
                                {
                                    //определить произвольный код шаблона
                                    byte d1 = (byte)r.Next( 8);
                                    //код действия
                                    byte b1 = (byte)(1 << k);//Math.Pow(2, k);
                                    
                                    byte b = (byte)(c & b1);
                                    if (b != 0)//если код действия продукта содержит необходимый код действия 
                                    {
                                        uint b2 = (uint)(d1 << (3 * k));//сдвигаем кажый код шаблона (3 бит)
                                        //на 3k разрядов влево (код шаблона 0,1,3,4...n умножить на (2^3*k)
                                        //k=0=>2^0 = 1, код =0,1,2,3...
                                        //k=1=>2^3 = 8,код = 0,8,16,24,...
                                        //k=2=>2^6 = 16, код = 0,64,128,192...
                                        sum = sum | b2;
                                        //sum += b2;//суммируем - складываем полученные биты
                                    }
                                    //c = (byte)(b*Math.Pow( | c);

                                }
                                
                                uint res = TSDUtils.ActionCodeDescription.ActionDescription.GetShablon(c, sum);

                                cmdUpd.Parameters[0].Value = c;
                                cmdUpd.Parameters[1].Value = sum;
                                cmdUpd.Parameters[2].Value = sum;
                                //cmdUpd.ExecuteNonQuery();

                            }


                        }
                    }

                }


            }
            return;*/

            //TSDUtils.ActionCode a = TSDUtils.ActionCode.Remove | TSDUtils.ActionCode.Reprice;
            //TSDUtils.ActionCode b = TSDUtils.ActionCode.Remove | TSDUtils.ActionCode.Returns;
            //TSDUtils.ActionCode c = TSDUtils.ActionCode.Remove | TSDUtils.ActionCode.Returns | TSDUtils.ActionCode.Reprice;

            /*Array e = Enum.GetValues(typeof(TSDUtils.ActionCode));
            int counter = 0;
            byte[] bArray = new byte[e.Length];
            string s = string.Empty;
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            foreach (TSDUtils.ActionCode i in e)
            {
                byte b = (byte)i;
                bArray[counter++] = b;
                sb.AppendFormat("{0} = {1} \n", i, b);
            }
            TSDUtils.ActionCode tmp = TSDUtils.ActionCode.NoAction;
            

            for (int i = 0; i < bArray.Length; i++)
            {
                tmp = TSDUtils.ActionCode.NoAction;
                for (int j = 0; j < bArray.Length; j++)
                {
                    if (bArray[i] == bArray[j])
                        continue;

                    tmp = tmp |(TSDUtils.ActionCode) bArray[j];
                    byte b = (byte)tmp;
                    sb.AppendFormat("{0} = {1} \n", tmp, b);

                }
            }
            */
            #endregion

            using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows CE Services"))
            {
                if (reg == null)
                {
                    MessageBox.Show("Не установлен Active Sync или Windows Mobile Device Center (для Vista/Windows 7)",
                        "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    return (int)ERRORLEVELS.NotInstalledActiveSync;
                }
                //int majorVersion = (int)reg.GetValue("MajorVersion", 0);
                //int minorVersion = (int)reg.GetValue("MinorVersion", 0);
                //int buildNumber = (int)reg.GetValue("BuildNumber", 0);
                //syncVersion = new Version(majorVersion, minorVersion, buildNumber);
            }
            

            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                mainForm = new Form1();
                //проверка на наличие второй запущеной копии программы
                //если Null значит уже запущена другая копия
                if (mainForm.mutex != null)
                {
                    //другая копия программы не запущена
                    //инициализируем IPC сервер, который может принимать сообщения
                    //(в данном случае нужно для получения сообщения от второй копии показать главное окно
                    IpcChannel serverChannel =
                        new IpcChannel("localhost:9090");

                    System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(
                        serverChannel, false);

                    System.Runtime.Remoting.WellKnownServiceTypeEntry WKSTE =
                   new System.Runtime.Remoting.WellKnownServiceTypeEntry(
                       typeof(RemoteObject), "RemoteObject.rem", System.Runtime.Remoting.WellKnownObjectMode.Singleton);
                    System.Runtime.Remoting.RemotingConfiguration.RegisterWellKnownServiceType(WKSTE);

                    Application.Run(mainForm);//запуск главного экранного потока
                    return (int)ERRORLEVELS.NoError;
                }
                else
                {
                    //есть уже запущенная копия программы
                    IpcChannel channel = new IpcChannel();
                    System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(channel, false);
                    //получаем адрес сервера программы
                    RemoteObject service = (RemoteObject)Activator.GetObject(
                                   typeof(RemoteObject), "ipc://localhost:9090/RemoteObject.rem");

                    //отправляем сообщение показать главное окно
                    service.Show();
                    return (int)ERRORLEVELS.ServerAlreadeyStarted;
                    //mainForm.Activate();
                    //выходим из программы

                }
            }
            catch
            {
                return (int)ERRORLEVELS.SomeException;
            }
            
        }