raspberry piを用いて、LEDマトリクスパネルにテキストファイルに書いてある文字列を走らせるプログラム(python)が以下に記載しているコードです。
制御の手順として、
- Node-redで作成した入力フォームに文字を記入することで、ラズパイ内のテキスト
ファイルを書き換える。 - pythonを使い、テキストファイルの内容をLEDマトリクスパネルに投影する
です。
python
1#!/usr/bin/env python 2# Display a runtext with double-buffering. 3# coding: utf-8 4from samplebase import SampleBase 5from rgbmatrix import graphics 6import time 7 8class RunText (SampleBase): 9 def __init__(self, *args, **kwargs): 10 super(RunText, self).__init__(*args, **kwargs) 11 self.parser.add_argument("-t", "--textfile", default = "data.txt") 12 13 def run(self): 14 offscreen_canvas = self.matrix.CreateFrameCanvas() 15 font = graphics.Font() 16 font.LoadFont("../../../fonts/7x13.bdf") 17 textColor = graphics.Color(255, 255, 255) 18 pos = offscreen_canvas.width 19 with open(self.args.textfile)as f: 20 my_text = f.readlines()[0].split("/n") 21 22 while True: 23 offscreen_canvas.Clear() 24 len = graphics.DrawText(offscreen_canvas, font, pos, 20, textColor, my_text) 25 pos -= 1 26 if (pos + len < 0): 27 pos = offscreen_canvas.width 28 29 time.sleep(0.05) 30 offscreen_canvas = self.matrix.SwapOnVSync(offscreen_canvas) 31 32 33# Main function 34if __name__ == "__main__": 35 run_text = RunText() 36 if (not run_text.process()): 37 run_text.print_open()
現時点で、LEDマトリクスパネルにテキストファイルから取得した任意の文字情報を走らせることができるのですが、テキストファイルの文字列を変更した時に、LEDマトリクスパネルにその変更が反映されることがありません。
仮に、LEDマトリクスパネルに変更したテキストファイルの文字列が表示されるためには、一度、ラズパイで動いているLEDマトリクスパネルを駆動させているプログラムを停止し再起動させる必要があり、改良の余地があると私は考えています。
私の目的は、webページ上(Node-redで作成)入力フォームにテキストを記入することで、LEDマトリクスパネルに表示される文字列を変えたいというものです。
そのために、今私が考えている改良方法として、
1つ目は、入力フォームに文字が記入されれば、LEDマトリクスパネルの駆動プログラムを再起動するというモノです。
※if文とos.execvを使う予定(仮)ただ、if文の条件指定でテキストファイルの変更を読み取れるのかどうか、また読み取り方法が不明
2つ目は、Node-redで作る入力フォームにおいて文字列を記入されるごとに新しくファイルを作成し、pythonのプログラムでその新しいファイルを読み込む。
※pythonでテキストファイルを読み込むことはできるようになったけど、次々と新しくファイルを読み込むこと方法が見当つかない
現状、改良方法などについてアドバイスをいただきたく質問させていただきました。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。