Esempio n. 1
0
        //포트0 연결
        public bool Connect_port0_read(ref string ErrorMsg)
        {
            bool flag = false;

            try
            {
                flag = true;

                Readtask = new NationalInstruments.DAQmx.Task();
                Readtask.DIChannels.CreateChannel(ini.GetIniValue("NI", "Name") + "/port0/line0:7", "Digital Input", ChannelLineGrouping.OneChannelForAllLines);
                reader = new DigitalSingleChannelReader(Readtask.Stream);

                if (reader != null)
                {
                    Input = reader.ReadSingleSampleMultiLine();
                }
            }
            catch (DaqException de)
            {
                flag     = false;
                ErrorMsg = de.Message;
            }
            catch (Exception e)
            {
                ErrorMsg = e.Message;
            }
            return(flag);
        }
Esempio n. 2
0
 //포트0 입력
 public bool[] port0_Input(ref string ErrorMsg)
 {
     if (reader != null)
     {
         try
         {
             Input = reader.ReadSingleSampleMultiLine();
         }
         catch (DaqException de)
         {
             ErrorMsg = de.Message;
         }
         catch (Exception e)
         {
             ErrorMsg = e.Message;
         }
     }
     else
     {
         Input[0] = false;
         Input[1] = false;
         Input[2] = false;
         Input[3] = false;
         Input[4] = false;
         Input[5] = false;
         Input[6] = false;
         Input[7] = false;
     }
     return(Input);
 }
Esempio n. 3
0
        public int WriteDigChannelGroup(string lines, string name, uint val)
        {
            //Create a task such that it will be disposed after
            //we are done using it.
            int       res = 0;
            Task      digitalWriteTask = new Task();
            DOChannel ch;

            try
            {
                //Create channel
                ch = digitalWriteTask.DOChannels.CreateChannel(lines, "digwrite", ChannelLineGrouping.OneChannelForAllLines);

                //Dim st As DOLineStatesStartState
                DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(digitalWriteTask.Stream);
                DigitalSingleChannelReader reader = new DigitalSingleChannelReader(digitalWriteTask.Stream);

                bool[] data;
                data = reader.ReadSingleSampleMultiLine();

                digitalWriteTask.Start();
                //st = ch.LineStatesStartState
                if (ch.Tristate == true)
                {
                    ch.Tristate = false;
                }
                writer.WriteSingleSamplePort(false, val);
                digitalWriteTask.Stop();
                //UpdateDigitalShadows(lines, CInt(val));
            }
            catch (DaqException ex)
            {
                DaqError(ex.Message);
                res = -1;
            }
            finally
            {
                //dispose task
                digitalWriteTask.Dispose();
            }
            return(res);
        }
Esempio n. 4
0
        public int ReadDigChannel(string lines, string name)
        {
            //Create a task such that it will be disposed after
            //we are done using it.
            Task digitalReadTask = new Task();
            int  val             = 0;

            try
            {
                //Create channel
                digitalReadTask.DIChannels.CreateChannel(lines, "DigRead", ChannelLineGrouping.OneChannelForEachLine);

                bool[] data;
                DigitalSingleChannelReader reader = new DigitalSingleChannelReader(digitalReadTask.Stream);

                digitalReadTask.Start();
                data = reader.ReadSingleSampleMultiLine();
                digitalReadTask.Stop();


                for (int index = 0; index < data.Length; index++)
                {
                    if (data[index] == true)
                    {
                        //if bit is true
                        //add decimal value of bit
                        val += 1 << index;
                    }
                }
                //Debug.Print(String.Format(lines + ": " + "0x{0:X}", val));
                //return val;
            }
            catch (DaqException ex) {
                DaqError(ex.Message);
            }
            finally {
                //dispose task
                digitalReadTask.Dispose();
            }
            return(val);
        }
