Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

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

Đang mở
#126 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

  • #127 của @stafak — đã đóng, không merge

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
python
Lĩnh vực
api

Hướng nghiên cứu

Bắt đầu từ điểm vào Task.write và tái hiện cả hai ví dụ trong issue, bao gồm danh sách lồng nhau và đầu vào kết hợp Python-list/NumPy-array. Theo dõi cách diễn giải hình dạng và kiểu của các kênh và mẫu. Hoàn thành khi cả hai ví dụ ghi được các tín hiệu số được yêu cầu mà không gặp các lỗi đã báo cáo về số lượng kênh hoặc kiểu mẫu, với phạm vi kiểm thử hồi quy cho các đầu vào này.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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
Ngôn ngữ chính
Python
Star
590
Fork
200
Merge trung bình
1 ngày 13 giờ
Pull request đã merge (30 ngày)
9

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ni/nidaqmx-python

Tất cả issue của ni/nidaqmx-python

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.