-
Notifications
You must be signed in to change notification settings - Fork 0
/
UDPSender.py
36 lines (30 loc) · 1.21 KB
/
UDPSender.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
from can import Listener
import socket
class UDPSender(Listener):
dataConvert = {"0x600": {"String": "RPM:",
"Slot": 0,
"Conversion": 1},
"0x601": {"String": "OIL:",
"Slot": 2,
"Conversion": (1/81.92)}}
def __init__(self, IP="10.0.0.4", PORT=5555):
self.ip = IP
self.port = PORT
self.sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
def on_message_received(self, msg):
udpMessage = self.can_to_udp_message(msg)
if udpMessage:
self.sock.sendto(udpMessage.encode(), (self.ip, self.port))
def can_to_udp_message(self, msg):
hexId = msg.arbitration_id
if self.dataConvert.get(hexId):
dataId = self.dataConvert[hexId]["String"]
dataSlot = self.dataConvert[hexId]["Slot"]
dataConversion = self.dataConvert[hexId]["Conversion"]
data = ( (msg.data[dataSlot] << 8) + msg.data[dataSlot + 1] ) * dataConversion
udpMessage = dataId + data
return udpMessage
else:
return None
def __del__(self):
self.sock.close()