예제 #1
0
        public FormTagReader()
        {
            InitializeComponent();
            ReaderWrapper.MainForm = this;

            ReaderWrapper.Initialize_Configuration();

            toolStripButton_Save.Enabled     = false;
            toolStripButton_Connect.Enabled  = true;
            toolStripButton_Start.Enabled    = false;
            toolStripButton_Stop.Enabled     = false;
            toolStripButton_Clear.Enabled    = false;
            toolStripButton_Refresh.Enabled  = false;
            toolStripButton_Settings.Enabled = true;

            ToolStripMenuItem_Save.Enabled     = false;
            ToolStripMenuItem_Connect.Enabled  = true;
            ToolStripMenuItem_Start.Enabled    = false;
            ToolStripMenuItem_Stop.Enabled     = false;
            ToolStripMenuItem_Settings.Enabled = true;

            toolStripTextBox_Address.Text = ReaderWrapper.ReaderParameters.Ip;
            toolStripTextBox_Power.Text   =
                Convert.ToString(ReaderWrapper.ReaderParameters.TransmitPower, CultureInfo.InvariantCulture);
            toolStripComboBox_Frequency.Text = Convert.ToString(
                ReaderSettings.Channal2Frequency(ReaderWrapper.ReaderParameters.ChannelIndex), CultureInfo.InvariantCulture);
        }
예제 #2
0
        /// <summary>
        /// <para>执行SQL,如果readerWrapper!=null,那么将调用readerWrapper对SQLiteDataReader进行包装,并返回结果</para>
        /// </summary>
        /// <param name="sql"></param>
        /// <param name="paramArr">null 表示无参数</param>
        /// <param name="readerWrapper">null 直接返回SQLiteDataReader</param>
        /// <returns></returns>
        public object ExecuteReader(string sql, SQLiteParameter[] paramArr, ReaderWrapper readerWrapper)
        {
            if (sql == null)
            {
                throw new ArgumentNullException("sql=null");
            }
            this.EnsureConnection();

            SQLiteCommand cmd = new SQLiteCommand(sql, this.Connection);

            if (paramArr != null)
            {
                foreach (SQLiteParameter p in paramArr)
                {
                    cmd.Parameters.Add(p);
                }
            }
            SQLiteDataReader reader = cmd.ExecuteReader();
            object           result = null;

            if (readerWrapper != null)
            {
                result = readerWrapper(reader);
            }
            else
            {
                result = reader;
            }
            reader.Close();
            reader.Dispose();
            cmd.Dispose();
            return(result);
        }
예제 #3
0
        private void StopReceive()
        {
            IsStopButtonClicked     = true;
            IsSettingsButtonClicked = false;
            _isClearButtonClicked   = false;

            ReaderWrapper.Stop();

            chart_Rssi.EndInit();
            chart_Phase.EndInit();
            chart_Doppler.EndInit();

            toolStripButton_Stop.Enabled   = false;
            ToolStripMenuItem_Stop.Enabled = false;

            //
            //toolStripButton_Start.Enabled = true;
            //ToolStripMenuItem_Start.Enabled = true;

            toolStripButton_Save.Enabled       = true;
            ToolStripMenuItem_Save.Enabled     = true;
            toolStripButton_Settings.Enabled   = true;
            ToolStripMenuItem_Settings.Enabled = true;

            toolStripButton_Clear.Enabled = true;
        }
예제 #4
0
        private void button_Connect_Click(object sender, EventArgs e)
        {
            if (IsSettingsButtonClicked)
            {
                toolStripTextBox_Address.Text = ReaderWrapper.ReaderParameters.Ip;
                toolStripTextBox_Power.Text   =
                    ReaderWrapper.ReaderParameters.TransmitPower.ToString(CultureInfo.InvariantCulture);
                toolStripComboBox_Frequency.Text =
                    Convert.ToString(ReaderSettings.Channal2Frequency(ReaderWrapper.ReaderParameters.ChannelIndex),
                                     CultureInfo.InvariantCulture);
                //  Convert.ToString(920.625 + ReaderWrapper.ReaderParameters.ChannelIndex*0.25,
                //      CultureInfo.InvariantCulture);
            }
            else
            {
                var ipAddress = toolStripTextBox_Address.Text;
                var txPower   = Convert.ToDouble(toolStripTextBox_Power.Text);
                var frequency = toolStripComboBox_Frequency.SelectedItem.ToString();

                if (ipAddress == string.Empty)
                {
                    MessageBox.Show("IP Address Cannot be Empty");
                }
                if (txPower < 10 || txPower > 32.5)
                {
                    MessageBox.Show("Invalid Power!");
                }

                ReaderWrapper.ReaderParameters.Ip            = ipAddress;
                ReaderWrapper.ReaderParameters.TransmitPower = txPower;
                ReaderWrapper.ReaderParameters.ChannelIndex  = ReaderSettings.Frequency2Channal(Convert.ToDouble(frequency));
                //   Convert.ToUInt16((Convert.ToDouble(frequency) - 920.625)/0.25);
            }

            _isConnected2Reader = ReaderWrapper.ConnectToReader();

            //MessageBox.Show(_isConnected2Reader ? "Successfully Connected!" : "Connect Failed!");

            if (_isConnected2Reader)
            {
                toolStripButton_Settings.Enabled   = false;
                ToolStripMenuItem_Settings.Enabled = false;

                toolStripButton_Connect.Enabled   = false;
                ToolStripMenuItem_Connect.Enabled = false;

                toolStripButton_Start.Enabled   = true;
                ToolStripMenuItem_Start.Enabled = true;

                toolStripTextBox_Address.Enabled    = false;
                toolStripTextBox_Power.Enabled      = false;
                toolStripComboBox_Frequency.Enabled = false;
            }
        }
