于之前基础上增加功能:py启动后输入缩放比例,十秒内未输入,则初始化后重启py,方可按默认设置执行
Dependencies: MQTT SDFileSystem WIZnet_Library mbed
Fork of Laser_SD_W5500 by
mqtt_laser.py
00001 #!/usr/bin/env python 00002 # -*- coding: UTF-8 -*- 00003 00004 ''' 00005 File name: laser_server_v2.py 00006 Description: 项目激光部分服务器代码 00007 Author: 秦智 00008 Date: June 4, 2018 00009 Others: 00010 Dependency: pip install Pillow paho-mqtt 00011 00012 ''' 00013 00014 from time import sleep 00015 import paho.mqtt.client as mqtt 00016 import threading 00017 import time 00018 from PIL import Image 00019 00020 00021 def waitfile(NumofOnce,minvalue): 00022 filename = "laser-6-4.JPG" 00023 im = Image.open(filename) #打开图片 00024 print("get a picture,the info about filename, im.format, im.size, im.mode:") 00025 print(filename, im.format, im.size, im.mode) 00026 imL = im.convert("L") 00027 x = imL.size[0] #图片的长 00028 y = imL.size[1] #图片的宽 00029 y=int(y*100/x) 00030 x=100 00031 imL=imL.resize((x,y)) #缩放图片 00032 datalist = [] #存放坐标点的数组 00033 for iy in range(0,y): 00034 for ix in range(0,x): 00035 value = imL.getpixel((ix,iy)) #获取像素亮度 00036 if value >=minvalue: #判断阈值 00037 datalist.append([ix,iy,value]) 00038 strdatalist=[] 00039 sdata = "" 00040 nn=0 00041 dotfile = open("write.txt","w") 00042 while len(datalist)>0: 00043 data = datalist.pop(0) 00044 nn=nn+1 00045 # 将坐标转为字符串(x,y,v) 00046 sdata = sdata+"("+str(data[0])+","+str(data[1])+","+str(data[2])+")" 00047 dotfile.write(sdata) 00048 if nn == NumofOnce or len(datalist)==0: 00049 # 构造要发送的字符串数组 00050 strdatalist.append(sdata) 00051 sdata = "" 00052 nn = 0 00053 dotfile.close() 00054 strdatalist.append("(0,0,0)") 00055 return strdatalist 00056 00057 def NewWork(conn): 00058 datalist = waitfile(5,30) 00059 for datastr in datalist: 00060 print("senddata:"+datastr) 00061 conn.publish('/control/laser/dat', datastr, qos=1) 00062 time.sleep(0.01) 00063 00064 def on_message(conn, userdata, msg): 00065 print(msg.topic+" "+str(msg.payload)) 00066 if msg.payload == 'ready.': 00067 print('设备已启动') 00068 # 告诉设备,有新任务 00069 conn.publish('/control/laser/cmd', "1", qos=1) 00070 elif msg.payload == 'wait data.': 00071 print('等待接收数据') 00072 # 调用发送数据函数 00073 NewWork(conn) 00074 # 告诉设备,数据发送完 00075 conn.publish('/control/laser/cmd', "2", qos=1) 00076 elif msg.payload == 'received.': 00077 print('数据接收完成') 00078 elif msg.payload == 'done.': 00079 print('任务完成') 00080 00081 def on_connect(client, userdata, flags, rc): 00082 print("Connected with result code "+str(rc)) 00083 00084 waitfile(10,30); #测试保存文件功能 00085 00086 client = mqtt.Client() 00087 client.on_connect = on_connect 00088 client.on_message = on_message 00089 client.connect("tdxls-iot.xicp.net", 1883, 60) 00090 client.subscribe('/values/laser/report', 1) 00091 client.loop_start() 00092 while True: 00093 sleep(0.1)
Generated on Sat Jul 16 2022 19:47:56 by 1.7.2