MattIPv4 / MattIPv4/PyDMXControl

val in self.channels.items() can be float

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

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

Ngôn ngữ chính
Python
Star
143
Fork
23
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

Hi fellow,

thanks a looot for your library. Real nice work.

I ran into an issue (can't tell you the origin), but by using a constant stream following line in _Controller.py might create a float, which later on will crash the program:

# Get all channels values
               for key, val in self.channels.items():
                    # If channel in frame
                    if key - first < len(self.__frame):
                       self.__frame[key - first] = int(val[0])`

i placed an int() around the val[0]. Not sure if that's in general a good idea.

but it fixed the issue, that otherwise at this call would break the runtime.

def _transmit(self, frame: List[int], first: int):
        # Convert to a bytearray and pad the start of the frame
        # We're transmitting direct DMX data here, so a frame must start at channel 1, but can end early
        try:
            data = bytearray(([0] * (first - 1)) + frame)
            # The first byte in the type, and is `0` for normal DMX data
            data.insert(0, 0)

            # Write
            self.__device.send_break(100e-6)
            sleep(10e-6)
            self.__device.write(data)
        except:
            print("bad request")`
```

as you see I made a try / except for myself.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

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.

Hướng nghiên cứu

Bắt đầu trong _Controller.py, tại vòng lặp giá trị kênh, và kiểm tra cách các giá trị từ self.channels.items() đi tới _transmit. Tái hiện trường hợp luồng không đổi tạo ra một float, sau đó xác minh rằng cách xử lý được chọn bảo toàn dữ liệu frame DMX hợp lệ và ngăn việc chuyển đổi sang bytearray bị lỗi.

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

Đánh giá

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

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.