Skip to content

Commit

Permalink
CAN frames receiver
Browse files Browse the repository at this point in the history
  • Loading branch information
kubasaw committed Nov 4, 2019
1 parent 0f45b6b commit 9d0d1e8
Show file tree
Hide file tree
Showing 7 changed files with 104 additions and 39 deletions.
3 changes: 2 additions & 1 deletion car/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from .motion import motion, track
from .util import *
#from .guiConnector import *
#from .guiConnector import *
from .canListener import canFrameAppender
13 changes: 13 additions & 0 deletions car/canListener.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from can import Listener
from PyQt5.QtCore import pyqtSignal, QObject

class canFrameAppender(Listener, QObject):

frameReceived = pyqtSignal(str)

def __init__(self,appendFunction):
super().__init__()
self.frameReceived.connect(appendFunction)

def on_message_received(self,msg):
self.frameReceived.emit("ID: {}\tDLC: {}\t{}".format(msg.arbitration_id,msg.dlc,msg.data.hex()))
21 changes: 14 additions & 7 deletions gui/mainWindow.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainWindow.ui'
# Form implementation generated from reading ui file 'gui\mainWindow.ui'
#
# Created by: PyQt5 UI code generator 5.13.0
#
Expand All @@ -13,13 +13,13 @@
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(714, 433)
MainWindow.resize(1020, 433)
MainWindow.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedKingdom))
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedKingdom))
self.centralwidget.setObjectName("centralwidget")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(10, 10, 671, 341))
self.tabWidget.setGeometry(QtCore.QRect(10, 10, 971, 341))
self.tabWidget.setToolTipDuration(0)
self.tabWidget.setObjectName("tabWidget")
self.Connection = QtWidgets.QWidget()
Expand All @@ -37,9 +37,16 @@ def setupUi(self, MainWindow):
self.connectPort.setGeometry(QtCore.QRect(10, 270, 211, 23))
self.connectPort.setCheckable(True)
self.connectPort.setObjectName("connectPort")
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.Connection)
self.plainTextEdit.setGeometry(QtCore.QRect(243, 20, 411, 291))
self.plainTextEdit.setObjectName("plainTextEdit")
self.canInterfaceTypes = QtWidgets.QComboBox(self.serialSettings)
self.canInterfaceTypes.setGeometry(QtCore.QRect(10, 80, 211, 22))
self.canInterfaceTypes.setObjectName("canInterfaceTypes")
self.canInterfaceTypes.addItem("")
self.canInterfaceTypes.setItemText(0, "slcan")
self.canInterfaceTypes.addItem("")
self.canInterfaceTypes.setItemText(1, "serial")
self.canReceived = QtWidgets.QPlainTextEdit(self.Connection)
self.canReceived.setGeometry(QtCore.QRect(243, 20, 711, 291))
self.canReceived.setObjectName("canReceived")
self.tabWidget.addTab(self.Connection, "")
self.Simulation = QtWidgets.QWidget()
self.Simulation.setObjectName("Simulation")
Expand Down Expand Up @@ -105,7 +112,7 @@ def setupUi(self, MainWindow):
self.tabWidget.addTab(self.Settings, "")
MainWindow.setCentralWidget(self.centralwidget)
self.menuBar = QtWidgets.QMenuBar(MainWindow)
self.menuBar.setGeometry(QtCore.QRect(0, 0, 714, 21))
self.menuBar.setGeometry(QtCore.QRect(0, 0, 1020, 21))
self.menuBar.setObjectName("menuBar")
self.menuMain = QtWidgets.QMenu(self.menuBar)
self.menuMain.setObjectName("menuMain")
Expand Down
30 changes: 25 additions & 5 deletions gui/mainWindow.ui
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>714</width>
<width>1020</width>
<height>433</height>
</rect>
</property>
Expand All @@ -25,7 +25,7 @@
<rect>
<x>10</x>
<y>10</y>
<width>671</width>
<width>971</width>
<height>341</height>
</rect>
</property>
Expand Down Expand Up @@ -90,13 +90,33 @@
<bool>true</bool>
</property>
</widget>
<widget class="QComboBox" name="canInterfaceTypes">
<property name="geometry">
<rect>
<x>10</x>
<y>80</y>
<width>211</width>
<height>22</height>
</rect>
</property>
<item>
<property name="text">
<string notr="true">slcan</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">serial</string>
</property>
</item>
</widget>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit">
<widget class="QPlainTextEdit" name="canReceived">
<property name="geometry">
<rect>
<x>243</x>
<y>20</y>
<width>411</width>
<width>711</width>
<height>291</height>
</rect>
</property>
Expand Down Expand Up @@ -247,7 +267,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>714</width>
<width>1020</width>
<height>21</height>
</rect>
</property>
Expand Down
Binary file modified lang/carSim_pl_PL.qm
Binary file not shown.
48 changes: 29 additions & 19 deletions lang/carSim_pl_PL.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,27 +42,27 @@ p, li { white-space: pre-wrap; }
<context>
<name>Dialog</name>
<message>
<location filename="../main.py" line="49"/>
<location filename="../main.py" line="105"/>
<source>Error</source>
<translation>Błąd</translation>
</message>
<message>
<location filename="../main.py" line="69"/>
<location filename="../main.py" line="73"/>
<source>Save Config</source>
<translation>Zapisz plik ustawień</translation>
</message>
<message>
<location filename="../main.py" line="78"/>
<location filename="../main.py" line="82"/>
<source>Config Files (*.json)</source>
<translation>Pliki konfiguracyjne (*.json)</translation>
</message>
<message>
<location filename="../main.py" line="78"/>
<location filename="../main.py" line="82"/>
<source>All Files(*.*)</source>
<translation>Wszystkie pliki (*.*)</translation>
</message>
<message>
<location filename="../main.py" line="78"/>
<location filename="../main.py" line="82"/>
<source>Open Config</source>
<translation>Otwórz plik ustawień</translation>
</message>
Expand All @@ -75,62 +75,62 @@ p, li { white-space: pre-wrap; }
<translation>Symulator</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="91"/>
<location filename="../gui/mainWindow.ui" line="107"/>
<source>Simulation</source>
<translation>Symulacja</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="106"/>
<location filename="../gui/mainWindow.ui" line="122"/>
<source>Position</source>
<translation>Położenie</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="140"/>
<location filename="../gui/mainWindow.ui" line="156"/>
<source>Fuel</source>
<translation>Paliwo</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="150"/>
<location filename="../gui/mainWindow.ui" line="166"/>
<source>Speed</source>
<translation>Prędkość</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="160"/>
<location filename="../gui/mainWindow.ui" line="176"/>
<source>Time</source>
<translation>Czas</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="177"/>
<location filename="../gui/mainWindow.ui" line="193"/>
<source>Make Simulation &amp;Step!</source>
<translation>Wykonaj krok &amp;symulacji!</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="184"/>
<location filename="../gui/mainWindow.ui" line="200"/>
<source>Engine</source>
<translation>Silnik</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="240"/>
<location filename="../gui/mainWindow.ui" line="256"/>
<source>Main</source>
<translation>Główne</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="264"/>
<location filename="../gui/mainWindow.ui" line="280"/>
<source>About</source>
<translation>O aplikacji</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="259"/>
<location filename="../gui/mainWindow.ui" line="275"/>
<source>Close</source>
<translation>Zamknij</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="269"/>
<location filename="../gui/mainWindow.ui" line="285"/>
<source>Import Settings</source>
<translation>Wczytaj ustawienia</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="274"/>
<location filename="../gui/mainWindow.ui" line="290"/>
<source>Export Settings</source>
<translation>Zapisz ustawienia</translation>
</message>
Expand All @@ -150,14 +150,24 @@ p, li { white-space: pre-wrap; }
<translation>Odśwież</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="196"/>
<location filename="../gui/mainWindow.ui" line="212"/>
<source>Settings</source>
<translation>Ustawienia</translation>
</message>
<message>
<location filename="../gui/mainWindow.ui" line="223"/>
<location filename="../gui/mainWindow.ui" line="239"/>
<source>Language</source>
<translation>Język</translation>
</message>
<message>
<location filename="../main.py" line="110"/>
<source>Connect</source>
<translation>Połącz</translation>
</message>
<message>
<location filename="../main.py" line="107"/>
<source>Disconnect</source>
<translation>Rozłącz</translation>
</message>
</context>
</TS>
28 changes: 21 additions & 7 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,19 +90,33 @@ def on_actionImport_Settings_triggered(self):
def on_refreshAvailablePorts_clicked(self):
ports = serial.tools.list_ports.comports()
for port, desc, hwid in sorted(ports):
self.availablePorts.addItem("{}: {}".format(port, desc))
self.availablePorts.addItem(desc,port)



