MattIPv4 / MattIPv4/PyDMXControl

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

オープン
#55 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Python
スター
143
フォーク
23
PR マージ指標
30日以内にマージされた PR はありません

説明

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.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

_Controller.py のチャンネル値のループから始め、self.channels.items() の値がどのように _transmit に到達するかを確認します。float を生成する定常ストリームのケースを再現し、選択した処理によって有効な DMX フレームデータが保持され、bytearray への変換が失敗しないことを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
embedded-iot
issue の種類
バグ
難易度
3/5
見積もり時間
1〜2日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。