Esempio n. 5
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            try
            {
                bool[] readData;
                readData = myDigitalReader.ReadSingleSampleMultiLine();

                checkBox1.Checked = readData[0];
                checkBox2.Checked = readData[1];
                checkBox3.Checked = readData[2];
                checkBox4.Checked = readData[3];
                checkBox5.Checked = readData[4];
                checkBox6.Checked = readData[5];
                checkBox7.Checked = readData[6];
                checkBox8.Checked = readData[7];

                int val = 0;
                for (int i = 0; i < readData.Length; i++)
                {
                    val += 1 << i;
                }
                textBox1.Text = String.Format("0x{0:X}", val);
            }
            catch (DaqException exception)
            {
                timer1.Enabled = false;
                myTask.Dispose();
                MessageBox.Show(exception.Message);
                BTN_Start.Enabled = true;
                BTN_Stop.Enabled  = false;
            }
            catch (IndexOutOfRangeException exception)
            {
                timer1.Enabled = false;
                myTask.Dispose();
                MessageBox.Show("Error: You must specify eight lines in the channel string (i.e.,0:7).");
                BTN_Start.Enabled = true;
                BTN_Stop.Enabled  = false;
            }
        }
Esempio n. 6
0
 public bool CanMoveSlider(int SliderPosition, string port)
 {
     try
     {
         Task readPort = new Task();
         readPort.DIChannels.CreateChannel(port, "", ChannelLineGrouping.OneChannelForAllLines);
         DigitalSingleChannelReader DISMCSignals = new DigitalSingleChannelReader(readPort.Stream);
         bool[] states = DISMCSignals.ReadSingleSampleMultiLine();
         string binary = "";
         foreach (bool state in states)
         {
             if (state)
             {
                 binary += "1";
             }
             else
             {
                 binary += "0";
             }
         }
         char[] charArray = binary.ToCharArray();
         Array.Reverse(charArray);
         binary = new string(charArray);
         int position = Convert.ToInt32(binary, 2);
         if (SliderPosition == position)
         {
             return(false);
         }
         else
         {
             return(true);
         }
     }
     catch (Exception)
     {
         return(false);
     }
 }
Esempio n. 7
0
 /// <summary>
 /// Lee los valores de unos puertos de entrada binarios
 /// </summary>
 /// <param name="nombres">Nombres de puertos de entrada</param>
 /// <param name="persistente">true - para crear una tarea de lectura permanente</param>
 /// <returns>El valor de los puertos</returns>
 /// <exception cref="ArgumentNullException">Nombres es null</exception>
 /// <exception cref="ArgumentException">
 /// 1. El nombre de canal es null
 /// 2. El nombre de canal no es valido
 /// 3. Se presente el puerto y el canal de mismo puerto
 /// </exception>
 /// <exception cref="DriverException">Error de driver de la tarjeta</exception>
 public bool[] LeerBinario(string[] nombres, bool persistente = false)
 {
     ValidarCanales(nombres);
     Task digitalReadTask = null;
     try
     {
         // Generar nombre de la tarea
         var nombreTarea = "L" + String.Join(",", nombres);
         // Si la tarea esta creada antes
         if (tareas.ContainsKey(nombreTarea))
         {
             digitalReadTask = tareas[nombreTarea];
             persistente = true;
         }
         else
         {
             // Crear nueva tarea
             digitalReadTask = new Task();
             // Agregar los canales
             digitalReadTask.DIChannels.CreateChannel(
                 String.Join(",", nombres),
                 "",
                 ChannelLineGrouping.OneChannelForAllLines);
             // Guardar tarea persistente
             if (persistente)
             {
                 tareas.Add(nombreTarea, digitalReadTask);
             }
         }
         // Leer los datos
         var reader = new DigitalSingleChannelReader(digitalReadTask.Stream);
         return reader.ReadSingleSampleMultiLine();
     }
     catch (DaqException ex)
     {
         throw new DriverException(ex);
     }
     finally
     {
         if (!persistente && (digitalReadTask != null))
         {
             digitalReadTask.Dispose();
             digitalReadTask = null;
         }
     }
 }