Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

`Task.write` does not handle certain inputs as expected

Abierto
#126 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

  • #127 de @stafak — cerrado sin fusionar

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
35/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
api

Línea de trabajo

Comienza en el punto de entrada Task.write y reproduce ambos ejemplos del issue, incluida la lista anidada y la entrada mixta de Python-list/NumPy-array. Rastrea cómo se interpretan las formas y los tipos de los canales y las muestras. La tarea está terminada cuando ambos ejemplos escriban las señales digitales solicitadas sin los errores indicados de número de canales o tipo de muestra, con cobertura de regresión para estas entradas.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement

Hi!

Running this code, I expect to write the signal to line 2, but instead I get a strange error message about mismatching number of channels (even though there is no mismatch):

import nidaqmx

taskLen = 100
signalLine2 = [True] * taskLen
signals = [signalLine2]

with nidaqmx.Task('mytask') as task:
    task.do_channels.add_do_chan('Dev1/port0/line2')
    task.write(signals, auto_start=True)
    task.wait_until_done()

print('done')
nidaqmx.errors.DaqError: Write cannot be performed, because the number of channels in the data does not match the number of channels in the task.

When writing, supply data for all channels in the task. Alternatively, modify the task to contain the same number of channels as the data written.

Number of Channels in Task: 1
Number of Channels in Data: 1

Task Name: mytask

I'm aware that it's possible to avoid this by simply using signalLine2 as the input instead of the 2-dimensional signals variable, but sometimes you can end up in this situation when creating a varying number of signals in a loop.


Similarly, an error is raised when mixing Python lists and numpy arrays in the input:

import nidaqmx
import numpy as np

taskLen = 100
signalLine2 = np.ones(taskLen, dtype=bool)
signalLine3 = np.ones(taskLen, dtype=bool)
signals = [signalLine2, signalLine3]

with nidaqmx.Task('mytask') as task:
    task.do_channels.add_do_chan('Dev1/port0/line2')
    task.do_channels.add_do_chan('Dev1/port0/line3')
    task.write(signals, auto_start=True)
    task.wait_until_done()

print('done')
nidaqmx.errors.DaqError: Write failed, because this write method only accepts boolean samples when there is one digital line per channel in a task.

Requested sample type: <class 'numpy.ndarray'>

Task Name: mytask
Lenguaje dominante
Python
Estrellas
590
Forks
199
Merge medio
1 d 8 h
PR fusionados (30 d)
7

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ni/nidaqmx-python

Todos los issues de ni/nidaqmx-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.