質問編集履歴
3
ソケット通信のコードとFlaskのコードを合わせたものを追加いたしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -156,6 +156,138 @@
|
|
156
156
|
|
157
157
|
```
|
158
158
|
|
159
|
+
```Python
|
160
|
+
|
161
|
+
from flask import * # 必要なライブラリのインポート
|
162
|
+
|
163
|
+
import logging
|
164
|
+
|
165
|
+
import socket
|
166
|
+
|
167
|
+
import webbrowser
|
168
|
+
|
169
|
+
|
170
|
+
|
171
|
+
# webbrowser.open_new('https://docs.python.org/ja/3/library/index.html') # ブラウザーに接続
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
logging.basicConfig(level=logging.DEBUG, format='%(threadName)s: %(message)s')
|
176
|
+
|
177
|
+
host_ip = '192.168.24.204' # PLCのIPアドレス
|
178
|
+
|
179
|
+
host_port = 8501 # 上位リンク通信のポート番号(デフォルト値)
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
logging.debug('start')
|
184
|
+
|
185
|
+
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
186
|
+
|
187
|
+
# socket.AF_INETでip4を使うことを指定。socket.SOCK_STREAMでTCPを使うことを指定。
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
try:
|
192
|
+
|
193
|
+
#クライアント接続
|
194
|
+
|
195
|
+
client.connect((host_ip,host_port)) # サーバーに接続(kv-7500にTCP接続/上位リンク通信)
|
196
|
+
|
197
|
+
except:
|
198
|
+
|
199
|
+
print("PLC接続NG")
|
200
|
+
|
201
|
+
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
comand = "RD DM1016.D\r" # 上位リンク通信のコマンド(データ読み出しコマンド、左から順に、読み出しコード、IOの番号、?。
|
212
|
+
|
213
|
+
# DM1016:生産数日
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
#comand = "RDS DM53000.D 2\r" # 上位リンク通信のコマンド(データ連続読み出しコマンド)
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
#[.D]⇒±10進数32BIT表示・・・返り値は10桁の0埋め数値
|
224
|
+
|
225
|
+
|
226
|
+
|
227
|
+
client.send(comand.encode("ascii")) # 上位リンク通信のデータコードがASCIIなのでエンコード
|
228
|
+
|
229
|
+
# ASCII:文字コード
|
230
|
+
|
231
|
+
# comand を ASCII にエンコード
|
232
|
+
|
233
|
+
# エンコード:他の形式に変換すること
|
234
|
+
|
235
|
+
print("send : " + comand)
|
236
|
+
|
237
|
+
|
238
|
+
|
239
|
+
response = client.recv(64) # 受信用バイト配列を定義しておく
|
240
|
+
|
241
|
+
response = response.decode("UTF-8") # PLCからの返答がbyteデータなのでUTF-8にデコード
|
242
|
+
|
243
|
+
# UTF-8: 文字コード ASCIIよりデータサイズが小さい
|
244
|
+
|
245
|
+
# デコード:エンコードされたものをもとの形式に戻すこと
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
client.close()
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
print("Received :" ,response)
|
254
|
+
|
255
|
+
logging.debug('end')
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
|
262
|
+
|
263
|
+
app = Flask(__name__) # アプリの設定
|
264
|
+
|
265
|
+
|
266
|
+
|
267
|
+
|
268
|
+
|
269
|
+
@app.route("/") # どのページで実行する関数か設定
|
270
|
+
|
271
|
+
|
272
|
+
|
273
|
+
def index():
|
274
|
+
|
275
|
+
return render_template("index.html", command=response) # Hello, World! を出力
|
276
|
+
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
if __name__ == "__main__": # 実行されたら
|
284
|
+
|
285
|
+
app.run(debug=False, host='localhost', port=9999) # debug=False でRestartingを無効にする、host="'0'0'0'0"ではなくローカルホストにすること
|
286
|
+
|
287
|
+
```
|
288
|
+
|
289
|
+
|
290
|
+
|
159
291
|
```HTML
|
160
292
|
|
161
293
|
<!doctype html>
|
2
index() 内の記述変更しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,6 +10,10 @@
|
|
10
10
|
|
11
11
|
![イメージ説明](0f87e95de7e26c1c3c94d6fdb0fa6391.png)
|
12
12
|
|
13
|
+
![イメージ説明](9550a2cf78c11f0dff13e32e3f86c0ec.png)
|
14
|
+
|
15
|
+
![イメージ説明](c9ca3a46b87d71a15c21208deca8b579.png)
|
16
|
+
|
13
17
|
|
14
18
|
|
15
19
|
### 該当のソースコード
|
@@ -189,3 +193,29 @@
|
|
189
193
|
上記のソケット通信のコードをもう一つのPythonのコードに組み込み、comandという変数をそろえて実行しましたが同様のエラーが発生いたします。
|
190
194
|
|
191
195
|
数日前にも同様の質問をしましたが解決できませんでした。
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
comand という変数が数値を受け取るものではなく、コマンド入れているだけだったので、index()内のcomand という部分をresponse に変えてみましたが、以前表示されません。
|
200
|
+
|
201
|
+
具体的なエラーの流れは
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
デバック
|
206
|
+
|
207
|
+
↓
|
208
|
+
|
209
|
+
コマンドプロンプロ上に「 Running on http://localhost:9999/ 」と表示されます (画像2)
|
210
|
+
|
211
|
+
↓
|
212
|
+
|
213
|
+
実際に http://localhost:9999/ に飛ぶ
|
214
|
+
|
215
|
+
↓
|
216
|
+
|
217
|
+
例外がスローされましたと表示される (画像1)
|
218
|
+
|
219
|
+
↓
|
220
|
+
|
221
|
+
ブラウザは読み込み中のまま (画像3)
|
1
index()でcomand=comand をcomand=responseに変更いたしました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,7 +40,7 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
-
return render_template('index.html', comand=
|
43
|
+
return render_template('index.html', comand=response)
|
44
44
|
|
45
45
|
|
46
46
|
|