예제 #5
0
        public void Trimming_reader_retries_against_stream_when_request_bytes_are_not_met_using_Read()
        {
            var stream = new MockStream();

            using (var reader = new ReaderWrapper(new TrimmingTextReader(new StreamReader(stream, Encoding.ASCII)))) {
                var buffer = new char[4000];
                var total  = 0;
                while (total < buffer.Length)
                {
                    var read = reader.Read(buffer, total, buffer.Length - total);
                    _log.DebugFormat("requested {0}, got {1}", buffer.Length - total, read);
                    Assert.IsTrue(read > 0);
                    total += read;
                }
            }
        }
예제 #6
0
        private void button_Export_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog
            {
                Filter           = "csv file|*.csv",
                FilterIndex      = 1,
                RestoreDirectory = true,
                DefaultExt       = ".csv"
            };

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                var             fpath     = sfd.FileName;
                CsvStreamWriter csvWriter = new CsvStreamWriter(fpath);
                ReaderWrapper.SaveData(csvWriter);
            }
        }
예제 #7
0
        private void StartReceive()
        {
            ReaderWrapper.Start();

            _startTime            = 0;
            _isStartButtonClicked = true;
            IsStopButtonClicked   = false;

            toolStripButton_Start.Enabled   = false;
            ToolStripMenuItem_Start.Enabled = false;

            toolStripButton_Stop.Enabled   = true;
            ToolStripMenuItem_Stop.Enabled = true;

            //toolStripButton_Clear.Enabled = true;

            toolStripButton_Settings.Enabled   = false;
            ToolStripMenuItem_Settings.Enabled = false;
        }
예제 #8
0
        public void Dispose()
        {
            if (ReaderWrapper != null)
            {
                if (CommandInfo?.DataConnection.TraceSwitchConnection.TraceInfo == true)
                {
                    CommandInfo.DataConnection.OnTraceConnection(new TraceInfo(CommandInfo.DataConnection, TraceInfoStep.Completed, TraceOperation.ExecuteReader, false)
                    {
                        TraceLevel      = TraceLevel.Info,
                        Command         = ReaderWrapper.Command,
                        StartTime       = StartedOn,
                        ExecutionTime   = Stopwatch.Elapsed,
                        RecordsAffected = ReadNumber,
                    });
                }

                ReaderWrapper.Dispose();
                ReaderWrapper = null;
            }
        }
예제 #9
0
        public FormTagReader()
        {
            InitializeComponent();
            ReaderWrapper.MainForm = this;

            ReaderWrapper.Initialize_Configuration();

            toolStripButton_Save.Enabled     = false;
            toolStripButton_Connect.Enabled  = true;
            toolStripButton_Start.Enabled    = false;
            toolStripButton_Stop.Enabled     = false;
            toolStripButton_Clear.Enabled    = false;
            toolStripButton_Refresh.Enabled  = false;
            toolStripButton_Settings.Enabled = true;

            ToolStripMenuItem_Save.Enabled     = false;
            ToolStripMenuItem_Connect.Enabled  = true;
            ToolStripMenuItem_Start.Enabled    = false;
            ToolStripMenuItem_Stop.Enabled     = false;
            ToolStripMenuItem_Settings.Enabled = true;
        }
