收到xy自动缩放

Dependencies:   MQTT SDFileSystem WIZnet_Library mbed

Fork of wmx_laser by w mx

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers mqtt_laser.py Source File

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)