コード例 #1
0
ファイル: Calibration.cs プロジェクト: EugeneGudima/Reflecta
        void bw_DoWork(object sender, DoWorkEventArgs e)
        {
            string device = e.Argument as string;
            int comStart = device.IndexOf('(') + 1;
            int comEnd = device.IndexOf(')');
            int channelStart = device.IndexOf("CH") + 2;
            int channelEnd = device.IndexOf(" Д");
            string comport = device.Substring(comStart, comEnd - comStart);
            byte channel = Convert.ToByte(device.Substring(channelStart, channelEnd - channelStart));
            ADriver dr = new ADriver(comport, 100);
            string error = "";
            if (dr.OpenPort(ref error))
            {
                if (dr.SetChannel(channel, ref error))
                {
                    double[] reflectogram, delays, temperature;
                    double level = 0.0, sum = 0.0, delaySum = 0.0, tempSum = 0.0;
                    for (int i = 0; i < (int)average_numericUpDown.Value; i++)
                    {
                        dr.GetLevel(ref error);
                        reflectogram = dr.GetReflectogram(ref error);
                        temperature = dr.GetTemperature(ref error);
                        delays = ACalculate.CalculateDelays(reflectogram, twoZond ? ADelayCalculationType.TwoZond : ADelayCalculationType.OneZond);
                        level = ACalculate.Level(delays, twoZond ? ACalcType.TwoZond : ACalcType.OneZond);
                        sum += level;
                        delaySum += delays[1];
                        if (temperature != null && temperature.Length > 0)
                            tempSum += temperature[0];
                        List<double> temp = new List<double>();
                        temp.Add(sum);
                        temp.Add(delaySum);
                        temp.Add(tempSum);
                        temp.Add(i+1);

                        bw.ReportProgress(0, temp);
                    }
                }
                dr.ClosePort();
            }
        }
        private static int WriteExperiment(ADatabase db, int groupID, int sysChannel, string comport, List<byte> channelsWithSensors, object calibValue, int i)
        {
            try
            {
                ADriver dr = new ADriver(comport, 50);
                string error = "";
                if (dr.OpenPort(ref error))
                {
                    if (dr.SetChannel(channelsWithSensors[i], ref error))
                    {
                        string serial = dr.GetSerial(ref error);
                        if (error != "")
                        {
                            return -1;
                        }
                        double firmware = dr.GetFirmware(ref error);
                        if (error != "")
                        {
                            return -2;
                        }

                        if (!dr.ClosePort())
                        {
                            return -3;
                        }

                        string calibValueString;
                        if (calibValue != null)
                            calibValueString = ConvertToDoubleWithCheck(calibValue.ToString(), -1).ToString();
                        else
                            calibValueString = "null";

                        string sql = "INSERT INTO Experiments (ExperimentGroupsID, SysChannelID, SensorSerial, SensorFirmware, CalibrationValue) VALUES (" + groupID + ","
                            + sysChannel + "," + serial + "," + firmware + "," + calibValueString + ")";
                        NpgsqlCommand command = new NpgsqlCommand(sql, db.Connection);
                        command.ExecuteNonQuery();

                        sql = "SELECT currval(pg_get_serial_sequence('Experiments', 'experimentid'));";
                        NpgsqlCommand readCommand = new NpgsqlCommand(sql, db.Connection);
                        NpgsqlDataReader myreader = readCommand.ExecuteReader();
                        myreader.Read();
                        int result = Convert.ToInt32(myreader[0].ToString());
                        myreader.Close();
                        return result;
                    }
                    else
                    {
                        return -4;
                    }

                }
                else
                {
                    return -5;
                }
            }
            catch (Exception ex)
            {
                FileWorker.WriteEventFile(DateTime.Now, "DatabaseWorker", "WriteExperiment", ex.Message);
                return -1;
            }
        }
コード例 #3
0
ファイル: Calibration.cs プロジェクト: EugeneGudima/Reflecta
        private void save_btn_Click(object sender, EventArgs e)
        {
            channel_combobox.Enabled = true;
            average_numericUpDown.Enabled = true;

            string device = channel_combobox.SelectedItem.ToString();
            int comStart = device.IndexOf('(') + 1;
            int comEnd = device.IndexOf(')');
            int channelStart = device.IndexOf("CH") + 2;
            int channelEnd = device.IndexOf(" Д");
            string comport = device.Substring(comStart, comEnd - comStart);
            byte channel = Convert.ToByte(device.Substring(channelStart, channelEnd - channelStart));
            ADriver dr = new ADriver(comport, 100);
            string error = "";
            if (dr.OpenPort(ref error))
            {
                if (dr.SetChannel(channel, ref error))
                {
                    double firmware = dr.GetFirmware(ref error);
                    string serial = dr.GetSerial(ref error);
                    int calibrationGroup =  ACalibrationDatabaseWorker.WriteCalibrationGroup(db, (int)average_numericUpDown.Value, firmware, serial);
                    for(int i = 0; i < dataGridView.RowCount; i++)
                    {
                        if (dataGridView.Rows[i].Cells[0].Value != null && dataGridView.Rows[i].Cells[0].Value.ToString() != "" &&
                            dataGridView.Rows[i].Cells[1].Value != null && dataGridView.Rows[i].Cells[1].Value.ToString() != "")
                        {
                            ACalibrationDatabaseWorker.WriteCalibrationData(db, calibrationGroup,
                                dataGridView.Rows[i].Cells[0].Value.ToString(), dataGridView.Rows[i].Cells[1].Value.ToString());
                        }
                    }
                }
                dr.ClosePort();
            }
        }