副部長の部屋

最近python始めたので、雑記帳代わりにします。 まとまり無くいきますのでよろしくです!! 後日、まとめます(笑)

パソコン同士でのデーターの受け渡しを考えてみる(なんちゃってパソコン通信)

ども副部長です!!

SQLは現在勉強中なので、仕上がりがいつになるか検討つきません。(笑)
まあ、1回目よりは短期間で出来るでしょう・・・。
CSVを使用した、なんちゃって在庫管理は出来てるのですが、データベースと言えば、やはりSQL使ってみたいですよね。

さて今回は、なんちゃってパソコン通信を考えてみます。
なぜこんなこと考えたかというと、ラズベリーパイがやっぱりおバカだからです。(笑)
画像処理とか計算量が増えると、やはり重いですよね。
なので、計算パワーがある普通のパソコン(ノートでもデスクトップでも)に処理を任せて、ラズベリーパイにはGPIOの出力のみを任せて、機械制御をしたほうがいいのではないかってことです。
テストの為、短時間で作ったので、インポートが多いとか詰めが甘いとかは、大目に見てください。(笑)


まずは、CSV(連携.csv)を用意。

,signal,on
0,signal1,0
1,signal2,0
2,signal3,0


そして、検知側(普通のパソコン側)

import numpy as np
import pandas as pd
import csv
import tkinter as tk
from datetime import datetime
import time

#csvの設定
signal_csv = '//データーのあるフォルダー/連携.csv'

signal_number = 0

df = pd.read_csv(signal_csv,
                     index_col=0, engine='python')
while True:
    try:
        swich = df.at[signal_number, "on"]
        if swich == 0:
            print("ONにします")
            df.at[signal_number,"on"] = 1
            df.to_csv(signal_csv, mode='w', encoding='cp932')
        else:
            print("OFFにします")
            df.at[signal_number, "on"] = 0
            df.to_csv(signal_csv, mode='w', encoding='cp932')
    except :
        print("エラーだね")
    time.sleep(1)

今回は、1秒ごとにON、OFFを繰り返し検出しているという仮定です。
検知すれば、CSVに書き込みします。
なお、encoding='cp932'は、Windowsパソコンの為みたいなので、Linuxとかは違うみたい。

次に、GPIO側(ラズベリーパイ側)

import numpy as np
import pandas as pd
import csv
import tkinter as tk
from datetime import datetime
import time

#csvの設定
signal_csv = '//データーのあるフォルダー/連携.csv'

signal_number = 0

while True:
    try:
        df = pd.read_csv(signal_csv,
                         index_col=0, engine='python')
        swich = df.at[signal_number, "on"]
        if swich == 0:
            print("機械はそのまま操業します")
        else:
            print("機械に非常停止を送ります")
    except:
        print("エラーだね")

コード内には、GPIOの記述がありませんが、パソコン側が書き込んだCSVを見ているので、通信出来てるってことで良いのではないでしょうか。
なお、ラズベリーパイ側はtry exceptが無いと、プログラムを回してる間にエラーで止まります。
0.1秒ごとに読みに行くとか、時間間隔を取ってやってみたのですが、やはりタイミング良く、書き込み中などにぶち当たるみたい(推測)
CSVの書き込みを増やせば、何台だって行けそうです。(全然違う複数プログラムがCSVを中心にそれぞれが目的のパソコン向いて通信出来そう??)
まあ~素人考えなので、もっと良い方法あるんでしょうけどね(笑)
取り急ぎの思い付きでした。

結論

シリアル接続とか難しいこと考えなくても無線LANCSVで何とかなる!!!(横着)


ではでは!!