收到xy自动缩放

Dependencies:   MQTT SDFileSystem WIZnet_Library mbed

Fork of wmx_laser by w mx

Committer:
zhangyx
Date:
Mon Jul 23 04:23:25 2018 +0000
Revision:
6:48c44bebe8fb
Child:
7:4c80e598d08c
add Python script

Who changed what in which revision?

UserRevisionLine numberNew contents of line
zhangyx 6:48c44bebe8fb 1 #!/usr/bin/env python
zhangyx 6:48c44bebe8fb 2 # -*- coding: UTF-8 -*-
zhangyx 6:48c44bebe8fb 3
zhangyx 6:48c44bebe8fb 4 '''
zhangyx 6:48c44bebe8fb 5 File name: laser_server_v2.py
zhangyx 6:48c44bebe8fb 6 Description: 项目激光部分服务器代码
zhangyx 6:48c44bebe8fb 7 Author: 秦智
zhangyx 6:48c44bebe8fb 8 Date: June 4, 2018
zhangyx 6:48c44bebe8fb 9 Others:
zhangyx 6:48c44bebe8fb 10 Dependency: pip install Pillow paho-mqtt
zhangyx 6:48c44bebe8fb 11
zhangyx 6:48c44bebe8fb 12 '''
zhangyx 6:48c44bebe8fb 13
zhangyx 6:48c44bebe8fb 14 from time import sleep
zhangyx 6:48c44bebe8fb 15 import paho.mqtt.client as mqtt
zhangyx 6:48c44bebe8fb 16 import threading
zhangyx 6:48c44bebe8fb 17 import time
zhangyx 6:48c44bebe8fb 18 from PIL import Image
zhangyx 6:48c44bebe8fb 19
zhangyx 6:48c44bebe8fb 20
zhangyx 6:48c44bebe8fb 21 def waitfile(NumofOnce,minvalue):
zhangyx 6:48c44bebe8fb 22 filename = "laser-6-4.JPG"
zhangyx 6:48c44bebe8fb 23 im = Image.open(filename) #打开图片
zhangyx 6:48c44bebe8fb 24 print("get a picture,the info about filename, im.format, im.size, im.mode:")
zhangyx 6:48c44bebe8fb 25 print(filename, im.format, im.size, im.mode)
zhangyx 6:48c44bebe8fb 26 imL = im.convert("L")
zhangyx 6:48c44bebe8fb 27 x = imL.size[0] #图片的长
zhangyx 6:48c44bebe8fb 28 y = imL.size[1] #图片的宽
zhangyx 6:48c44bebe8fb 29 y=int(y*100/x)
zhangyx 6:48c44bebe8fb 30 x=100
zhangyx 6:48c44bebe8fb 31 imL=imL.resize((x,y)) #缩放图片
zhangyx 6:48c44bebe8fb 32 datalist = [] #存放坐标点的数组
zhangyx 6:48c44bebe8fb 33 for iy in range(0,y):
zhangyx 6:48c44bebe8fb 34 for ix in range(0,x):
zhangyx 6:48c44bebe8fb 35 value = imL.getpixel((ix,iy)) #获取像素亮度
zhangyx 6:48c44bebe8fb 36 if value >=minvalue: #判断阈值
zhangyx 6:48c44bebe8fb 37 datalist.append([ix,iy,value])
zhangyx 6:48c44bebe8fb 38 strdatalist=[]
zhangyx 6:48c44bebe8fb 39 sdata = ""
zhangyx 6:48c44bebe8fb 40 nn=0
zhangyx 6:48c44bebe8fb 41 while len(datalist)>0:
zhangyx 6:48c44bebe8fb 42 data = datalist.pop(0)
zhangyx 6:48c44bebe8fb 43 nn=nn+1
zhangyx 6:48c44bebe8fb 44 # 将坐标转为字符串(x,y,v)
zhangyx 6:48c44bebe8fb 45 sdata = sdata+"("+str(data[0])+","+str(data[1])+","+str(data[2])+")"
zhangyx 6:48c44bebe8fb 46 if nn == NumofOnce or len(datalist)==0:
zhangyx 6:48c44bebe8fb 47 # 构造要发送的字符串数组
zhangyx 6:48c44bebe8fb 48 strdatalist.append(sdata)
zhangyx 6:48c44bebe8fb 49 sdata = ""
zhangyx 6:48c44bebe8fb 50 nn = 0
zhangyx 6:48c44bebe8fb 51 strdatalist.append("(0,0,0)")
zhangyx 6:48c44bebe8fb 52 return strdatalist
zhangyx 6:48c44bebe8fb 53
zhangyx 6:48c44bebe8fb 54 def NewWork(conn):
zhangyx 6:48c44bebe8fb 55 datalist = waitfile(5,30)
zhangyx 6:48c44bebe8fb 56 for datastr in datalist:
zhangyx 6:48c44bebe8fb 57 print("senddata:"+datastr)
zhangyx 6:48c44bebe8fb 58 conn.publish('/control/laser/dat', datastr, qos=1)
zhangyx 6:48c44bebe8fb 59 time.sleep(0.01)
zhangyx 6:48c44bebe8fb 60
zhangyx 6:48c44bebe8fb 61 def on_message(conn, userdata, msg):
zhangyx 6:48c44bebe8fb 62 print(msg.topic+" "+str(msg.payload))
zhangyx 6:48c44bebe8fb 63 if msg.payload == 'ready.':
zhangyx 6:48c44bebe8fb 64 print('设备已启动')
zhangyx 6:48c44bebe8fb 65 # 告诉设备,有新任务
zhangyx 6:48c44bebe8fb 66 conn.publish('/control/laser/cmd', "1", qos=1)
zhangyx 6:48c44bebe8fb 67 elif msg.payload == 'wait data.':
zhangyx 6:48c44bebe8fb 68 print('等待接收数据')
zhangyx 6:48c44bebe8fb 69 # 调用发送数据函数
zhangyx 6:48c44bebe8fb 70 NewWork(conn)
zhangyx 6:48c44bebe8fb 71 # 告诉设备,数据发送完
zhangyx 6:48c44bebe8fb 72 conn.publish('/control/laser/cmd', "2", qos=1)
zhangyx 6:48c44bebe8fb 73 elif msg.payload == 'received.':
zhangyx 6:48c44bebe8fb 74 print('数据接收完成')
zhangyx 6:48c44bebe8fb 75 elif msg.payload == 'done.':
zhangyx 6:48c44bebe8fb 76 print('任务完成')
zhangyx 6:48c44bebe8fb 77
zhangyx 6:48c44bebe8fb 78 def on_connect(client, userdata, flags, rc):
zhangyx 6:48c44bebe8fb 79 print("Connected with result code "+str(rc))
zhangyx 6:48c44bebe8fb 80
zhangyx 6:48c44bebe8fb 81 client = mqtt.Client()
zhangyx 6:48c44bebe8fb 82 client.on_connect = on_connect
zhangyx 6:48c44bebe8fb 83 client.on_message = on_message
zhangyx 6:48c44bebe8fb 84 client.connect("tdxls-iot.xicp.net", 1883, 60)
zhangyx 6:48c44bebe8fb 85 client.subscribe('/values/laser/report', 1)
zhangyx 6:48c44bebe8fb 86 client.loop_start()
zhangyx 6:48c44bebe8fb 87 while True:
zhangyx 6:48c44bebe8fb 88 sleep(0.1)
zhangyx 6:48c44bebe8fb 89