@pyqtSlot(bool)
def on_connectPort_clicked(self, state):
if state:
self.connectPort.setText(_translate("Main Window", "Disconnect"))
self.__canbus = can.interface.Bus(bustype='slcan', channel="COM3")
tx_msg = can.Message(arbitration_id=0x01, data=[
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88])
self.__canbus.send(tx_msg)
try:
self.__canbus = can.interface.Bus(bustype=self.canInterfaceTypes.currentText(), channel=self.availablePorts.currentData())
tx_msg = can.Message(arbitration_id=0x01, data=[
0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88], is_extended_id=False)
self.__canbus.send(tx_msg)
self.__canbusNotifier=can.Notifier(self.__canbus,[car.canFrameAppender(self.canReceived.appendPlainText)])
except Exception as e:
self.connectPort.setChecked(False)
QtWidgets.QMessageBox.critical(self, _translate("Dialog", "Error"), str(e))
else:
self.connectPort.setText(_translate("MainWindow", "Disconnect"))
self.canInterfaceTypes.setEnabled(False)
self.availablePorts.setEnabled(False)

else:
self.connectPort.setText(_translate("Main Window", "Connect"))
self.connectPort.setText(_translate("MainWindow", "Connect"))
self.__canbusNotifier.stop()
self.__canbus.shutdown()
self.canInterfaceTypes.setEnabled(True)
self.availablePorts.setEnabled(True)


if __name__ == "__main__":
Expand Down

0 comments on commit 9d0d1e8

Please sign in to comment.