private void ScanEpcTagsButton_Click(object sender, EventArgs e) { scanGen2Timer.Enabled = !scanGen2Timer.Enabled; if (!scanGen2Timer.Enabled) { scanEpcTagsButton.Text = "Сканировать"; collector.WriteSession(session); if (isRfidSessionSending == false) { new Thread(new ThreadStart(this.SendSessions)).Start(); } } else { epcTagsListView.Items.Clear(); list.Clear(); session = new TubesSession { sessionMode = TubesSession.Mode.Reading, time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; scanEpcTagsButton.Text = "Остановить"; } }
/// <summary> /// Возвращает список неотправленных на сервер сессий чтения /// </summary> public List<TubesSession> GetUnshippedTags() { var sessions = new List<TubesSession>(); var sessionCmd = new SQLiteCommand(@"SELECT * from reading_sessions where delivery_status <> " + (int)TubesSession.DeliveryStatus.Shipped, connection); using (var sessionReader = sessionCmd.ExecuteReader()) { while (sessionReader.Read()) { var session = new TubesSession { id = sessionReader.GetInt32(0), time = sessionReader.GetString(1), location = sessionReader.GetString(2), deliveryStatus = (TubesSession.DeliveryStatus)sessionReader.GetInt32(3), readingStatus = (TubesSession.ReadingStatus)sessionReader.GetInt32(4), sessionMode = (TubesSession.Mode)sessionReader.GetInt32(5) }; var tagCmd = new SQLiteCommand(@"SELECT * from tubes where session_id = " + session.id, connection); using (var tagReader = tagCmd.ExecuteReader()) { while (tagReader.Read()) { session.tags.Add(tagReader.GetString(1)); } } sessions.Add(session); } } return sessions; }
public void WriteSession(TubesSession session) { if (session.tags.Count == 0) return; var transaction = connection.BeginTransaction(); //Register a new session var cmd = new SQLiteCommand(@" INSERT INTO reading_sessions (time_marker, location_id, delivery_status, reading_status, reading_mode) VALUES(@time_marker, @location_id, @delivery_status, @reading_status, @reading_mode)", connection); cmd.Parameters.AddWithValue("@time_marker", session.time); cmd.Parameters.AddWithValue("@location_id", session.location); cmd.Parameters.AddWithValue("@delivery_status", session.deliveryStatus); cmd.Parameters.AddWithValue("@reading_status", session.readingStatus); cmd.Parameters.AddWithValue("@reading_mode", session.sessionMode); cmd.ExecuteNonQuery(); //Look up the last session id cmd.CommandText = "SELECT last_insert_rowid()"; var sessionId = Convert.ToInt32(cmd.ExecuteScalar()); //Prepare for INSERT cmd = new SQLiteCommand("INSERT INTO tubes (session_id, tag) VALUES(@session_id, @tag)", connection); cmd.Parameters.AddWithValue("@session_id", sessionId); var tag_ = new SQLiteParameter("@tag"); cmd.Parameters.Add(tag_); //Add new tags foreach (var tag in session.tags) { tag_.Value = tag; cmd.ExecuteNonQuery(); } transaction.Commit(); }