问题描述
我正在一个项目中,在该项目中,我将两个旋转编码器与RaspBerry pi进行了接口,同时读取了两个传感器值,并在tkinter窗口中显示了它们,现在根据项目,每当收到查询命令时,我就需要将这些值发送到PC从PC上。我从Google读到,如果我们想要两个连续循环,那么我们可以通过线程方法来实现。但是我对线程没有足够的了解。 下面我提供了tkinter代码以及TCP / IP代码。
import pigpio
import tkinter as tk
from PIL import ImageTk,Image
import time
from RPi import GPIO
import serial
i="*00T%"
j="*01T%"
s=serial.Serial(port='/dev/ttyS0',baudrate=9600,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,bytesize=serial.EIGHTBITS,timeout=1)
class decoder: # class for decoding rotary encoder
def __init__(self,pi,gpioA,gpioB,callback):
----------
---------------
----------------
if __name__ == "__main__":
rpm=0
tor=0
pow=0
pi = pigpio.pi()
st=1
pos=0
def callback(way): # interrupt event sense on pin no 17,18
global pos
global st
if st ==1:
pos += way
if pos >= 9999:
pos=9999
if pos <= 0:
pos=0
var.set(pos)
print("pos={}".format(pos))
def rpm_update():
--------------
rpm read code
---------------
def tor_update():
-------------------
torque read code
---------------------
def pow_update():
------------------------
power Calculation
--------------------------
def update():
--------------------
root.after(200,update)
path="/home/pi/logo.png"
root=tk.Tk()
img=ImageTk.PhotoImage(Image.open(path))
panel=tk.Label(root,image=img)
panel.pack()
panel.place(x=195,y=10,height=50,width=80)
root.title("Dynalec")
root.geometry("500x600")
{
body of tkinter screen
}
decoder=decoder(pi,17,18,callback)
root.after(200,update)
root.mainloop()
和我的服务器代码,它们在while循环中运行良好。 我想将这两个代码完美地合并以达到预期的效果。
import socket
import encodings
rpm = 2000
tor = 35
pow = 7.33
HOST = '169.254.29.78'
PORT = 65432
def data():
global rpm,tor,pow
my_sensor = "{},{},{}".format(rpm,pow)
return my_sensor # return data seperated by comma
def my_server():
with socket.socket(socket.AF_INET,socket.soCK_STREAM) as s:
print("Server Started waiting for client to connect ")
s.bind((HOST,PORT))
s.listen(5)
conn,addr = s.accept()
with conn:
print('Connected by',addr)
while True:
data = conn.recv(1024).decode('utf-8')
if str(data) == "Data":
print("Ok Sending data ")
my_data = data()
x_encoded_data = my_data.encode('utf-8')
conn.sendall(x_encoded_data)
elif str(data) == "Quit":
print("shutting down server ")
break
if not data:
break
else:
pass
if __name__ == '__main__':
while 1:
my_server()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)