質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node-RED

Node-REDは、ビジュアルプログラミング向けのフローベース開発ツールです。ブラウザベースのUIになっており、さまざまなノード(Node)を結びつけることでフローを作成でき、処理を実現します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1007閲覧

webから取得されたデータをリアルタイムでpythonに反映させたい

makoi

総合スコア4

Node-RED

Node-REDは、ビジュアルプログラミング向けのフローベース開発ツールです。ブラウザベースのUIになっており、さまざまなノード(Node)を結びつけることでフローを作成でき、処理を実現します。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/29 08:37

raspberry piを用いて、LEDマトリクスパネルにテキストファイルに書いてある文字列を走らせるプログラム(python)が以下に記載しているコードです。

制御の手順として、

  1. Node-redで作成した入力フォームに文字を記入することで、ラズパイ内のテキスト
    ファイルを書き換える。
  2. 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でテキストファイルを読み込むことはできるようになったけど、次々と新しくファイルを読み込むこと方法が見当つかない

現状、改良方法などについてアドバイスをいただきたく質問させていただきました。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

ループさせているところでテキストファイルの取り込みをしていなかったことが原因だった

投稿2021/07/06 04:52

makoi

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問