-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver
178 lines (172 loc) · 6.13 KB
/
server
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 13 16:33:58 2018
20190314
@author: adi
"""
import grpc
import robohon_message_pb2
import robohon_message_pb2_grpc
import wound_predict as wp
from concurrent import futures
import FR_svm as fr
import data
def faceinfo():
global input_s
getface = fr.main()
input_s = " ".join(getface)
#input_s=fr.main()
print(input_s)
return input_s
def woundinfo(wpclass):
global input_s
input_s=wpclass.pre()
#print(input_s)
return input_s
class Servicer(robohon_message_pb2_grpc.RoBoHoNMessageServicer):
def __init__(self):
self.request = None
def RequestInfo(self, request, context):
#Get info to send
self.request=request
#print(self.request.info_type)
global input_s
if input_s == None:
sentence = 'empty'
else:
sentence = input_s
#Wait for RoBoHoN to send back request "Finish"
if request.info_type == "Finish":
input_s = None
else:
input_s = 'empty'
#print('Sentence: ', sentence)
return robohon_message_pb2.desktop(sentence=sentence)
def requestinfo(self):
if self.request == None:
return None
return self.request.info_type
def serve():
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
a=Servicer()
robohon_message_pb2_grpc.add_RoBoHoNMessageServicer_to_server(a, server)
server.add_insecure_port('[::]:12345')
server.start()
wpclass=wp.wpredict()
total=0
wrong=0
wound=''
measure=''
place=''
idnum=0
global input_s, prev_req
try:
while True:
#input_s='get'
req=a.requestinfo()
#print(req)
if not req is None and not req == "sentence" and not req == prev_req:
print(req)
else:
continue
prev_req = req
if req=='face':
print("Face Recognition!")
idnum=faceinfo()
total=total+1
elif req=='incorrect':
idnum=a.requestinfo()
while idnum=='incorrect'or idnum =='sentence':
idnum=a.requestinfo()
idnum=idnum.replace('-','')
print(idnum)
if req=='place':
place=a.requestinfo()
while place=='place' or place=='sentence':
place=a.requestinfo()
place=place.lstrip('在')
print(place)
if req=='woundpredict':
print("wound recognition!")
wound=woundinfo(wpclass)
'''if wound=='擦傷' or wound=='割裂傷' or wound=='抓傷':
measure='傷口處理'
elif wound=='瘀青' or wound=='扭傷'or wound=='拉傷':
measure='冰敷'
elif wound=='頭痛' or wound=='肚子痛' or wound=='頭暈':
measure='護理師治療'
elif wound=='肌肉痠痛':
measure='肌樂肌貼伸展'
elif wound=='抽筋':
measure='伸展' '''
#data.write(idnum,wound,measure,place)
if req=='擦傷' or req=='割裂傷' or req=='抓傷':
print("Get")
measure='傷口處理'
data.write(idnum,req,measure,place)
elif req=='瘀青' or req=='扭傷'or req=='拉傷':
measure='冰敷'
data.write(idnum,req,measure,place)
elif req=='頭痛' or req=='肚子痛' or req=='頭暈':
place=''
measure='護理師治療'
data.write(idnum,req,measure,place)
elif req=='肌肉痠痛':
place=''
measure='肌樂肌貼伸展'
data.write(idnum,req,measure,place)
elif req=='抽筋':
place=''
measure='伸展'
data.write(idnum,req,measure,place)
#print('write data')
#break
'''elif req=='wincorrect':
while wound=='sentence':
wound=a.requestinfo()
#wound=a.requestinfo()
if wound=='擦傷' or wound=='割裂傷' or wound=='抓傷':
measure='傷口處理'
elif wound=='瘀青' or wound=='扭傷'or wound=='拉傷':
measure='冰敷'
elif wound=='頭痛' or wound=='肚子痛' or wound=='頭暈':
measure='護理師治療'
elif wound=='肌肉痠痛':
measure='肌樂肌貼伸展'
elif wound=='抽筋':
measure='伸展'
data.write(idnum,wound,measure,place)
req='written'
print('write data')
wrong=wrong+1
#break
elif req=='elsewound':
wound=a.requestinfo()
while place=='place' or place=='sentence':
place=a.requestinfo()
if wound=='擦傷' or wound=='割裂傷' or wound=='抓傷':
measure='傷口處理'
elif wound=='瘀青' or wound=='扭傷'or wound=='拉傷':
measure='冰敷'
elif wound=='頭痛' or wound=='肚子痛' or wound=='頭暈':
measure='護理師治療'
elif wound=='肌肉痠痛':
measure='肌樂肌貼伸展'
elif wound=='抽筋':
measure='伸展'
data.write(idnum,wound,measure,place)
print('write data')
#break'''
#data.write(idnum,wound,measure,place)
except KeyboardInterrupt:
'''print('total user:')
print(total)
print('wrong predict:')
print(wrong)
print('accuracy:')
print((float)(total-wrong)/total)'''
server.stop(0)
if __name__ == '__main__':
global input_s, prev_req
input_s, prev_req = None, None
serve()