Exemple #1
0
        /// <summary>
        /// Возвращает список неотправленных на сервер сессий чтения
        /// </summary>
        public List<TubesBundleSession> GetUnshippedBundles()
        {
            var sessions = new List<TubesBundleSession>();
            var sessionCmd = new SQLiteCommand(@"SELECT * from tubes_bundles where delivery_status <> " + (int)TubesSession.DeliveryStatus.Shipped, connection);

            using (var sessionReader = sessionCmd.ExecuteReader())
            {
                while (sessionReader.Read())
                {
                    var session = new TubesBundleSession
                    {
                        id = sessionReader.GetInt32(0),
                        tag = sessionReader.GetString(1),
                        time = sessionReader.GetString(2),
                        bundle = new TubesBundle()
                        {
                            time = sessionReader.GetInt32(3),
                            districtId = (ushort)sessionReader.GetInt16(4),
                            bundleLength = (ushort)sessionReader.GetInt16(5),
                        },
                        deliveryStatus = (TubesBundleSession.DeliveryStatus)sessionReader.GetInt32(6),
                        sessionMode = (TubesBundleSession.Mode)sessionReader.GetInt32(7),
                    };

                    sessions.Add(session);
                }
            }
            return sessions;
        }
Exemple #2
0
        /// <summary>
        /// Читает данные о подвеске с ближайшей метки
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TubesPackReadButton_Click(object sender, EventArgs e)
        {
            try
            {
                var tag = reader.GetFirstTag();
                var data = new byte[TubesBundle.GetSize()];
                var result = reader.ReadBytes(tag, ref data, RfidReader.MemorySection.User);

                if (data != null)
                {
                    var session = new TubesBundleSession()
                    {
                        time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                        sessionMode = TubesBundleSession.Mode.Reading,
                        tag = ByteArrayToHexString(tag),
                    };

                    var handle = GCHandle.Alloc(data, GCHandleType.Pinned);
                    session.bundle = (TubesBundle)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(TubesBundle));
                    handle.Free();

                    TagEpcLabel.Text = ByteArrayToHexString(tag);
                    dateTimePicker.Value = new DateTime(1970, 1, 1).AddSeconds(session.bundle.time).ToLocalTime();
                    wellNumberInput.Text = session.bundle.districtId.ToString();
                    tubesLengthInput.Text = session.bundle.bundleLength.ToString();

                    collector.WriteSession(session);
                    new Thread(new ThreadStart(this.SendBundleSessions)).Start();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #3
0
        /// <summary>
        /// Записывает данные о подвеске на ближайшую метку
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TubesPackWriteButton_Click(object sender, EventArgs e)
        {
            try
            {
                var tag = reader.GetFirstTag();
                var data = new byte[TubesBundle.GetSize()];

                var session = new TubesBundleSession()
                {
                    sessionMode = TubesBundleSession.Mode.Writing,
                    tag = ByteArrayToHexString(tag),
                    time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                    bundle = new TubesBundle()
                    {
                        time = (int)(dateTimePicker.Value - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds,
                        districtId = Convert.ToUInt16(wellNumberInput.Text),
                        bundleLength = Convert.ToUInt16(tubesLengthInput.Text),
                    }
                };

                IntPtr pnt = Marshal.AllocHGlobal(Marshal.SizeOf(data));
                var handle = GCHandle.Alloc(data, GCHandleType.Pinned);
                Marshal.StructureToPtr(session.bundle, handle.AddrOfPinnedObject(), false);
                handle.Free();

                if (reader.WriteBytes(tag, data, RfidReader.MemorySection.User) != (int)RfidReader.ResultCode.Ok)
                {
                    MessageBox.Show("Не удалось записать данные на метку", "Ошибка");
                }
                else
                {
                    collector.WriteSession(session);
                    new Thread(new ThreadStart(this.SendBundleSessions)).Start();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemple #4
0
        public void WriteSession(TubesBundleSession session)
        {
            var transaction = connection.BeginTransaction();

            //Register a new session
            var cmd = new SQLiteCommand(@"
            INSERT INTO tubes_bundles ( tag,  session_time,  bundle_time,  district_id,  bundle_length,  delivery_status,  session_mode)
                               VALUES(@tag, @session_time, @bundle_time, @district_id, @bundle_length, @delivery_status, @session_mode)", connection);
            cmd.Parameters.AddWithValue("@tag", session.tag);
            cmd.Parameters.AddWithValue("@session_time", session.time);
            cmd.Parameters.AddWithValue("@bundle_time", session.bundle.time);
            cmd.Parameters.AddWithValue("@district_id", session.bundle.districtId);
            cmd.Parameters.AddWithValue("@bundle_length", session.bundle.bundleLength);
            cmd.Parameters.AddWithValue("@delivery_status", session.deliveryStatus);
            cmd.Parameters.AddWithValue("@session_mode", session.sessionMode);
            cmd.ExecuteNonQuery();

            transaction.Commit();
        }