//포트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); }
//포트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); }
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); }
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); }
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; } }
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); } }
/// <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; } } }