import sys,signal,can
from PyQt5 import QtGui, QtCore, QtWidgets
from can.interfaces.interface import Bus

#200 -> 4,5 == speed 6,7 == ?

device = sys.argv[1]

can.rc['interface'] = 'socketcan_ctypes'
can.rc['channel'] = device
bus = Bus()
 
class Main(QtWidgets.QWidget):
 
    def __init__(self):
        super().__init__()
        self.initUI()
 
    def initUI(self):
     
        self.timer = QtCore.QTimer(self)
        self.timer.timeout.connect(self.CAN)
        self.timer.start(1) 
 
        self.lcd = QtWidgets.QLCDNumber(self)
        #set widget size
        self.lcd.setFixedSize(500,200)
        self.lcd.display(0)

        self.setGeometry(50,50,500,200)
        self.setWindowTitle("Speedometer")
 
    def CAN(self):
        while True:
            msg = bus.recv()
            if msg.arbitration_id == 200:
                break
        if len(msg.data) == 8:
            self.lcd.display(int(msg.data[4]))
         
def main():
    app = QtWidgets.QApplication(sys.argv)
    main = Main()
    main.show()

    #changes SIGING(keyboard exception) to SIG_DFL(standard signall process)
    signal.signal(signal.SIGINT, signal.SIG_DFL) 

    sys.exit(app.exec_())
 
if __name__ == "__main__":
    main()