예제 #10
0
        public async ValueTask DisposeAsync()
        {
            if (ReaderWrapper != null)
            {
                await ReaderWrapper.DisposeAsync().ConfigureAwait(Common.Configuration.ContinueOnCapturedContext);

                if (CommandInfo?.DataConnection.TraceSwitchConnection.TraceInfo == true)
                {
                    CommandInfo.DataConnection.OnTraceConnection(new TraceInfo(CommandInfo.DataConnection, TraceInfoStep.Completed, TraceOperation.ExecuteReader, true)
                    {
                        TraceLevel      = TraceLevel.Info,
                        Command         = ReaderWrapper.Command,
                        StartTime       = StartedOn,
                        ExecutionTime   = Stopwatch.Elapsed,
                        RecordsAffected = ReadNumber,
                    });
                }

                await ReaderWrapper.DisposeAsync().ConfigureAwait(Common.Configuration.ContinueOnCapturedContext);

                ReaderWrapper = null;
            }
        }
 public ReaderWriterLockWrapper()
 {
     lck    = new ReaderWriterLockSlim();
     reader = new ReaderWrapper(lck);
     writer = new WriterWrapper(lck);
 }
예제 #12
0
 public void Trimming_reader_retries_against_stream_when_request_bytes_are_not_met_using_Read()
 {
     var stream = new MockStream();
     using(var reader = new ReaderWrapper(new TrimmingTextReader(new StreamReader(stream, Encoding.ASCII)))) {
         var buffer = new char[4000];
         var total = 0;
         while(total < buffer.Length) {
             var read = reader.Read(buffer, total, buffer.Length - total);
             _log.DebugFormat("requested {0}, got {1}", buffer.Length - total, read);
             Assert.IsTrue(read > 0);
             total += read;
         }
     }
 }
예제 #13
0
		public ReaderWriterLockWrapper()
		{
			lck = new ReaderWriterLockSlim();
			reader = new ReaderWrapper(lck);
			writer = new WriterWrapper(lck);
		}
예제 #14
0
 public JsonReader(Stream s)
 {
     _reader = new ReaderWrapper(s);
 }
예제 #15
0
        public void UpdateChart(ref TagStatus tagStatus)
        {
            var epc     = tagStatus.Epc;
            var antenna = tagStatus.Antenna;
            var channel = tagStatus.ChannelIndex;
            var key     = new TagInfos.Key(epc, antenna, channel);
            var time    = tagStatus.TimeStamp;

            if (!_map.ContainsKey(key))
            {
                _isClearButtonClicked = false;
                if (_startTime == 0)
                {
                    _startTime = time;
                    var dt = new DateTime(1970, 1, 1, 0, 0, 0, 0);
                    _startTimeDateTime = dt.AddSeconds(Convert.ToDouble(_startTime / 1000000)).ToLocalTime();
                }

                var s = new Series
                {
                    ChartType = SeriesChartType.FastLine,
                    Name      = epc + "_" + antenna
                };
                chart_Rssi.Series.Add(s);

                var s1 = new Series
                {
                    ChartType = SeriesChartType.FastLine,
                    Name      = epc + "_" + antenna
                };
                chart_Phase.Series.Add(s1);

                var s2 = new Series
                {
                    ChartType = SeriesChartType.FastLine,
                    Name      = epc + "_" + antenna
                };
                chart_Doppler.Series.Add(s2);

                _map.Add(key, _map.Count); // save index
            }
            var seriesId = _map[key];

            chart_Rssi.Series[seriesId].Points.AddXY(ConvertTime(time), tagStatus.Rssi);
            chart_Rssi.Series[seriesId].LegendText = epc.Substring(epc.Length - 4, 4) + "_" + antenna;

            chart_Phase.Series[seriesId].Points.AddXY(ConvertTime(time), tagStatus.PhaseRadian);
            chart_Phase.Series[seriesId].LegendText = epc.Substring(epc.Length - 4, 4) + "_" + antenna;

            chart_Doppler.Series[seriesId].Points.AddXY(ConvertTime(time), tagStatus.DopplerShift);
            chart_Doppler.Series[seriesId].LegendText = epc.Substring(epc.Length - 4, 4) + "_" + antenna;

            if (SettingsWindow.IsTimerModeActied)
            {
                int t = ConvertTime(time);
                Invoke(new Action(() =>
                {
                    UpdateStatusBar_ProgressBar(ref t);
                }));

                if (t >= ReaderWrapper.ReaderParameters.Duration)
                {
                    StopReceive();

                    if (SettingsWindow.IsAutoSaveChecked)
                    {
                        var fpath = @"C:\Users\Marin\Desktop\";
                        if (!Directory.Exists(fpath))
                        {
                            Directory.CreateDirectory(fpath);
                        }

                        var dt             = DateTime.Now;
                        var strCurrentTime = dt.ToString("yyyyMMdd_HHmmss");
                        var fname          = strCurrentTime + ".csv";
                        var csvWriter      = new CsvStreamWriter(fpath + fname);
                        ReaderWrapper.SaveData(csvWriter);
                    }
                }
            }
        }