-
Notifications
You must be signed in to change notification settings - Fork 0
/
reflowcurve.py
114 lines (88 loc) · 3.53 KB
/
reflowcurve.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
from pylibrnp.defaultpackets import *
from pylibrnp.rnppacket import *
# import ..pylibrnp.defaultpackets
# import ..pylibrnp.rnppacket
import socketio
import argparse
import time
import pandas as pd
sio = socketio.Client(logger=False, engineio_logger=False)
df = pd.DataFrame
def importcurve():
df = pd.read_csv("reflowcurve.csv", delimiter= ',')
return df.to_numpy()
def findTemp(time, timebelow, timeabove, tempbelow, tempabove):
dt = (time - timebelow) / (timeabove - timebelow)
newtemp = dt * (tempabove - tempbelow) + tempbelow
return newtemp;
@sio.event
def connect():
print("I'm connected!")
@sio.event
def connect_error(data):
print("The connection failed!")
@sio.event
def disconnect():
print("I'm disconnected!")
@sio.on('response',namespace='/packet')
def on_response_handler(data):
print(data)
try:
packet = bytes.fromhex(data['data'])
header = RnpHeader.from_bytes(packet)
print(header)
if header.source_service == 2 and header.packet_type == 100:
#we have a string message packet
packet_body = packet[RnpHeader.size:]
try:
message = packet_body.decode('UTF-8')
except:
message = str(packet_body)
print("Message: " + message)
except:
print("Failed to decode header")
@sio.on('Error',namespace='/packet')
def on_error_handler(data):
print(data)
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("--host", required=False, help="backend host", type=str,default = "localhost")
ap.add_argument("--port", required=False, help="backend port", type=int,default = 1337)
args = vars(ap.parse_args())
sio.connect('http://' + args["host"] + ':' + str(args['port']) + '/',namespaces=['/','/telemetry','/packet'])
data = importcurve()
prevTime = time.time()
startTime = time.time()
rows, cols = data.shape
for i in range(rows-2):
while (time.time() - startTime < data[i,1]):
if (time.time() - prevTime > 0.10):
currtime = time.time() - startTime
source = 1
destination = 0
destination_service = 2
command_num = 69
arg = (273.15+findTemp(currtime,data[i,1],data[i+1,1],data[i,0],data[i+1,0])) * 10000
#print(arg)
cmd_packet :SimpleCommandPacket= SimpleCommandPacket(command = int(command_num), arg = int(arg))
cmd_packet.header.destination_service = int(destination_service)
cmd_packet.header.source_service = 1
cmd_packet.header.source = int(source)
cmd_packet.header.destination = int(destination)
cmd_packet.header.packet_type = 0
serializedPacket:str = cmd_packet.serialize().hex()
sio.emit('send_data',{'data':serializedPacket},namespace='/packet')
prevTime = time.time()
source = 1
destination = 0
destination_service = 2
command_num = 69
arg = 0
cmd_packet :SimpleCommandPacket= SimpleCommandPacket(command = int(command_num), arg = int(arg))
cmd_packet.header.destination_service = int(destination_service)
cmd_packet.header.source_service = 1
cmd_packet.header.source = int(source)
cmd_packet.header.destination = int(destination)
cmd_packet.header.packet_type = 0
serializedPacket:str = cmd_packet.serialize().hex()
sio.emit('send_data',{'data':serializedPacket},namespace='/packet')