Delete the three files:'Code','InstallationPackage','Tutorial.pdf'
This commit is contained in:
parent
442e3617b3
commit
91a5944dfe
@ -1,600 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'F:/GUO/test/qss/Client_Ui.ui'
|
|
||||||
#
|
|
||||||
# Created by: PyQt4 UI code generator 4.11.4
|
|
||||||
#
|
|
||||||
# WARNING! All changes made in this file will be lost!
|
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
|
|
||||||
try:
|
|
||||||
_fromUtf8 = QtCore.QString.fromUtf8
|
|
||||||
except AttributeError:
|
|
||||||
def _fromUtf8(s):
|
|
||||||
return s
|
|
||||||
|
|
||||||
try:
|
|
||||||
_encoding = QtGui.QApplication.UnicodeUTF8
|
|
||||||
def _translate(context, text, disambig):
|
|
||||||
return QtGui.QApplication.translate(context, text, disambig, _encoding)
|
|
||||||
except AttributeError:
|
|
||||||
def _translate(context, text, disambig):
|
|
||||||
return QtGui.QApplication.translate(context, text, disambig)
|
|
||||||
|
|
||||||
class Ui_Client(object):
|
|
||||||
def setupUi(self, Client):
|
|
||||||
Client.setObjectName(_fromUtf8("Client"))
|
|
||||||
Client.resize(760, 610)
|
|
||||||
palette = QtGui.QPalette()
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush)
|
|
||||||
brush = QtGui.QBrush(QtGui.QColor(72, 72, 72))
|
|
||||||
brush.setStyle(QtCore.Qt.SolidPattern)
|
|
||||||
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush)
|
|
||||||
Client.setPalette(palette)
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(14)
|
|
||||||
Client.setFont(font)
|
|
||||||
Client.setStyleSheet(_fromUtf8("QWidget{\n"
|
|
||||||
"background:#484848;\n"
|
|
||||||
"}\n"
|
|
||||||
"QAbstractButton{\n"
|
|
||||||
"border-style:none;\n"
|
|
||||||
"border-radius:0px;\n"
|
|
||||||
"padding:5px;\n"
|
|
||||||
"color:#DCDCDC;\n"
|
|
||||||
"background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);\n"
|
|
||||||
"}\n"
|
|
||||||
"QAbstractButton:hover{\n"
|
|
||||||
"color:#FFFFFF;\n"
|
|
||||||
"background-color:#00BB9E;\n"
|
|
||||||
"}\n"
|
|
||||||
"QAbstractButton:pressed{\n"
|
|
||||||
"color:#DCDCDC;\n"
|
|
||||||
"border-style:solid;\n"
|
|
||||||
"border-width:0px 0px 0px 2px;\n"
|
|
||||||
"padding:4px 4px 4px 2px;\n"
|
|
||||||
"border-color:#00BB9E;\n"
|
|
||||||
"background-color:#444444;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLabel{\n"
|
|
||||||
"color:#DCDCDC;\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);\n"
|
|
||||||
"}\n"
|
|
||||||
"QLabel:focus{\n"
|
|
||||||
"border:1px solid #00BB9E;\n"
|
|
||||||
"background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"padding:2px;\n"
|
|
||||||
"background:none;\n"
|
|
||||||
"selection-background-color:#484848;\n"
|
|
||||||
"selection-color:#DCDCDC;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit:focus,QLineEdit:hover{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"padding:2px;\n"
|
|
||||||
"background:none;\n"
|
|
||||||
"selection-background-color:#484848;\n"
|
|
||||||
"selection-color:#DCDCDC;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"QLineEdit:focus,QLineEdit:hover{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit{\n"
|
|
||||||
"lineedit-password-character:9679;\n"
|
|
||||||
"}\n"
|
|
||||||
"QSlider::groove:horizontal,QSlider::add-page:horizontal{\n"
|
|
||||||
"height:3px;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"background:#18181a;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"QSlider::sub-page:horizontal{\n"
|
|
||||||
"height:8px;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"background:#008aff;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"QSlider::handle:horizontal{\n"
|
|
||||||
"width:12px;\n"
|
|
||||||
"margin-top:-5px;\n"
|
|
||||||
"margin-bottom:-4px;\n"
|
|
||||||
"border-radius:6px;\n"
|
|
||||||
"background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #565656,stop:0.8 #565656);\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"QSlider::groove:vertical,QSlider::sub-page:vertical{\n"
|
|
||||||
"width:3px;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"background:#18181a;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"QSlider::add-page:vertical{\n"
|
|
||||||
"width:8px;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"background:#008aff;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"QSlider::handle:vertical{\n"
|
|
||||||
"height:12px;\n"
|
|
||||||
"margin-left:-5px;\n"
|
|
||||||
"margin-right:-4px;\n"
|
|
||||||
"border-radius:6px;\n"
|
|
||||||
"background:qradialgradient(spread:pad,cx:0.5,cy:0.5,radius:0.5,fx:0.5,fy:0.5,stop:0.6 #565656,stop:0.8 #565656);\n"
|
|
||||||
"}\n"
|
|
||||||
""))
|
|
||||||
self.Btn_ForWard = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_ForWard.setGeometry(QtCore.QRect(120, 450, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_ForWard.setFont(font)
|
|
||||||
self.Btn_ForWard.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_ForWard.setObjectName(_fromUtf8("Btn_ForWard"))
|
|
||||||
self.name = QtGui.QLabel(Client)
|
|
||||||
self.name.setGeometry(QtCore.QRect(0, 1, 660, 40))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(28)
|
|
||||||
font.setBold(True)
|
|
||||||
font.setWeight(75)
|
|
||||||
self.name.setFont(font)
|
|
||||||
self.name.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.name.setObjectName(_fromUtf8("name"))
|
|
||||||
|
|
||||||
self.Btn_Turn_Left = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Turn_Left.setGeometry(QtCore.QRect(10, 500, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Turn_Left.setFont(font)
|
|
||||||
self.Btn_Turn_Left.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Turn_Left.setObjectName(_fromUtf8("Btn_Turn_Left"))
|
|
||||||
|
|
||||||
self.Btn_BackWard = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_BackWard.setGeometry(QtCore.QRect(120, 550, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_BackWard.setFont(font)
|
|
||||||
self.Btn_BackWard.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_BackWard.setObjectName(_fromUtf8("Btn_BackWard"))
|
|
||||||
|
|
||||||
self.Btn_Tracking_Faces = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Tracking_Faces.setGeometry(QtCore.QRect(240, 450, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Tracking_Faces.setFont(font)
|
|
||||||
self.Btn_Tracking_Faces.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Tracking_Faces.setObjectName(_fromUtf8("Btn_Tracking_Faces"))
|
|
||||||
|
|
||||||
self.Btn_Turn_Right = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Turn_Right.setGeometry(QtCore.QRect(240, 500, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Turn_Right.setFont(font)
|
|
||||||
self.Btn_Turn_Right.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Turn_Right.setObjectName(_fromUtf8("Btn_Turn_Right"))
|
|
||||||
self.Btn_Video = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Video.setGeometry(QtCore.QRect(240, 380, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Video.setFont(font)
|
|
||||||
self.Btn_Video.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Video.setObjectName(_fromUtf8("Btn_Video"))
|
|
||||||
self.label_Video = QtGui.QLabel(Client)
|
|
||||||
self.label_Video.setGeometry(QtCore.QRect(1, 42, 400, 300))
|
|
||||||
self.label_Video.setText(_fromUtf8(""))
|
|
||||||
self.label_Video.setObjectName(_fromUtf8("label_Video"))
|
|
||||||
self.Btn_Down = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Down.setGeometry(QtCore.QRect(510, 480, 75, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Down.setFont(font)
|
|
||||||
self.Btn_Down.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Down.setObjectName(_fromUtf8("Btn_Down"))
|
|
||||||
self.Btn_Left = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Left.setGeometry(QtCore.QRect(440, 450, 75, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Left.setFont(font)
|
|
||||||
self.Btn_Left.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Left.setObjectName(_fromUtf8("Btn_Left"))
|
|
||||||
self.Btn_Home = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Home.setGeometry(QtCore.QRect(510, 450, 75, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Home.setFont(font)
|
|
||||||
self.Btn_Home.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Home.setObjectName(_fromUtf8("Btn_Home"))
|
|
||||||
self.Btn_Up = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Up.setGeometry(QtCore.QRect(510, 420, 75, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Up.setFont(font)
|
|
||||||
self.Btn_Up.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Up.setObjectName(_fromUtf8("Btn_Up"))
|
|
||||||
self.Btn_Right = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Right.setGeometry(QtCore.QRect(580, 450, 75, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Right.setFont(font)
|
|
||||||
self.Btn_Right.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.Btn_Right.setObjectName(_fromUtf8("Btn_Right"))
|
|
||||||
self.Window_Close = QtGui.QPushButton(Client)
|
|
||||||
self.Window_Close.setGeometry(QtCore.QRect(710, 1, 50, 40))
|
|
||||||
self.Window_Close.setObjectName(_fromUtf8("Window_Close"))
|
|
||||||
self.IP = QtGui.QLineEdit(Client)
|
|
||||||
self.IP.setGeometry(QtCore.QRect(10, 380, 101, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.IP.setFont(font)
|
|
||||||
self.IP.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.IP.setObjectName(_fromUtf8("IP"))
|
|
||||||
self.Btn_Connect = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Connect.setGeometry(QtCore.QRect(120, 380, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Connect.setFont(font)
|
|
||||||
self.Btn_Connect.setObjectName(_fromUtf8("Btn_Connect"))
|
|
||||||
self.checkBox_Led1 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led1.setGeometry(QtCore.QRect(420, 120, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led1.setFont(font)
|
|
||||||
self.checkBox_Led1.setObjectName(_fromUtf8("checkBox_Led1"))
|
|
||||||
self.label_Servo2 = QtGui.QLabel(Client)
|
|
||||||
self.label_Servo2.setGeometry(QtCore.QRect(710, 460, 41, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(14)
|
|
||||||
self.label_Servo2.setFont(font)
|
|
||||||
self.label_Servo2.setObjectName(_fromUtf8("label_Servo2"))
|
|
||||||
self.checkBox_Led2 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led2.setGeometry(QtCore.QRect(420, 170, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led2.setFont(font)
|
|
||||||
self.checkBox_Led2.setObjectName(_fromUtf8("checkBox_Led2"))
|
|
||||||
self.checkBox_Led3 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led3.setGeometry(QtCore.QRect(420, 220, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led3.setFont(font)
|
|
||||||
self.checkBox_Led3.setObjectName(_fromUtf8("checkBox_Led3"))
|
|
||||||
self.checkBox_Led4 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led4.setGeometry(QtCore.QRect(420, 270, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led4.setFont(font)
|
|
||||||
self.checkBox_Led4.setObjectName(_fromUtf8("checkBox_Led4"))
|
|
||||||
self.checkBox_Led5 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led5.setGeometry(QtCore.QRect(530, 120, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led5.setFont(font)
|
|
||||||
self.checkBox_Led5.setObjectName(_fromUtf8("checkBox_Led5"))
|
|
||||||
self.checkBox_Led6 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led6.setGeometry(QtCore.QRect(530, 170, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led6.setFont(font)
|
|
||||||
self.checkBox_Led6.setObjectName(_fromUtf8("checkBox_Led6"))
|
|
||||||
self.checkBox_Led7 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led7.setGeometry(QtCore.QRect(530, 220, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led7.setFont(font)
|
|
||||||
self.checkBox_Led7.setObjectName(_fromUtf8("checkBox_Led7"))
|
|
||||||
self.checkBox_Led8 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led8.setGeometry(QtCore.QRect(530, 270, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led8.setFont(font)
|
|
||||||
self.checkBox_Led8.setObjectName(_fromUtf8("checkBox_Led8"))
|
|
||||||
self.HSlider_Servo1 = QtGui.QSlider(Client)
|
|
||||||
self.HSlider_Servo1.setGeometry(QtCore.QRect(470, 530, 160, 22))
|
|
||||||
self.HSlider_Servo1.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.HSlider_Servo1.setOrientation(QtCore.Qt.Horizontal)
|
|
||||||
self.HSlider_Servo1.setObjectName(_fromUtf8("HSlider_Servo1"))
|
|
||||||
self.VSlider_Servo2 = QtGui.QSlider(Client)
|
|
||||||
self.VSlider_Servo2.setGeometry(QtCore.QRect(680, 400, 22, 160))
|
|
||||||
self.VSlider_Servo2.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.VSlider_Servo2.setOrientation(QtCore.Qt.Vertical)
|
|
||||||
self.VSlider_Servo2.setObjectName(_fromUtf8("VSlider_Servo2"))
|
|
||||||
self.label_Servo1 = QtGui.QLabel(Client)
|
|
||||||
self.label_Servo1.setGeometry(QtCore.QRect(530, 560, 41, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(14)
|
|
||||||
self.label_Servo1.setFont(font)
|
|
||||||
self.label_Servo1.setObjectName(_fromUtf8("label_Servo1"))
|
|
||||||
self.checkBox_Led_Mode2 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led_Mode2.setGeometry(QtCore.QRect(640, 170, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led_Mode2.setFont(font)
|
|
||||||
self.checkBox_Led_Mode2.setObjectName(_fromUtf8("checkBox_Led_Mode2"))
|
|
||||||
self.checkBox_Led_Mode3 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led_Mode3.setGeometry(QtCore.QRect(640, 220, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led_Mode3.setFont(font)
|
|
||||||
self.checkBox_Led_Mode3.setObjectName(_fromUtf8("checkBox_Led_Mode3"))
|
|
||||||
self.checkBox_Led_Mode4 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led_Mode4.setGeometry(QtCore.QRect(640, 270, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led_Mode4.setFont(font)
|
|
||||||
self.checkBox_Led_Mode4.setObjectName(_fromUtf8("checkBox_Led_Mode4"))
|
|
||||||
self.checkBox_Led_Mode1 = QtGui.QCheckBox(Client)
|
|
||||||
self.checkBox_Led_Mode1.setGeometry(QtCore.QRect(640, 120, 91, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.checkBox_Led_Mode1.setFont(font)
|
|
||||||
self.checkBox_Led_Mode1.setObjectName(_fromUtf8("checkBox_Led_Mode1"))
|
|
||||||
self.Color_R = QtGui.QLineEdit(Client)
|
|
||||||
self.Color_R.setGeometry(QtCore.QRect(560, 90, 30, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Color_R.setFont(font)
|
|
||||||
self.Color_R.setObjectName(_fromUtf8("Color_R"))
|
|
||||||
self.Color_G = QtGui.QLineEdit(Client)
|
|
||||||
self.Color_G.setGeometry(QtCore.QRect(630, 90, 30, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Color_G.setFont(font)
|
|
||||||
self.Color_G.setObjectName(_fromUtf8("Color_G"))
|
|
||||||
self.Color_B = QtGui.QLineEdit(Client)
|
|
||||||
self.Color_B.setGeometry(QtCore.QRect(700, 90, 30, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Color_B.setFont(font)
|
|
||||||
self.Color_B.setObjectName(_fromUtf8("Color_B"))
|
|
||||||
self.HSlider_FineServo2 = QtGui.QSlider(Client)
|
|
||||||
self.HSlider_FineServo2.setGeometry(QtCore.QRect(480, 370, 160, 22))
|
|
||||||
self.HSlider_FineServo2.setOrientation(QtCore.Qt.Horizontal)
|
|
||||||
self.HSlider_FineServo2.setObjectName(_fromUtf8("HSlider_FineServo2"))
|
|
||||||
self.HSlider_FineServo1 = QtGui.QSlider(Client)
|
|
||||||
self.HSlider_FineServo1.setGeometry(QtCore.QRect(480, 320, 160, 22))
|
|
||||||
self.HSlider_FineServo1.setOrientation(QtCore.Qt.Horizontal)
|
|
||||||
self.HSlider_FineServo1.setObjectName(_fromUtf8("HSlider_FineServo1"))
|
|
||||||
self.label_FineServo1 = QtGui.QLabel(Client)
|
|
||||||
self.label_FineServo1.setGeometry(QtCore.QRect(650, 320, 41, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(14)
|
|
||||||
self.label_FineServo1.setFont(font)
|
|
||||||
self.label_FineServo1.setObjectName(_fromUtf8("label_FineServo1"))
|
|
||||||
self.label_FineServo2 = QtGui.QLabel(Client)
|
|
||||||
self.label_FineServo2.setGeometry(QtCore.QRect(650, 360, 41, 31))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(14)
|
|
||||||
self.label_FineServo2.setFont(font)
|
|
||||||
self.label_FineServo2.setObjectName(_fromUtf8("label_FineServo2"))
|
|
||||||
self.Window_Min = QtGui.QPushButton(Client)
|
|
||||||
self.Window_Min.setGeometry(QtCore.QRect(660, 1, 50, 40))
|
|
||||||
self.Window_Min.setObjectName(_fromUtf8("Window_Min"))
|
|
||||||
self.R = QtGui.QLabel(Client)
|
|
||||||
self.R.setGeometry(QtCore.QRect(530, 90, 16, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.R.setFont(font)
|
|
||||||
self.R.setObjectName(_fromUtf8("R"))
|
|
||||||
self.G = QtGui.QLabel(Client)
|
|
||||||
self.G.setGeometry(QtCore.QRect(600, 90, 16, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.G.setFont(font)
|
|
||||||
self.G.setObjectName(_fromUtf8("G"))
|
|
||||||
self.B = QtGui.QLabel(Client)
|
|
||||||
self.B.setGeometry(QtCore.QRect(670, 90, 16, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.B.setFont(font)
|
|
||||||
self.B.setObjectName(_fromUtf8("B"))
|
|
||||||
self.Led_Module = QtGui.QLabel(Client)
|
|
||||||
self.Led_Module.setGeometry(QtCore.QRect(410, 90, 111, 25))
|
|
||||||
self.Led_Module.setObjectName(_fromUtf8("Led_Module"))
|
|
||||||
self.Servo1 = QtGui.QLabel(Client)
|
|
||||||
self.Servo1.setGeometry(QtCore.QRect(420, 320, 54, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Servo1.setFont(font)
|
|
||||||
self.Servo1.setObjectName(_fromUtf8("Servo1"))
|
|
||||||
self.Servo2 = QtGui.QLabel(Client)
|
|
||||||
self.Servo2.setGeometry(QtCore.QRect(420, 370, 54, 20))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Servo2.setFont(font)
|
|
||||||
self.Servo2.setObjectName(_fromUtf8("Servo2"))
|
|
||||||
self.progress_Power = QtGui.QProgressBar(Client)
|
|
||||||
self.progress_Power.setGeometry(QtCore.QRect(20, 550, 70, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.progress_Power.setFont(font)
|
|
||||||
self.progress_Power.setStyleSheet(_fromUtf8("QProgressBar {\n"
|
|
||||||
"border: 2px solid grey;\n"
|
|
||||||
"border-radius: 5px;\n"
|
|
||||||
"background-color: #FFFFFF;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"QProgressBar::chunk {\n"
|
|
||||||
"background-color:#696969;\n"
|
|
||||||
"width: 20px;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"QProgressBar {\n"
|
|
||||||
"text-align: center; \n"
|
|
||||||
"color: rgb(152,251,152);\n"
|
|
||||||
"}\n"
|
|
||||||
""))
|
|
||||||
self.progress_Power.setProperty("value", 0)
|
|
||||||
self.progress_Power.setObjectName(_fromUtf8("progress_Power"))
|
|
||||||
self.Btn_Buzzer = QtGui.QPushButton(Client)
|
|
||||||
self.Btn_Buzzer.setGeometry(QtCore.QRect(120, 500, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Buzzer.setFont(font)
|
|
||||||
self.Btn_Buzzer.setObjectName(_fromUtf8("Btn_Buzzer"))
|
|
||||||
self.Ultrasonic = QtGui.QPushButton(Client)
|
|
||||||
self.Ultrasonic.setGeometry(QtCore.QRect(401, 41, 180, 30))
|
|
||||||
self.Ultrasonic.setObjectName(_fromUtf8("Ultrasonic"))
|
|
||||||
self.Light = QtGui.QPushButton(Client)
|
|
||||||
self.Light.setGeometry(QtCore.QRect(581, 41, 179, 30))
|
|
||||||
self.Light.setObjectName(_fromUtf8("Light"))
|
|
||||||
self.Btn_Mode1 = QtGui.QRadioButton(Client)
|
|
||||||
self.Btn_Mode1.setGeometry(QtCore.QRect(340, 400, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Mode1.setFont(font)
|
|
||||||
self.Btn_Mode1.setObjectName(_fromUtf8("Btn_Mode1"))
|
|
||||||
self.Btn_Mode2 = QtGui.QRadioButton(Client)
|
|
||||||
self.Btn_Mode2.setGeometry(QtCore.QRect(340, 450, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Mode2.setFont(font)
|
|
||||||
self.Btn_Mode2.setObjectName(_fromUtf8("Btn_Mode2"))
|
|
||||||
self.Btn_Mode3 = QtGui.QRadioButton(Client)
|
|
||||||
self.Btn_Mode3.setGeometry(QtCore.QRect(340, 500, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Mode3.setFont(font)
|
|
||||||
self.Btn_Mode3.setObjectName(_fromUtf8("Btn_Mode3"))
|
|
||||||
self.Btn_Mode4 = QtGui.QRadioButton(Client)
|
|
||||||
self.Btn_Mode4.setGeometry(QtCore.QRect(340, 550, 90, 30))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(10)
|
|
||||||
self.Btn_Mode4.setFont(font)
|
|
||||||
self.Btn_Mode4.setObjectName(_fromUtf8("Btn_Mode4"))
|
|
||||||
|
|
||||||
self.retranslateUi(Client)
|
|
||||||
QtCore.QMetaObject.connectSlotsByName(Client)
|
|
||||||
|
|
||||||
def retranslateUi(self, Client):
|
|
||||||
Client.setWindowTitle(_translate("Client", "freenove", None))
|
|
||||||
self.Btn_ForWard.setText(_translate("Client", "ForWard", None))
|
|
||||||
self.name.setText(_translate("Client", "Freenove", None))
|
|
||||||
self.Btn_Turn_Left.setText(_translate("Client", "Turn Left", None))
|
|
||||||
self.Btn_BackWard.setText(_translate("Client", "BackWard", None))
|
|
||||||
self.Btn_Turn_Right.setText(_translate("Client", "Turn Right", None))
|
|
||||||
self.Btn_Video.setText(_translate("Client", "Open Video", None))
|
|
||||||
self.Btn_Tracking_Faces.setText(_translate("Client", "Tracing-On", None))
|
|
||||||
|
|
||||||
self.Btn_Down.setText(_translate("Client", "Down", None))
|
|
||||||
self.Btn_Left.setText(_translate("Client", "Left", None))
|
|
||||||
self.Btn_Home.setText(_translate("Client", "Home", None))
|
|
||||||
self.Btn_Up.setText(_translate("Client", "Up", None))
|
|
||||||
self.Btn_Right.setText(_translate("Client", "Right", None))
|
|
||||||
self.Window_Close.setText(_translate("Client", "×", None))
|
|
||||||
self.IP.setText(_translate("Client", "IP Address", None))
|
|
||||||
self.Btn_Connect.setText(_translate("Client", "Connect", None))
|
|
||||||
self.checkBox_Led1.setText(_translate("Client", "Led1", None))
|
|
||||||
self.label_Servo2.setText(_translate("Client", "0", None))
|
|
||||||
self.checkBox_Led2.setText(_translate("Client", "Led2", None))
|
|
||||||
self.checkBox_Led3.setText(_translate("Client", "Led3", None))
|
|
||||||
self.checkBox_Led4.setText(_translate("Client", "Led4", None))
|
|
||||||
self.checkBox_Led5.setText(_translate("Client", "Led5", None))
|
|
||||||
self.checkBox_Led6.setText(_translate("Client", "Led6", None))
|
|
||||||
self.checkBox_Led7.setText(_translate("Client", "Led7", None))
|
|
||||||
self.checkBox_Led8.setText(_translate("Client", "Led8", None))
|
|
||||||
self.label_Servo1.setText(_translate("Client", "90", None))
|
|
||||||
self.checkBox_Led_Mode2.setText(_translate("Client", "Led_Mode2", None))
|
|
||||||
self.checkBox_Led_Mode3.setText(_translate("Client", "Led_Mode3", None))
|
|
||||||
self.checkBox_Led_Mode4.setText(_translate("Client", "Led_Mode4", None))
|
|
||||||
self.checkBox_Led_Mode1.setText(_translate("Client", "Led_Mode1", None))
|
|
||||||
self.Color_R.setText(_translate("Client", "255", None))
|
|
||||||
self.Color_G.setText(_translate("Client", "0", None))
|
|
||||||
self.Color_B.setText(_translate("Client", "0", None))
|
|
||||||
self.label_FineServo1.setText(_translate("Client", "0", None))
|
|
||||||
self.label_FineServo2.setText(_translate("Client", "0", None))
|
|
||||||
self.Window_Min.setText(_translate("Client", "-", None))
|
|
||||||
self.R.setText(_translate("Client", "R", None))
|
|
||||||
self.G.setText(_translate("Client", "G", None))
|
|
||||||
self.B.setText(_translate("Client", "B", None))
|
|
||||||
self.Led_Module.setText(_translate("Client", "Led Module", None))
|
|
||||||
self.Servo1.setText(_translate("Client", "Servo 1", None))
|
|
||||||
self.Servo2.setText(_translate("Client", "Servo 2", None))
|
|
||||||
self.Btn_Buzzer.setText(_translate("Client", "Buzzer", None))
|
|
||||||
self.Ultrasonic.setText(_translate("Client", "Ultrasonic", None))
|
|
||||||
self.Light.setText(_translate("Client", "Light", None))
|
|
||||||
self.Btn_Mode1.setText(_translate("Client", "M-Free", None))
|
|
||||||
self.Btn_Mode2.setText(_translate("Client", "M-Light", None))
|
|
||||||
self.Btn_Mode3.setText(_translate("Client", "M-Sonic", None))
|
|
||||||
self.Btn_Mode4.setText(_translate("Client", "M-Line", None))
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
|||||||
class COMMAND:
|
|
||||||
CMD_MOTOR = "CMD_MOTOR"
|
|
||||||
CMD_LED = "CMD_LED"
|
|
||||||
CMD_LED_MOD = "CMD_LED_MOD"
|
|
||||||
CMD_SERVO = "CMD_SERVO"
|
|
||||||
CMD_BUZZER = "CMD_BUZZER"
|
|
||||||
CMD_SONIC = "CMD_SONIC"
|
|
||||||
CMD_LIGHT = "CMD_LIGHT"
|
|
||||||
CMD_POWER = "CMD_POWER"
|
|
||||||
CMD_START = "Start"
|
|
||||||
CMD_STOP = "Stop"
|
|
||||||
CMD_CLOSE = "CMD_CLOSE"
|
|
||||||
CMD_FORWARD = "CMD_MOTOR#1500#1500#1500#1500"
|
|
||||||
CMD_TURULEFT = "CMD_MOTOR#-1500#-1500#1500#1500"
|
|
||||||
CMD_BACKWARD = "CMD_MOTOR#-1500#-1500#-1500#-1500"
|
|
||||||
CMD_TURNRIGHT = "CMD_MOTOR#1500#1500#-1500#-1500"
|
|
||||||
CMD_MOTORSTOP = "CMD_MOTOR#0#0#0#0"
|
|
||||||
CMD_SERVO1 = "CMD_SERVO#1#0#"
|
|
||||||
CMD_SERVO2 = "CMD_SERVO#0#1#0#"
|
|
||||||
CMD_LED0_OFF = "CMD_LED#0#0#0#0"
|
|
||||||
CMD_LED0_ON = "CMD_LED#0#"
|
|
||||||
CMD_LED1_OFF = "CMD_LED#1#0#0#0"
|
|
||||||
CMD_LED1_ON = "CMD_LED#1#"
|
|
||||||
CMD_LED2_OFF = "CMD_LED#2#0#0#0"
|
|
||||||
CMD_LED2_ON = "CMD_LED#2#"
|
|
||||||
CMD_LED3_OFF = "CMD_LED#3#0#0#0"
|
|
||||||
CMD_LED3_ON = "CMD_LED#3#"
|
|
||||||
CMD_LED4_OFF = "CMD_LED#4#0#0#0"
|
|
||||||
CMD_LED4_ON = "CMD_LED#4#"
|
|
||||||
CMD_LED5_OFF = "CMD_LED#5#0#0#0"
|
|
||||||
CMD_LED5_ON = "CMD_LED#5#"
|
|
||||||
CMD_LED6_OFF = "CMD_LED#6#0#0#0"
|
|
||||||
CMD_LED6_ON = "CMD_LED#6#"
|
|
||||||
CMD_LED7_OFF = "CMD_LED#7#0#0#0"
|
|
||||||
CMD_LED7_ON = "CMD_LED#7#"
|
|
||||||
CMD_LED_MOD1 = "CMD_LED_MOD#one"
|
|
||||||
CMD_LED_MOD2 = "CMD_LED_MOD#two"
|
|
||||||
CMD_LED_MOD3 = "CMD_LED_MOD#three"
|
|
||||||
CMD_LED_MOD4 = "CMD_LED_MOD#four"
|
|
||||||
CMD_LED_OFF = "CMD_LED_MOD#0"
|
|
||||||
CMD_BUZZER_ON = "CMD_BUZZER#Start"
|
|
||||||
CMD_BUZZER_OFF = "CMD_BUZZER#Stop"
|
|
||||||
|
|
||||||
CMD_ULTRASONIC_ON = "CMD_SONIC#Start"
|
|
||||||
CMD_ULTRASONIC_OFF = "CMD_SONIC#Stop"
|
|
||||||
|
|
||||||
CMD_LIGHT_ON = "CMD_LIGHT#Start"
|
|
||||||
CMD_LIGHT_OFF = "CMD_LIGHT#Stop"
|
|
||||||
|
|
||||||
CMD_POWER_ON = "CMD_POWER#Start"
|
|
||||||
CMD_POWER_OFF = "CMD_POWER#Stop"
|
|
||||||
CMD_MODE =["CMD_MODE1","CMD_MODE2","CMD_MODE3","CMD_MODE4"]
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
@ -1,676 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import numpy as np
|
|
||||||
import cv2
|
|
||||||
import socket
|
|
||||||
import os
|
|
||||||
import io
|
|
||||||
import time
|
|
||||||
import imghdr
|
|
||||||
import sys
|
|
||||||
from threading import Timer
|
|
||||||
from threading import Thread
|
|
||||||
from PIL import Image
|
|
||||||
from Command import COMMAND as cmd
|
|
||||||
from Thread import *
|
|
||||||
from Client_Ui import Ui_Client
|
|
||||||
from Video import *
|
|
||||||
from PyQt4.QtCore import *
|
|
||||||
from PyQt4 import QtGui, QtCore
|
|
||||||
from PyQt4.QtGui import *
|
|
||||||
from PyQt4.QtCore import pyqtSignature
|
|
||||||
from PyQt4.QtGui import (QApplication, QMainWindow, QGraphicsScene)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class mywindow(QMainWindow,Ui_Client):
|
|
||||||
def __init__(self):
|
|
||||||
global timer
|
|
||||||
super(mywindow,self).__init__()
|
|
||||||
self.setupUi(self)
|
|
||||||
self.h=self.IP.text()
|
|
||||||
self.TCP=VideoStreaming()
|
|
||||||
self.servo1=90
|
|
||||||
self.servo2=20
|
|
||||||
self.label_FineServo2.setText("0")
|
|
||||||
self.label_FineServo1.setText("0")
|
|
||||||
self.m_DragPosition=self.pos()
|
|
||||||
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
|
|
||||||
self.setMouseTracking(True)
|
|
||||||
self.Key_W=False
|
|
||||||
self.Key_A=False
|
|
||||||
self.Key_S=False
|
|
||||||
self.Key_D=False
|
|
||||||
self.Key_Space=False
|
|
||||||
|
|
||||||
self.setFocusPolicy(Qt.StrongFocus)
|
|
||||||
|
|
||||||
self.progress_Power.setMinimum(0)
|
|
||||||
self.progress_Power.setMaximum(100)
|
|
||||||
|
|
||||||
self.name.setAlignment(QtCore.Qt.AlignCenter)
|
|
||||||
self.label_Servo1.setText('90')
|
|
||||||
self.label_Servo2.setText('20')
|
|
||||||
self.label_Video.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter)
|
|
||||||
self.label_Servo1.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter)
|
|
||||||
self.label_Servo2.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter)
|
|
||||||
|
|
||||||
self.label_FineServo1.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter)
|
|
||||||
self.label_FineServo2.setAlignment(QtCore.Qt.AlignCenter|QtCore.Qt.AlignVCenter)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
self.HSlider_Servo1.setMinimum(0)
|
|
||||||
self.HSlider_Servo1.setMaximum(180)
|
|
||||||
self.HSlider_Servo1.setSingleStep(1)
|
|
||||||
self.HSlider_Servo1.setValue(self.servo1)
|
|
||||||
self.HSlider_Servo1.valueChanged.connect(self.Change_Left_Right)
|
|
||||||
|
|
||||||
self.HSlider_FineServo1.setMinimum(-10)
|
|
||||||
self.HSlider_FineServo1.setMaximum(10)
|
|
||||||
self.HSlider_FineServo1.setSingleStep(1)
|
|
||||||
self.HSlider_FineServo1.setValue(0)
|
|
||||||
self.HSlider_FineServo1.valueChanged.connect(self.Fine_Tune_Left_Right)
|
|
||||||
|
|
||||||
self.HSlider_FineServo2.setMinimum(-10)
|
|
||||||
self.HSlider_FineServo2.setMaximum(10)
|
|
||||||
self.HSlider_FineServo2.setSingleStep(1)
|
|
||||||
self.HSlider_FineServo2.setValue(0)
|
|
||||||
self.HSlider_FineServo2.valueChanged.connect(self.Fine_Tune_Up_Down)
|
|
||||||
|
|
||||||
self.VSlider_Servo2.setMinimum(0)
|
|
||||||
self.VSlider_Servo2.setMaximum(150)
|
|
||||||
self.VSlider_Servo2.setSingleStep(1)
|
|
||||||
self.VSlider_Servo2.setValue(self.servo2)
|
|
||||||
self.VSlider_Servo2.valueChanged.connect(self.Change_Up_Down)
|
|
||||||
|
|
||||||
self.checkBox_Led1.setChecked(False)
|
|
||||||
self.checkBox_Led1.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led1))
|
|
||||||
self.checkBox_Led2.setChecked(False)
|
|
||||||
self.checkBox_Led2.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led2))
|
|
||||||
self.checkBox_Led3.setChecked(False)
|
|
||||||
self.checkBox_Led3.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led3))
|
|
||||||
self.checkBox_Led4.setChecked(False)
|
|
||||||
self.checkBox_Led4.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led4))
|
|
||||||
self.checkBox_Led5.setChecked(False)
|
|
||||||
self.checkBox_Led5.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led5))
|
|
||||||
self.checkBox_Led6.setChecked(False)
|
|
||||||
self.checkBox_Led6.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led6))
|
|
||||||
self.checkBox_Led7.setChecked(False)
|
|
||||||
self.checkBox_Led7.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led7))
|
|
||||||
self.checkBox_Led8.setChecked(False)
|
|
||||||
self.checkBox_Led8.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led8))
|
|
||||||
|
|
||||||
self.checkBox_Led_Mode1.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode1.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led_Mode1))
|
|
||||||
self.checkBox_Led_Mode2.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode2.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led_Mode2))
|
|
||||||
self.checkBox_Led_Mode3.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode3.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led_Mode3))
|
|
||||||
self.checkBox_Led_Mode4.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode4.stateChanged.connect(lambda:self.LedChange(self.checkBox_Led_Mode4))
|
|
||||||
|
|
||||||
self.Btn_Mode1.setChecked(True)
|
|
||||||
self.Btn_Mode1.toggled.connect(lambda:self.on_btn_Mode(self.Btn_Mode1))
|
|
||||||
self.Btn_Mode2.setChecked(False)
|
|
||||||
self.Btn_Mode2.toggled.connect(lambda:self.on_btn_Mode(self.Btn_Mode2))
|
|
||||||
self.Btn_Mode3.setChecked(False)
|
|
||||||
self.Btn_Mode3.toggled.connect(lambda:self.on_btn_Mode(self.Btn_Mode3))
|
|
||||||
self.Btn_Mode4.setChecked(False)
|
|
||||||
self.Btn_Mode4.toggled.connect(lambda:self.on_btn_Mode(self.Btn_Mode4))
|
|
||||||
|
|
||||||
self.Ultrasonic.clicked.connect(self.on_btn_Ultrasonic)
|
|
||||||
self.Light.clicked.connect(self.on_btn_Light)
|
|
||||||
|
|
||||||
self.Btn_ForWard.pressed.connect(self.on_btn_ForWard)
|
|
||||||
self.Btn_ForWard.released.connect(self.on_btn_Stop)
|
|
||||||
|
|
||||||
self.Btn_Turn_Left.pressed.connect(self.on_btn_Turn_Left)
|
|
||||||
self.Btn_Turn_Left.released.connect(self.on_btn_Stop)
|
|
||||||
|
|
||||||
self.Btn_BackWard.pressed.connect(self.on_btn_BackWard)
|
|
||||||
self.Btn_BackWard.released.connect(self.on_btn_Stop)
|
|
||||||
|
|
||||||
self.Btn_Turn_Right.pressed.connect(self.on_btn_Turn_Right)
|
|
||||||
self.Btn_Turn_Right.released.connect(self.on_btn_Stop)
|
|
||||||
|
|
||||||
self.Btn_Video.clicked.connect(self.on_btn_video)
|
|
||||||
|
|
||||||
self.Btn_Up.clicked.connect(self.on_btn_Up)
|
|
||||||
self.Btn_Left.clicked.connect(self.on_btn_Left)
|
|
||||||
self.Btn_Down.clicked.connect(self.on_btn_Down)
|
|
||||||
self.Btn_Home.clicked.connect(self.on_btn_Home)
|
|
||||||
self.Btn_Right.clicked.connect(self.on_btn_Right)
|
|
||||||
self.Btn_Tracking_Faces.clicked.connect(self.Tracking_Face)
|
|
||||||
|
|
||||||
|
|
||||||
self.Btn_Buzzer.pressed.connect(self.on_btn_Buzzer)
|
|
||||||
self.Btn_Buzzer.released.connect(self.on_btn_Buzzer)
|
|
||||||
|
|
||||||
self.Btn_Connect.clicked.connect(self.on_btn_Connect)
|
|
||||||
|
|
||||||
|
|
||||||
self.Window_Min.clicked.connect(self.windowMinimumed)
|
|
||||||
self.Window_Close.clicked.connect(self.close)
|
|
||||||
timer = QTimer(self)
|
|
||||||
self.connect(timer, SIGNAL("timeout()"), self.time)
|
|
||||||
def mousePressEvent(self, event):
|
|
||||||
if event.button()==Qt.LeftButton:
|
|
||||||
self.m_drag=True
|
|
||||||
self.m_DragPosition=event.globalPos()-self.pos()
|
|
||||||
event.accept()
|
|
||||||
|
|
||||||
def mouseMoveEvent(self, QMouseEvent):
|
|
||||||
if QMouseEvent.buttons() and Qt.LeftButton:
|
|
||||||
self.move(QMouseEvent.globalPos()-self.m_DragPosition)
|
|
||||||
QMouseEvent.accept()
|
|
||||||
|
|
||||||
def mouseReleaseEvent(self, QMouseEvent):
|
|
||||||
self.m_drag=False
|
|
||||||
def close(self):
|
|
||||||
timer.stop()
|
|
||||||
try:
|
|
||||||
self.TCP.sendData(cmd.CMD_POWER_OFF)
|
|
||||||
self.TCP.sendData(cmd.CMD_CLOSE)
|
|
||||||
stop_thread(self.streaming)
|
|
||||||
stop_thread(self.recv)
|
|
||||||
self.TCP.StopTcpcClient()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
os.remove("video.jpg")
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
QCoreApplication.instance().quit()
|
|
||||||
os._exit(0)
|
|
||||||
|
|
||||||
def recvmassage(self):
|
|
||||||
self.receflag=1
|
|
||||||
try:
|
|
||||||
self.TCP.socket1_connect(self.h)
|
|
||||||
self.TCP.sendData(cmd.CMD_POWER_ON)
|
|
||||||
while True:
|
|
||||||
Alldata=self.TCP.recvData()
|
|
||||||
if Alldata==None:
|
|
||||||
pass
|
|
||||||
elif Alldata=='':
|
|
||||||
break
|
|
||||||
elif len(Alldata)>21:
|
|
||||||
continue
|
|
||||||
else :
|
|
||||||
Massage=Alldata.split("#")
|
|
||||||
if cmd.CMD_SONIC in Massage:
|
|
||||||
self.Ultrasonic.setText('Obstruction:%s cm'%Massage[1])
|
|
||||||
elif cmd.CMD_SERVO in Massage:
|
|
||||||
print Massage
|
|
||||||
elif cmd.CMD_LIGHT in Massage:
|
|
||||||
self.Light.setText("Left:"+Massage[1]+'V'+' '+"Right"+Massage[2]+'V')
|
|
||||||
elif cmd. CMD_POWER in Massage:
|
|
||||||
percent_power=int((float(Massage[1])*3-7)/1.40*100)
|
|
||||||
self.progress_Power.setValue(percent_power)
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
except :
|
|
||||||
pass
|
|
||||||
|
|
||||||
def keyPressEvent(self, event):
|
|
||||||
if(event.key() == Qt.Key_Up):
|
|
||||||
self.on_btn_Up()
|
|
||||||
elif(event.key() == Qt.Key_Left):
|
|
||||||
self.on_btn_Left()
|
|
||||||
elif(event.key() == Qt.Key_Down):
|
|
||||||
self.on_btn_Down()
|
|
||||||
elif(event.key() == Qt.Key_Right):
|
|
||||||
self.on_btn_Right()
|
|
||||||
elif(event.key() == Qt.Key_Home):
|
|
||||||
self.on_btn_Home()
|
|
||||||
|
|
||||||
|
|
||||||
if(event.key() == Qt.Key_Q):
|
|
||||||
if self.Btn_Mode1.isChecked() == True:
|
|
||||||
self.Btn_Mode2.setChecked(True)
|
|
||||||
elif self.Btn_Mode2.isChecked() == True:
|
|
||||||
self.Btn_Mode3.setChecked(True)
|
|
||||||
elif self.Btn_Mode3.isChecked() == True:
|
|
||||||
self.Btn_Mode4.setChecked(True)
|
|
||||||
elif self.Btn_Mode4.isChecked() == True:
|
|
||||||
self.Btn_Mode1.setChecked(True)
|
|
||||||
|
|
||||||
if(event.key() == Qt.Key_L):
|
|
||||||
count=0
|
|
||||||
if self.checkBox_Led_Mode1.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode2.setChecked(True)
|
|
||||||
elif self.checkBox_Led_Mode2.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode3.setChecked(True)
|
|
||||||
elif self.checkBox_Led_Mode3.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode4.setChecked(True)
|
|
||||||
elif self.checkBox_Led_Mode4.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode1.setChecked(True)
|
|
||||||
|
|
||||||
for i in range(1,5):
|
|
||||||
checkBox_Led_Mode=getattr(self,"checkBox_Led_Mode%d"%i)
|
|
||||||
if checkBox_Led_Mode.isChecked() == False:
|
|
||||||
count+=1
|
|
||||||
else:
|
|
||||||
break
|
|
||||||
if count ==4:
|
|
||||||
self.checkBox_Led_Mode1.setChecked(True)
|
|
||||||
|
|
||||||
if(event.key() == Qt.Key_C):
|
|
||||||
self.on_btn_Connect()
|
|
||||||
if(event.key() == Qt.Key_V):
|
|
||||||
self.on_btn_video()
|
|
||||||
|
|
||||||
|
|
||||||
if(event.key() == Qt.Key_1):
|
|
||||||
if self.checkBox_Led1.isChecked() == True:
|
|
||||||
self.checkBox_Led1.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led1.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_2):
|
|
||||||
if self.checkBox_Led2.isChecked() == True:
|
|
||||||
self.checkBox_Led2.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led2.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_3):
|
|
||||||
if self.checkBox_Led3.isChecked() == True:
|
|
||||||
self.checkBox_Led3.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led3.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_4):
|
|
||||||
if self.checkBox_Led4.isChecked() == True:
|
|
||||||
self.checkBox_Led4.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led4.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_5):
|
|
||||||
if self.checkBox_Led5.isChecked() == True:
|
|
||||||
self.checkBox_Led5.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led5.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_6):
|
|
||||||
if self.checkBox_Led6.isChecked() == True:
|
|
||||||
self.checkBox_Led6.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led6.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_7):
|
|
||||||
if self.checkBox_Led7.isChecked() == True:
|
|
||||||
self.checkBox_Led7.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led7.setChecked(True)
|
|
||||||
elif(event.key() == Qt.Key_8):
|
|
||||||
if self.checkBox_Led8.isChecked() == True:
|
|
||||||
self.checkBox_Led8.setChecked(False)
|
|
||||||
else:
|
|
||||||
self.checkBox_Led8.setChecked(True)
|
|
||||||
|
|
||||||
|
|
||||||
if event.isAutoRepeat():
|
|
||||||
pass
|
|
||||||
else :
|
|
||||||
#print "You Pressed Key : ", event.key(), event.text()
|
|
||||||
if event.key() == Qt.Key_W:
|
|
||||||
self.on_btn_ForWard()
|
|
||||||
self.Key_W=True
|
|
||||||
elif event.key() == Qt.Key_S:
|
|
||||||
self.on_btn_BackWard()
|
|
||||||
self.Key_S=True
|
|
||||||
elif event.key() == Qt.Key_A:
|
|
||||||
self.on_btn_Turn_Left()
|
|
||||||
self.Key_A=True
|
|
||||||
elif event.key() == Qt.Key_D:
|
|
||||||
self.on_btn_Turn_Right()
|
|
||||||
self.Key_D=True
|
|
||||||
elif event.key() == Qt.Key_Space:
|
|
||||||
self.on_btn_Buzzer()
|
|
||||||
self.Key_Space=True
|
|
||||||
|
|
||||||
def keyReleaseEvent(self, event):
|
|
||||||
|
|
||||||
if(event.key() == Qt.Key_W):
|
|
||||||
time.sleep(0.05)
|
|
||||||
if(event.key() == Qt.Key_W):
|
|
||||||
if not(event.isAutoRepeat()) and self.Key_W==True:
|
|
||||||
self.on_btn_Stop()
|
|
||||||
self.Key_W=False
|
|
||||||
elif(event.key() == Qt.Key_A):
|
|
||||||
if not(event.isAutoRepeat()) and self.Key_A==True:
|
|
||||||
self.on_btn_Stop()
|
|
||||||
self.Key_A=False
|
|
||||||
elif(event.key() == Qt.Key_S):
|
|
||||||
if not(event.isAutoRepeat()) and self.Key_S==True:
|
|
||||||
self.on_btn_Stop()
|
|
||||||
self.Key_S=False
|
|
||||||
elif(event.key() == Qt.Key_D):
|
|
||||||
if not(event.isAutoRepeat()) and self.Key_D==True:
|
|
||||||
self.on_btn_Stop()
|
|
||||||
self.Key_D=False
|
|
||||||
|
|
||||||
if(event.key() == Qt.Key_Space):
|
|
||||||
if not(event.isAutoRepeat()) and self.Key_Space==True:
|
|
||||||
self.on_btn_Buzzer()
|
|
||||||
self.Key_Space=False
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def on_btn_ForWard(self):
|
|
||||||
self.TCP.sendData(cmd.CMD_FORWARD)
|
|
||||||
|
|
||||||
def on_btn_Turn_Left(self):
|
|
||||||
self.TCP.sendData(cmd.CMD_TURULEFT)
|
|
||||||
|
|
||||||
def on_btn_BackWard(self):
|
|
||||||
self.TCP.sendData(cmd.CMD_BACKWARD)
|
|
||||||
|
|
||||||
def on_btn_Turn_Right(self):
|
|
||||||
self.TCP.sendData(cmd.CMD_TURNRIGHT)
|
|
||||||
|
|
||||||
def on_btn_Stop(self):
|
|
||||||
self.TCP.sendData(cmd.CMD_MOTORSTOP)
|
|
||||||
|
|
||||||
def on_btn_video(self):
|
|
||||||
if self.Btn_Video.text()=='Open Video':
|
|
||||||
timer.start(34)
|
|
||||||
self.Btn_Video.setText('Close Video')
|
|
||||||
elif self.Btn_Video.text()=='Close Video':
|
|
||||||
timer.stop()
|
|
||||||
self.Btn_Video.setText('Open Video')
|
|
||||||
def on_btn_Up(self):
|
|
||||||
self.servo2=self.servo2+10
|
|
||||||
if self.servo2>=150:
|
|
||||||
self.servo2=150
|
|
||||||
self.VSlider_Servo2.setValue(self.servo2)
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO2+str(self.servo2))
|
|
||||||
|
|
||||||
self.label_Servo2.setText("%d"%self.servo2)
|
|
||||||
def on_btn_Left(self):
|
|
||||||
self.servo1=self.servo1-10
|
|
||||||
if self.servo1<=0:
|
|
||||||
self.servo1=0
|
|
||||||
self.HSlider_Servo1.setValue(self.servo1)
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO1+str(self.servo1)+'#0')
|
|
||||||
|
|
||||||
self.label_Servo1.setText("%d"%self.servo1)
|
|
||||||
def on_btn_Down(self):
|
|
||||||
self.servo2=self.servo2-10
|
|
||||||
if self.servo2<=0:
|
|
||||||
self.servo2=0
|
|
||||||
self.VSlider_Servo2.setValue(self.servo2)
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO2+str(self.servo2))
|
|
||||||
|
|
||||||
self.label_Servo2.setText("%d"%self.servo2)
|
|
||||||
|
|
||||||
def on_btn_Home(self):
|
|
||||||
self.servo1=90
|
|
||||||
self.servo2=20
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO1+str(self.servo1)+'#0')
|
|
||||||
self.label_Servo1.setText("%d"%self.servo1)
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO2+str(self.servo2))
|
|
||||||
self.label_Servo2.setText("%d"%self.servo2)
|
|
||||||
|
|
||||||
def on_btn_Right(self):
|
|
||||||
self.servo1=self.servo1+10
|
|
||||||
if self.servo1>=180:
|
|
||||||
self.servo1=180
|
|
||||||
self.HSlider_Servo1.setValue(self.servo1)
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO1+str(self.servo1)+'#0')
|
|
||||||
|
|
||||||
self.label_Servo1.setText("%d"%self.servo1)
|
|
||||||
|
|
||||||
|
|
||||||
def Change_Left_Right(self):#Left or Right
|
|
||||||
self.servo1=self.HSlider_Servo1.value()
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO1+str(self.servo1)+'#0')
|
|
||||||
self.label_Servo1.setText("%d"%self.servo1)
|
|
||||||
|
|
||||||
def Fine_Tune_Left_Right(self):#fine tune Left or Right
|
|
||||||
self.label_FineServo1.setText(str(self.HSlider_FineServo1.value()))
|
|
||||||
data=self.servo1+self.HSlider_FineServo1.value()
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO1+str(data)+'#0')
|
|
||||||
|
|
||||||
def Fine_Tune_Up_Down(self):#fine tune Up or Down
|
|
||||||
self.label_FineServo2.setText(str(self.HSlider_FineServo2.value()))
|
|
||||||
data=self.servo2+self.HSlider_FineServo2.value()
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO2+str(data))
|
|
||||||
|
|
||||||
|
|
||||||
def Change_Up_Down(self):#Up or Down
|
|
||||||
self.servo2=self.VSlider_Servo2.value()
|
|
||||||
self.TCP.sendData(cmd.CMD_SERVO2+str(self.servo2))
|
|
||||||
self.label_Servo2.setText("%d"%self.servo2)
|
|
||||||
|
|
||||||
def windowMinimumed(self):
|
|
||||||
self.showMinimized()
|
|
||||||
|
|
||||||
|
|
||||||
def on_btn_Buzzer(self):
|
|
||||||
if self.Btn_Buzzer.text()=='Buzzer':
|
|
||||||
self.TCP.sendData(cmd.CMD_BUZZER_ON)
|
|
||||||
self.Btn_Buzzer.setText('Noise')
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_BUZZER_OFF)
|
|
||||||
self.Btn_Buzzer.setText('Buzzer')
|
|
||||||
|
|
||||||
def LedChange(self,b):
|
|
||||||
R=self.Color_R.text()
|
|
||||||
G=self.Color_G.text()
|
|
||||||
B=self.Color_B.text()
|
|
||||||
if b.text() == "Led1":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED2_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED2_OFF)
|
|
||||||
if b.text() == "Led2":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED3_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED3_OFF)
|
|
||||||
if b.text() == "Led3":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED4_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED4_OFF)
|
|
||||||
if b.text() == "Led4":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED5_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED5_OFF)
|
|
||||||
if b.text() == "Led5":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED1_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED1_OFF)
|
|
||||||
if b.text() == "Led6":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED0_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED0_OFF)
|
|
||||||
if b.text() == "Led7":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED7_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED7_OFF)
|
|
||||||
if b.text() == "Led8":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED6_ON+str(R)+"#"+str(G)+"#"+str(B))
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED6_OFF)
|
|
||||||
if b.text() == "Led_Mode1":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode2.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode3.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode4.setChecked(False)
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_MOD1)
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_OFF)
|
|
||||||
if b.text() == "Led_Mode2":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
|
|
||||||
self.checkBox_Led_Mode1.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode3.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode4.setChecked(False)
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_MOD2)
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_OFF)
|
|
||||||
if b.text() == "Led_Mode3":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode2.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode1.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode4.setChecked(False)
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_MOD3)
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_OFF)
|
|
||||||
if b.text() == "Led_Mode4":
|
|
||||||
if b.isChecked() == True:
|
|
||||||
self.checkBox_Led_Mode2.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode3.setChecked(False)
|
|
||||||
self.checkBox_Led_Mode1.setChecked(False)
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_MOD4)
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LED_OFF)
|
|
||||||
def on_btn_Ultrasonic(self):
|
|
||||||
if self.Ultrasonic.text()=="Ultrasonic":
|
|
||||||
self.TCP.sendData(cmd.CMD_ULTRASONIC_ON)
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_ULTRASONIC_OFF)
|
|
||||||
self.Ultrasonic.setText("Ultrasonic")
|
|
||||||
|
|
||||||
def on_btn_Light(self):
|
|
||||||
if self.Light.text() == "Light":
|
|
||||||
self.TCP.sendData(cmd.CMD_LIGHT_ON)
|
|
||||||
else:
|
|
||||||
self.TCP.sendData(cmd.CMD_LIGHT_OFF)
|
|
||||||
self.Light.setText("Light")
|
|
||||||
|
|
||||||
def on_btn_Mode(self,Mode):
|
|
||||||
if Mode.text() == "M-Free":
|
|
||||||
if Mode.isChecked() == True:
|
|
||||||
timer.start(34)
|
|
||||||
self.TCP.sendData(cmd.CMD_MODE[0])
|
|
||||||
|
|
||||||
if Mode.text() == "M-Light":
|
|
||||||
if Mode.isChecked() == True:
|
|
||||||
timer.stop()
|
|
||||||
self.TCP.sendData(cmd.CMD_MODE[1])
|
|
||||||
if Mode.text() == "M-Sonic":
|
|
||||||
if Mode.isChecked() == True:
|
|
||||||
timer.stop()
|
|
||||||
self.TCP.sendData(cmd.CMD_MODE[2])
|
|
||||||
|
|
||||||
if Mode.text() == "M-Line":
|
|
||||||
if Mode.isChecked() == True:
|
|
||||||
timer.stop()
|
|
||||||
self.TCP.sendData(cmd.CMD_MODE[3])
|
|
||||||
|
|
||||||
|
|
||||||
def on_btn_Connect(self):
|
|
||||||
if self.Btn_Connect.text() == "Connect":
|
|
||||||
self.h=self.IP.text()
|
|
||||||
self.TCP.StartTcpClient(self.h,)
|
|
||||||
try:
|
|
||||||
self.streaming=Thread(target=self.TCP.streaming,args=(self.h,))
|
|
||||||
self.streaming.start()
|
|
||||||
except:
|
|
||||||
print 'video error'
|
|
||||||
try:
|
|
||||||
self.recv=Thread(target=self.recvmassage)
|
|
||||||
self.recv.start()
|
|
||||||
except:
|
|
||||||
print 'recv error'
|
|
||||||
self.Btn_Connect.setText( "Disconnect")
|
|
||||||
print (self.h)
|
|
||||||
elif self.Btn_Connect.text()=="Disconnect":
|
|
||||||
self.Btn_Connect.setText( "Connect")
|
|
||||||
self.TCP.windows=0
|
|
||||||
self.receflag=0
|
|
||||||
try:
|
|
||||||
stop_thread(self.streaming)
|
|
||||||
stop_thread(self.recv)
|
|
||||||
self.TCP.sendData(cmd.CMD_POWER_OFF)
|
|
||||||
self.TCP.client_socket1.send(cmd.CMD_CLOSE)
|
|
||||||
self.TCP.StopTcpcClient()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def is_valid_jpg(self,jpg_file):
|
|
||||||
try:
|
|
||||||
|
|
||||||
if jpg_file.split('.')[-1].lower() == 'jpg':
|
|
||||||
with open(jpg_file, 'rb') as f:
|
|
||||||
f.seek(-2, 2)
|
|
||||||
buf = f.read()
|
|
||||||
f.close()
|
|
||||||
return buf.endswith(b'\xff\xd9')
|
|
||||||
else:
|
|
||||||
return false
|
|
||||||
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def is_valid_jpg1(self,jpg_file):
|
|
||||||
try:
|
|
||||||
bValid = True
|
|
||||||
if jpg_file.split('.')[-1].lower() == 'jpg':
|
|
||||||
with open(jpg_file, 'rb') as f:
|
|
||||||
buf=f.read()
|
|
||||||
if not buf.startswith(b'\xff\xd8'):
|
|
||||||
bValid = False
|
|
||||||
elif buf[6:10] in (b'JFIF', b'Exif'):
|
|
||||||
if not buf.rstrip(b'\0\r\n').endswith(b'\xff\xd9'):
|
|
||||||
bValid = False
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
Image.open(f).verify()
|
|
||||||
except:
|
|
||||||
bValid = False
|
|
||||||
else:
|
|
||||||
return bValid
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
return bValid
|
|
||||||
|
|
||||||
|
|
||||||
def IsValidImage(self,pathfile):
|
|
||||||
bValid = True
|
|
||||||
try:
|
|
||||||
Image.open(pathfile).verify()
|
|
||||||
except:
|
|
||||||
bValid = False
|
|
||||||
return bValid
|
|
||||||
def Tracking_Face(self):
|
|
||||||
if self.Btn_Tracking_Faces.text()=="Tracing-On":
|
|
||||||
self.Btn_Tracking_Faces.setText("Tracing-Off")
|
|
||||||
else:
|
|
||||||
self.Btn_Tracking_Faces.setText("Tracing-On")
|
|
||||||
def find_Face(self,face_x,face_y):
|
|
||||||
if face_x!=0 and face_y!=0:
|
|
||||||
offset_x=float(face_x/400-0.5)*2
|
|
||||||
offset_y=float(face_y/300-0.5)*2
|
|
||||||
delta_degree_x = 4* offset_x
|
|
||||||
delta_degree_y = -4 * offset_y
|
|
||||||
self.servo1=self.servo1+delta_degree_x
|
|
||||||
self.servo2=self.servo2+delta_degree_y
|
|
||||||
if offset_x > -0.15 and offset_y >-0.15 and offset_x < 0.15 and offset_y <0.15:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
self.HSlider_Servo1.setValue(self.servo1)
|
|
||||||
self.VSlider_Servo2.setValue(self.servo2)
|
|
||||||
def time(self):
|
|
||||||
self.TCP.video_Flag=False
|
|
||||||
if self.is_valid_jpg1('video.jpg') and self.IsValidImage('video.jpg') and self.is_valid_jpg('video.jpg'):
|
|
||||||
self.label_Video.setPixmap(QtGui.QPixmap(QtCore.QString.fromUtf8('video.jpg')))
|
|
||||||
if self.Btn_Tracking_Faces.text()=="Tracing-Off":
|
|
||||||
self.find_Face(self.TCP.face_x,self.TCP.face_y)
|
|
||||||
self.TCP.video_Flag=True
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app = QApplication(sys.argv)
|
|
||||||
myshow=mywindow()
|
|
||||||
myshow.show();
|
|
||||||
sys.exit(app.exec_())
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,35 +0,0 @@
|
|||||||
import threading
|
|
||||||
import time
|
|
||||||
import inspect
|
|
||||||
import ctypes
|
|
||||||
|
|
||||||
|
|
||||||
def _async_raise(tid, exctype):
|
|
||||||
"""raises the exception, performs cleanup if needed"""
|
|
||||||
tid = ctypes.c_long(tid)
|
|
||||||
if not inspect.isclass(exctype):
|
|
||||||
exctype = type(exctype)
|
|
||||||
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
|
|
||||||
if res == 0:
|
|
||||||
raise ValueError("invalid thread id")
|
|
||||||
elif res != 1:
|
|
||||||
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
|
|
||||||
raise SystemError("PyThreadState_SetAsyncExc failed")
|
|
||||||
|
|
||||||
|
|
||||||
def stop_thread(thread):
|
|
||||||
_async_raise(thread.ident, SystemExit)
|
|
||||||
|
|
||||||
|
|
||||||
def test():
|
|
||||||
while True:
|
|
||||||
print('-------')
|
|
||||||
time.sleep(0.05)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
t = threading.Thread(target=test)
|
|
||||||
t.start()
|
|
||||||
time.sleep(0.2)
|
|
||||||
print("main thread sleep finish")
|
|
||||||
stop_thread(t)
|
|
@ -1,109 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import numpy as np
|
|
||||||
import cv2
|
|
||||||
import socket
|
|
||||||
import io
|
|
||||||
import sys
|
|
||||||
from PIL import Image
|
|
||||||
from multiprocessing import Process
|
|
||||||
from Command import COMMAND as cmd
|
|
||||||
|
|
||||||
class VideoStreaming:
|
|
||||||
def __init__(self):
|
|
||||||
self.face_cascade = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml')
|
|
||||||
self.video_Flag=True
|
|
||||||
self.connect_Flag=False
|
|
||||||
self.face_x=0
|
|
||||||
self.face_y=0
|
|
||||||
def StartTcpClient(self,IP):
|
|
||||||
self.client_socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
||||||
self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
||||||
print 'StartTcpClient'
|
|
||||||
def StopTcpcClient(self):
|
|
||||||
try:
|
|
||||||
self.connection.close()
|
|
||||||
self.client_socket.close()
|
|
||||||
self.client_socket1.close()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def IsValidImage4Bytes(self,buf):
|
|
||||||
bValid = True
|
|
||||||
if buf[6:10] in (b'JFIF', b'Exif'):
|
|
||||||
if not buf.rstrip(b'\0\r\n').endswith(b'\xff\xd9'):
|
|
||||||
bValid = False
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
Image.open(io.BytesIO(buf)).verify()
|
|
||||||
except:
|
|
||||||
bValid = False
|
|
||||||
|
|
||||||
return bValid
|
|
||||||
|
|
||||||
def face_detect(self,img):
|
|
||||||
if sys.platform.startswith('win'):
|
|
||||||
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
|
|
||||||
faces = self.face_cascade.detectMultiScale(gray,1.3,5)
|
|
||||||
if len(faces)>0 :
|
|
||||||
for (x,y,w,h) in faces:
|
|
||||||
self.face_x=float(x+w/2.0)
|
|
||||||
self.face_y=float(y+h/2.0)
|
|
||||||
img = cv2.circle(img, (x+w/2,y+h/2), (w+h)/4, (0, 255, 0), 2)
|
|
||||||
else:
|
|
||||||
self.face_x=0
|
|
||||||
self.face_y=0
|
|
||||||
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
cv2.imwrite('video.jpg', img)
|
|
||||||
|
|
||||||
def streaming(self,ip):
|
|
||||||
try:
|
|
||||||
stream_bytes = b' '
|
|
||||||
self.client_socket.connect((ip, 8000))
|
|
||||||
self.connection = self.client_socket.makefile('wb')
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
stream_bytes += self.connection.read(1024)
|
|
||||||
first = stream_bytes.find(b'\xff\xd8')
|
|
||||||
last = stream_bytes.find(b'\xff\xd9')
|
|
||||||
if first != -1 and last != -1 :
|
|
||||||
jpg = stream_bytes[first:last + 2]
|
|
||||||
stream_bytes = stream_bytes[last + 2:]
|
|
||||||
if self.IsValidImage4Bytes(jpg):
|
|
||||||
image = cv2.imdecode(np.frombuffer(jpg, dtype=np.uint8), cv2.IMREAD_COLOR)
|
|
||||||
if self.video_Flag:
|
|
||||||
self.face_detect(image)
|
|
||||||
except:
|
|
||||||
break
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def sendData(self,s):
|
|
||||||
if self.connect_Flag:
|
|
||||||
self.client_socket1.send(s)
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def recvData(self):
|
|
||||||
data=0
|
|
||||||
try:
|
|
||||||
data=self.client_socket1.recv(1024)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
return data
|
|
||||||
|
|
||||||
def socket1_connect(self,ip):
|
|
||||||
try:
|
|
||||||
self.client_socket1.connect((ip, 5000))
|
|
||||||
self.connect_Flag=True
|
|
||||||
print "Connecttion Successful !"
|
|
||||||
except Exception, e:
|
|
||||||
print "Connect to server Faild!: Server IP is right? Server is opend?", e
|
|
||||||
self.connect_Flag=False
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
a=VideoStreaming()
|
|
||||||
pass
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,64 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
#############################################################################
|
|
||||||
# Filename : ADC.py
|
|
||||||
# Description : ADC and DAC
|
|
||||||
# Author : freenove
|
|
||||||
# modification: 2018/09/15
|
|
||||||
########################################################################
|
|
||||||
import smbus
|
|
||||||
import time
|
|
||||||
class Adc:
|
|
||||||
def __init__(self):
|
|
||||||
self.address = 0x48 #default address of PCF8591
|
|
||||||
self.bus=smbus.SMBus(1)
|
|
||||||
self.cmd=0x40 #command
|
|
||||||
|
|
||||||
def analogRead(self,chn):#read ADC value,chn:0,1,2,3
|
|
||||||
value=[0,0,0,0,0,0,0,0,0]
|
|
||||||
for i in range(9):
|
|
||||||
value[i] = self.bus.read_byte_data(self.address,self.cmd+chn)
|
|
||||||
value=sorted(value)
|
|
||||||
return value[4]
|
|
||||||
def analogWrite(self,value):#write DAC value
|
|
||||||
self.bus.write_byte_data(address,cmd,value)
|
|
||||||
def loop(self):
|
|
||||||
while True:
|
|
||||||
self.value = self.analogRead(2) #read the ADC value of channel 0,1,2,3
|
|
||||||
#analogWrite(value) #write the DAC value
|
|
||||||
self.voltage = self.value / 256.0 * 3.3 #calculate the voltage value
|
|
||||||
print ('ADC Value : %d, Voltage : %.2f'%(self.value,self.voltage))
|
|
||||||
time.sleep(0.01)
|
|
||||||
def recvADC(self,channel):
|
|
||||||
while(1):
|
|
||||||
self.value = self.analogRead(channel) #read the ADC value of channel 0,1,2,
|
|
||||||
self.value1 = self.analogRead(channel)
|
|
||||||
if self.value==self.value1:
|
|
||||||
break;
|
|
||||||
self.voltage = self.value / 256.0 * 3.3 #calculate the voltage value
|
|
||||||
self.voltage = round(self.voltage,2)
|
|
||||||
return self.voltage
|
|
||||||
def destroy():
|
|
||||||
self.bus.close()
|
|
||||||
|
|
||||||
def loop():
|
|
||||||
while True:
|
|
||||||
adc=Adc()
|
|
||||||
Left_IDR=adc.recvADC(0)
|
|
||||||
print (Left_IDR)
|
|
||||||
Right_IDR=adc.recvADC(1)
|
|
||||||
print (Right_IDR)
|
|
||||||
Power=adc.recvADC(2)
|
|
||||||
print (Power)
|
|
||||||
time.sleep(1)
|
|
||||||
#print '----'
|
|
||||||
|
|
||||||
def destroy():
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Main program logic follows:
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print ('Program is starting ... ')
|
|
||||||
try:
|
|
||||||
loop()
|
|
||||||
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.
|
|
||||||
destroy()
|
|
@ -1,26 +0,0 @@
|
|||||||
import time
|
|
||||||
import RPi.GPIO as GPIO
|
|
||||||
from Command import COMMAND as cmd
|
|
||||||
GPIO.setwarnings(False)
|
|
||||||
Buzzer_Pin = 17
|
|
||||||
GPIO.setmode(GPIO.BCM)
|
|
||||||
GPIO.setup(Buzzer_Pin,GPIO.OUT)
|
|
||||||
class Buzzer:
|
|
||||||
def run(self,command):
|
|
||||||
if command==cmd.CMD_START:
|
|
||||||
GPIO.output(Buzzer_Pin,True)
|
|
||||||
elif command==cmd.CMD_STOP:
|
|
||||||
GPIO.output(Buzzer_Pin,False)
|
|
||||||
else:
|
|
||||||
GPIO.output(Buzzer_Pin,False)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__=='__main__':
|
|
||||||
B=Buzzer()
|
|
||||||
B.run(cmd.CMD_START)
|
|
||||||
time.sleep(3)
|
|
||||||
B.run(cmd.CMD_STOP)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
|||||||
class COMMAND:
|
|
||||||
CMD_MOTOR = "CMD_MOTOR"
|
|
||||||
CMD_LED = "CMD_LED"
|
|
||||||
CMD_LED_MOD = "CMD_LED_MOD"
|
|
||||||
CMD_SERVO = "CMD_SERVO"
|
|
||||||
CMD_BUZZER = "CMD_BUZZER"
|
|
||||||
CMD_SONIC = "CMD_SONIC"
|
|
||||||
CMD_LIGHT = "CMD_LIGHT"
|
|
||||||
CMD_POWER = "CMD_POWER"
|
|
||||||
CMD_START = "Start"
|
|
||||||
CMD_STOP = "Stop"
|
|
||||||
CMD_CLOSE = "CMD_CLOSE"
|
|
||||||
CMD_FORWARD = "CMD_MOTOR#1500#1500#1500#1500"
|
|
||||||
CMD_TURULEFT = "CMD_MOTOR#-1500#-1500#1500#1500"
|
|
||||||
CMD_BACKWARD = "CMD_MOTOR#-1500#-1500#-1500#-1500"
|
|
||||||
CMD_TURNRIGHT = "CMD_MOTOR#1500#1500#-1500#-1500"
|
|
||||||
CMD_MOTORSTOP = "CMD_MOTOR#0#0#0#0"
|
|
||||||
CMD_SERVO1 = "CMD_SERVO#1#0#"
|
|
||||||
CMD_SERVO2 = "CMD_SERVO#0#1#0#"
|
|
||||||
CMD_LED0_OFF = "CMD_LED#0#0#0#0"
|
|
||||||
CMD_LED0_ON = "CMD_LED#0#"
|
|
||||||
CMD_LED1_OFF = "CMD_LED#1#0#0#0"
|
|
||||||
CMD_LED1_ON = "CMD_LED#1#"
|
|
||||||
CMD_LED2_OFF = "CMD_LED#2#0#0#0"
|
|
||||||
CMD_LED2_ON = "CMD_LED#2#"
|
|
||||||
CMD_LED3_OFF = "CMD_LED#3#0#0#0"
|
|
||||||
CMD_LED3_ON = "CMD_LED#3#"
|
|
||||||
CMD_LED4_OFF = "CMD_LED#4#0#0#0"
|
|
||||||
CMD_LED4_ON = "CMD_LED#4#"
|
|
||||||
CMD_LED5_OFF = "CMD_LED#5#0#0#0"
|
|
||||||
CMD_LED5_ON = "CMD_LED#5#"
|
|
||||||
CMD_LED6_OFF = "CMD_LED#6#0#0#0"
|
|
||||||
CMD_LED6_ON = "CMD_LED#6#"
|
|
||||||
CMD_LED7_OFF = "CMD_LED#7#0#0#0"
|
|
||||||
CMD_LED7_ON = "CMD_LED#7#"
|
|
||||||
CMD_LED_MOD1 = "CMD_LED_MOD#one"
|
|
||||||
CMD_LED_MOD2 = "CMD_LED_MOD#two"
|
|
||||||
CMD_LED_MOD3 = "CMD_LED_MOD#three"
|
|
||||||
CMD_LED_MOD4 = "CMD_LED_MOD#four"
|
|
||||||
CMD_LED_OFF = "CMD_LED_MOD#0"
|
|
||||||
CMD_BUZZER_ON = "CMD_BUZZER#Start"
|
|
||||||
CMD_BUZZER_OFF = "CMD_BUZZER#Stop"
|
|
||||||
CMD_ULTRASONIC_ON = "CMD_SONIC#Start"
|
|
||||||
CMD_ULTRASONIC_OFF = "CMD_SONIC#Stop"
|
|
||||||
CMD_LIGHT_ON = "CMD_LIGHT#Start"
|
|
||||||
CMD_LIGHT_OFF = "CMD_LIGHT#Stop"
|
|
||||||
CMD_POWER_ON = "CMD_POWER#Start"
|
|
||||||
CMD_POWER_OFF = "CMD_POWER#Stop"
|
|
||||||
CMD_MODE =["CMD_MODE1","CMD_MODE2","CMD_MODE3","CMD_MODE4"]
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
@ -1,42 +0,0 @@
|
|||||||
import time
|
|
||||||
from Motor import *
|
|
||||||
import RPi.GPIO as GPIO
|
|
||||||
IR01 = 14
|
|
||||||
IR02 = 15
|
|
||||||
IR03 = 23
|
|
||||||
GPIO.setmode(GPIO.BCM)
|
|
||||||
GPIO.setup(IR01,GPIO.IN)
|
|
||||||
GPIO.setup(IR02,GPIO.IN)
|
|
||||||
GPIO.setup(IR03,GPIO.IN)
|
|
||||||
class Infrared_Obstacle_Avoidance:
|
|
||||||
def run(self):
|
|
||||||
|
|
||||||
while True:
|
|
||||||
self.LMR=0x00
|
|
||||||
if GPIO.input(IR01)==True:
|
|
||||||
self.LMR=(self.LMR | 4)
|
|
||||||
if GPIO.input(IR02)==True:
|
|
||||||
self.LMR=(self.LMR | 2)
|
|
||||||
if GPIO.input(IR03)==True:
|
|
||||||
self.LMR=(self.LMR | 1)
|
|
||||||
if self.LMR==2:
|
|
||||||
PWM.setMotorModel(800,800,800,800)
|
|
||||||
elif self.LMR==4:
|
|
||||||
PWM.setMotorModel(-1400,-1400,1400,1400)
|
|
||||||
elif self.LMR==6:
|
|
||||||
PWM.setMotorModel(-800,-800,1200,1200)
|
|
||||||
elif self.LMR==1:
|
|
||||||
PWM.setMotorModel(1400,1400,-1400,-1400)
|
|
||||||
elif self.LMR==3:
|
|
||||||
PWM.setMotorModel(1200,1200,-800,-800)
|
|
||||||
elif self.LMR==7:
|
|
||||||
PWM.setMotorModel(0,0,0,0)
|
|
||||||
|
|
||||||
Infrared=Infrared_Obstacle_Avoidance()
|
|
||||||
# Main program logic follows:
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print ('Program is starting ... ')
|
|
||||||
try:
|
|
||||||
Infrared.run()
|
|
||||||
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.
|
|
||||||
PWM.setMotorModel(0,0,0,0)
|
|
@ -1,124 +0,0 @@
|
|||||||
# -*-coding: utf-8 -*-
|
|
||||||
import time
|
|
||||||
from rpi_ws281x import *
|
|
||||||
# LED strip configuration:
|
|
||||||
LED_COUNT = 8 # Number of LED pixels.
|
|
||||||
LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!).
|
|
||||||
LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz)
|
|
||||||
LED_DMA = 10 # DMA channel to use for generating signal (try 10)
|
|
||||||
LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest
|
|
||||||
LED_INVERT = False # True to invert the signal (when using NPN transistor level shift)
|
|
||||||
LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53
|
|
||||||
# Define functions which animate LEDs in various ways.
|
|
||||||
class Led:
|
|
||||||
def __init__(self):
|
|
||||||
# Create NeoPixel object with appropriate configuration.
|
|
||||||
self.strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL)
|
|
||||||
# Intialize the library (must be called once before other functions).
|
|
||||||
self.strip.begin()
|
|
||||||
self.number='0'
|
|
||||||
def colorWipe(self,strip, color, wait_ms=50):
|
|
||||||
"""Wipe color across display a pixel at a time."""
|
|
||||||
for i in range(self.strip.numPixels()):
|
|
||||||
self.strip.setPixelColor(i, color)
|
|
||||||
self.strip.show()
|
|
||||||
time.sleep(wait_ms/1000.0)
|
|
||||||
|
|
||||||
def theaterChase(self,strip, color, wait_ms=50, iterations=10):
|
|
||||||
"""Movie theater light style chaser animation."""
|
|
||||||
for j in range(iterations):
|
|
||||||
for q in range(3):
|
|
||||||
for i in range(0,self.strip.numPixels(), 3):
|
|
||||||
self.strip.setPixelColor(i+q, color)
|
|
||||||
self.strip.show()
|
|
||||||
time.sleep(wait_ms/1000.0)
|
|
||||||
for i in range(0, self.strip.numPixels(), 3):
|
|
||||||
self.strip.setPixelColor(i+q, 0)
|
|
||||||
|
|
||||||
def wheel(self,pos):
|
|
||||||
"""Generate rainbow colors across 0-255 positions."""
|
|
||||||
if pos < 85:
|
|
||||||
return Color(pos * 3, 255 - pos * 3, 0)
|
|
||||||
elif pos < 170:
|
|
||||||
pos -= 85
|
|
||||||
return Color(255 - pos * 3, 0, pos * 3)
|
|
||||||
else:
|
|
||||||
pos -= 170
|
|
||||||
return Color(0, pos * 3, 255 - pos * 3)
|
|
||||||
|
|
||||||
def rainbow(self,strip, wait_ms=20, iterations=1):
|
|
||||||
"""Draw rainbow that fades across all pixels at once."""
|
|
||||||
for j in range(256*iterations):
|
|
||||||
for i in range(self.strip.numPixels()):
|
|
||||||
self.strip.setPixelColor(i, self.wheel((i+j) & 255))
|
|
||||||
self.strip.show()
|
|
||||||
time.sleep(wait_ms/1000.0)
|
|
||||||
|
|
||||||
def rainbowCycle(self,strip, wait_ms=20, iterations=5):
|
|
||||||
"""Draw rainbow that uniformly distributes itself across all pixels."""
|
|
||||||
for j in range(256*iterations):
|
|
||||||
for i in range(self.strip.numPixels()):
|
|
||||||
self.strip.setPixelColor(i, self.wheel((int(i * 256 / self.strip.numPixels()) + j) & 255))
|
|
||||||
self.strip.show()
|
|
||||||
time.sleep(wait_ms/1000.0)
|
|
||||||
|
|
||||||
def theaterChaseRainbow(self,strip, wait_ms=50):
|
|
||||||
"""Rainbow movie theater light style chaser animation."""
|
|
||||||
for j in range(256):
|
|
||||||
for q in range(3):
|
|
||||||
for i in range(0, self.strip.numPixels(), 3):
|
|
||||||
self.strip.setPixelColor(i+q, self.wheel((i+j) % 255))
|
|
||||||
self.strip.show()
|
|
||||||
time.sleep(wait_ms/1000.0)
|
|
||||||
for i in range(0, strip.numPixels(), 3):
|
|
||||||
strip.setPixelColor(i+q, 0)
|
|
||||||
def ledIndex(self,index,R,G,B):
|
|
||||||
self.strip.setPixelColor(index, Color(R,G,B))
|
|
||||||
self.strip.show()
|
|
||||||
def ledMode(self,n):
|
|
||||||
self.mode=n
|
|
||||||
while True:
|
|
||||||
if self.mode=='one':
|
|
||||||
self.colorWipe(self.strip, Color(255, 0, 0)) # Red wipe
|
|
||||||
self.colorWipe(self.strip, Color(0, 255, 0)) # Green wipe
|
|
||||||
self.colorWipe(self.strip, Color(0, 0, 255)) # Blue wipe
|
|
||||||
self.colorWipe(self.strip, Color(0,0,0),10)
|
|
||||||
elif self.mode=='two':
|
|
||||||
self.theaterChaseRainbow(self.strip)
|
|
||||||
self.colorWipe(self.strip, Color(0,0,0),10)
|
|
||||||
elif self.mode=='three':
|
|
||||||
self.rainbow(self.strip)
|
|
||||||
self.colorWipe(self.strip, Color(0,0,0),10)
|
|
||||||
elif self.mode=='four':
|
|
||||||
self.rainbowCycle(self.strip)
|
|
||||||
self.colorWipe(self.strip, Color(0,0,0),10)
|
|
||||||
else:
|
|
||||||
self.colorWipe(self.strip, Color(0,0,0),10)
|
|
||||||
break
|
|
||||||
led=Led()
|
|
||||||
# Main program logic follows:
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print ('Program is starting ... ')
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
print "Chaser animation"
|
|
||||||
led.colorWipe(led.strip, Color(255, 0, 0)) # Red wipe
|
|
||||||
led.colorWipe(led.strip, Color(0, 255, 0)) # Green wipe
|
|
||||||
led.colorWipe(led.strip, Color(0, 0, 255)) # Blue wipe
|
|
||||||
led.theaterChaseRainbow(led.strip)
|
|
||||||
print "Rainbow animation"
|
|
||||||
led.rainbow(led.strip)
|
|
||||||
led.rainbowCycle(led.strip)
|
|
||||||
led.colorWipe(led.strip, Color(0,0,0),10)
|
|
||||||
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.
|
|
||||||
led.colorWipe(led.strip, Color(0,0,0),10)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,37 +0,0 @@
|
|||||||
import time
|
|
||||||
from Motor import *
|
|
||||||
from ADC import *
|
|
||||||
class Light:
|
|
||||||
def run(self):
|
|
||||||
try:
|
|
||||||
self.adc=Adc()
|
|
||||||
self.PWM=Motor()
|
|
||||||
self.PWM.setMotorModel(0,0,0,0)
|
|
||||||
while True:
|
|
||||||
L = self.adc.recvADC(0)
|
|
||||||
R = self.adc.recvADC(1)
|
|
||||||
if L < 2.99 and R < 2.99 :
|
|
||||||
self.PWM.setMotorModel(600,600,600,600)
|
|
||||||
|
|
||||||
elif abs(L-R)<0.15:
|
|
||||||
self.PWM.setMotorModel(0,0,0,0)
|
|
||||||
|
|
||||||
elif L > 3 or R > 3:
|
|
||||||
if L > R :
|
|
||||||
self.PWM.setMotorModel(-1200,-1200,1400,1400)
|
|
||||||
|
|
||||||
elif R > L :
|
|
||||||
self.PWM.setMotorModel(1400,1400,-1200,-1200)
|
|
||||||
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
led_Car.PWM.setMotorModel(0,0,0,0)
|
|
||||||
|
|
||||||
if __name__=='__main__':
|
|
||||||
print ('Program is starting ... ')
|
|
||||||
led_Car=Light()
|
|
||||||
led_Car.run()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
|||||||
import time
|
|
||||||
from PCA9685 import PCA9685
|
|
||||||
class Motor:
|
|
||||||
def __init__(self):
|
|
||||||
self.pwm = PCA9685(0x40, debug=True)
|
|
||||||
self.pwm.setPWMFreq(50)
|
|
||||||
def left_Upper_Wheel(self,duty):
|
|
||||||
if duty>0:
|
|
||||||
self.pwm.setMotorPwm(1,0)
|
|
||||||
self.pwm.setMotorPwm(0,duty)
|
|
||||||
elif duty<0:
|
|
||||||
self.pwm.setMotorPwm(0,0)
|
|
||||||
self.pwm.setMotorPwm(1,abs(duty))
|
|
||||||
else:
|
|
||||||
self.pwm.setMotorPwm(0,4096)
|
|
||||||
self.pwm.setMotorPwm(1,4096)
|
|
||||||
def left_Lower_Wheel(self,duty):
|
|
||||||
if duty>0:
|
|
||||||
self.pwm.setMotorPwm(2,0)
|
|
||||||
self.pwm.setMotorPwm(3,duty)
|
|
||||||
elif duty<0:
|
|
||||||
self.pwm.setMotorPwm(3,0)
|
|
||||||
self.pwm.setMotorPwm(2,abs(duty))
|
|
||||||
else:
|
|
||||||
self.pwm.setMotorPwm(2,4096)
|
|
||||||
self.pwm.setMotorPwm(3,4096)
|
|
||||||
def right_Upper_Wheel(self,duty):
|
|
||||||
if duty>0:
|
|
||||||
self.pwm.setMotorPwm(7,0)
|
|
||||||
self.pwm.setMotorPwm(6,duty)
|
|
||||||
elif duty<0:
|
|
||||||
self.pwm.setMotorPwm(6,0)
|
|
||||||
self.pwm.setMotorPwm(7,abs(duty))
|
|
||||||
else:
|
|
||||||
self.pwm.setMotorPwm(6,4096)
|
|
||||||
self.pwm.setMotorPwm(7,4096)
|
|
||||||
def right_Lower_Wheel(self,duty):
|
|
||||||
if duty>0:
|
|
||||||
self.pwm.setMotorPwm(5,0)
|
|
||||||
self.pwm.setMotorPwm(4,duty)
|
|
||||||
elif duty<0:
|
|
||||||
self.pwm.setMotorPwm(4,0)
|
|
||||||
self.pwm.setMotorPwm(5,abs(duty))
|
|
||||||
else:
|
|
||||||
self.pwm.setMotorPwm(4,4096)
|
|
||||||
self.pwm.setMotorPwm(5,4096)
|
|
||||||
|
|
||||||
|
|
||||||
def setMotorModel(self,duty1,duty2,duty3,duty4):
|
|
||||||
self.left_Upper_Wheel(duty1)
|
|
||||||
self.left_Lower_Wheel(duty2)
|
|
||||||
self.right_Upper_Wheel(duty3)
|
|
||||||
self.right_Lower_Wheel(duty4)
|
|
||||||
|
|
||||||
|
|
||||||
PWM=Motor()
|
|
||||||
def loop():
|
|
||||||
PWM.setMotorModel(2000,2000,2000,2000) #Forward
|
|
||||||
time.sleep(3)
|
|
||||||
PWM.setMotorModel(-2000,-2000,-2000,-2000) #Back
|
|
||||||
time.sleep(3)
|
|
||||||
PWM.setMotorModel(-500,-500,2000,2000) #Left
|
|
||||||
time.sleep(3)
|
|
||||||
PWM.setMotorModel(2000,2000,-500,-500) #Right
|
|
||||||
time.sleep(3)
|
|
||||||
PWM.setMotorModel(0,0,0,0) #Stop
|
|
||||||
|
|
||||||
def destroy():
|
|
||||||
PWM.setMotorModel(0,0,0,0)
|
|
||||||
if __name__=='__main__':
|
|
||||||
try:
|
|
||||||
loop()
|
|
||||||
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.
|
|
||||||
destroy()
|
|
@ -1,92 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
|
|
||||||
import time
|
|
||||||
import math
|
|
||||||
import smbus
|
|
||||||
|
|
||||||
# ============================================================================
|
|
||||||
# Raspi PCA9685 16-Channel PWM Servo Driver
|
|
||||||
# ============================================================================
|
|
||||||
|
|
||||||
class PCA9685:
|
|
||||||
|
|
||||||
# Registers/etc.
|
|
||||||
__SUBADR1 = 0x02
|
|
||||||
__SUBADR2 = 0x03
|
|
||||||
__SUBADR3 = 0x04
|
|
||||||
__MODE1 = 0x00
|
|
||||||
__PRESCALE = 0xFE
|
|
||||||
__LED0_ON_L = 0x06
|
|
||||||
__LED0_ON_H = 0x07
|
|
||||||
__LED0_OFF_L = 0x08
|
|
||||||
__LED0_OFF_H = 0x09
|
|
||||||
__ALLLED_ON_L = 0xFA
|
|
||||||
__ALLLED_ON_H = 0xFB
|
|
||||||
__ALLLED_OFF_L = 0xFC
|
|
||||||
__ALLLED_OFF_H = 0xFD
|
|
||||||
|
|
||||||
def __init__(self, address=0x40, debug=False):
|
|
||||||
self.bus = smbus.SMBus(1)
|
|
||||||
self.address = address
|
|
||||||
self.debug = debug
|
|
||||||
self.write(self.__MODE1, 0x00)
|
|
||||||
|
|
||||||
def write(self, reg, value):
|
|
||||||
"Writes an 8-bit value to the specified register/address"
|
|
||||||
self.bus.write_byte_data(self.address, reg, value)
|
|
||||||
|
|
||||||
def read(self, reg):
|
|
||||||
"Read an unsigned byte from the I2C device"
|
|
||||||
result = self.bus.read_byte_data(self.address, reg)
|
|
||||||
return result
|
|
||||||
|
|
||||||
def setPWMFreq(self, freq):
|
|
||||||
"Sets the PWM frequency"
|
|
||||||
prescaleval = 25000000.0 # 25MHz
|
|
||||||
prescaleval /= 4096.0 # 12-bit
|
|
||||||
prescaleval /= float(freq)
|
|
||||||
prescaleval -= 1.0
|
|
||||||
prescale = math.floor(prescaleval + 0.5)
|
|
||||||
|
|
||||||
|
|
||||||
oldmode = self.read(self.__MODE1);
|
|
||||||
newmode = (oldmode & 0x7F) | 0x10 # sleep
|
|
||||||
self.write(self.__MODE1, newmode) # go to sleep
|
|
||||||
self.write(self.__PRESCALE, int(math.floor(prescale)))
|
|
||||||
self.write(self.__MODE1, oldmode)
|
|
||||||
time.sleep(0.005)
|
|
||||||
self.write(self.__MODE1, oldmode | 0x80)
|
|
||||||
|
|
||||||
def setPWM(self, channel, on, off):
|
|
||||||
"Sets a single PWM channel"
|
|
||||||
self.write(self.__LED0_ON_L+4*channel, on & 0xFF)
|
|
||||||
self.write(self.__LED0_ON_H+4*channel, on >> 8)
|
|
||||||
self.write(self.__LED0_OFF_L+4*channel, off & 0xFF)
|
|
||||||
self.write(self.__LED0_OFF_H+4*channel, off >> 8)
|
|
||||||
def setMotorPwm(self,channel,duty):
|
|
||||||
self.setPWM(channel,0,duty)
|
|
||||||
def setServoPulse(self, channel, pulse):
|
|
||||||
"Sets the Servo Pulse,The PWM frequency must be 50HZ"
|
|
||||||
pulse = pulse*4096/20000 #PWM frequency is 50HZ,the period is 20000us
|
|
||||||
self.setPWM(channel, 0, int(pulse))
|
|
||||||
|
|
||||||
if __name__=='__main__':
|
|
||||||
|
|
||||||
pwm = PCA9685(0x40, debug=True)
|
|
||||||
pwm.setPWMFreq(50)
|
|
||||||
count=0;
|
|
||||||
while True:
|
|
||||||
for i in range(500,2500,10):
|
|
||||||
pwm.setServoPulse(8,i)
|
|
||||||
pwm.setServoPulse(9,i)
|
|
||||||
time.sleep(0.02)
|
|
||||||
|
|
||||||
for i in range(2500,500,-10):
|
|
||||||
pwm.setServoPulse(8,i)
|
|
||||||
pwm.setServoPulse(9,i)
|
|
||||||
time.sleep(0.02)
|
|
||||||
count=count+1
|
|
||||||
if count > 5 :
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
|||||||
import threading
|
|
||||||
import time
|
|
||||||
import inspect
|
|
||||||
import ctypes
|
|
||||||
|
|
||||||
|
|
||||||
def _async_raise(tid, exctype):
|
|
||||||
"""raises the exception, performs cleanup if needed"""
|
|
||||||
tid = ctypes.c_long(tid)
|
|
||||||
if not inspect.isclass(exctype):
|
|
||||||
exctype = type(exctype)
|
|
||||||
res = ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(exctype))
|
|
||||||
if res == 0:
|
|
||||||
raise ValueError("invalid thread id")
|
|
||||||
elif res != 1:
|
|
||||||
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, None)
|
|
||||||
raise SystemError("PyThreadState_SetAsyncExc failed")
|
|
||||||
|
|
||||||
|
|
||||||
def stop_thread(thread):
|
|
||||||
for i in range(5):
|
|
||||||
_async_raise(thread.ident, SystemExit)
|
|
||||||
|
|
||||||
|
|
||||||
def test():
|
|
||||||
while True:
|
|
||||||
print('-------')
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
t = threading.Thread(target=test)
|
|
||||||
t.start()
|
|
||||||
time.sleep(5)
|
|
||||||
print("main thread sleep finish")
|
|
||||||
stop_thread(t)
|
|
@ -1,111 +0,0 @@
|
|||||||
import time
|
|
||||||
from Motor import *
|
|
||||||
import RPi.GPIO as GPIO
|
|
||||||
from servo import *
|
|
||||||
from PCA9685 import PCA9685
|
|
||||||
GPIO.setwarnings(False)
|
|
||||||
trigger_pin = 27
|
|
||||||
echo_pin = 22
|
|
||||||
GPIO.setmode(GPIO.BCM)
|
|
||||||
GPIO.setup(trigger_pin,GPIO.OUT)
|
|
||||||
GPIO.setup(echo_pin,GPIO.IN)
|
|
||||||
class Ultrasonic:
|
|
||||||
def send_trigger_pulse(self):
|
|
||||||
GPIO.output(trigger_pin,True)
|
|
||||||
time.sleep(0.00015)
|
|
||||||
GPIO.output(trigger_pin,False)
|
|
||||||
|
|
||||||
def wait_for_echo(self,value,timeout):
|
|
||||||
count = timeout
|
|
||||||
while GPIO.input(echo_pin) != value and count>0:
|
|
||||||
count = count-1
|
|
||||||
|
|
||||||
def get_distance(self):
|
|
||||||
distance_cm=[0,0,0]
|
|
||||||
for i in range(3):
|
|
||||||
self.send_trigger_pulse()
|
|
||||||
self.wait_for_echo(True,10000)
|
|
||||||
start = time.time()
|
|
||||||
self.wait_for_echo(False,10000)
|
|
||||||
finish = time.time()
|
|
||||||
pulse_len = finish-start
|
|
||||||
distance_cm[i] = pulse_len/0.000058
|
|
||||||
distance_cm=sorted(distance_cm)
|
|
||||||
return int(distance_cm[1])
|
|
||||||
def run_motor(self,L,M,R):
|
|
||||||
if L < 30 and M < 30 and R <30 :
|
|
||||||
self.PWM.setMotorModel(-1450,-1450,-1450,-1450)
|
|
||||||
time.sleep(0.1)
|
|
||||||
if L < R:
|
|
||||||
self.PWM.setMotorModel(1450,1450,-1450,-1450)
|
|
||||||
else :
|
|
||||||
self.PWM.setMotorModel(-1450,-1450,1450,1450)
|
|
||||||
elif L < 30 and M < 30:
|
|
||||||
self.PWM.setMotorModel(-1450,-1450,-1450,-1450)
|
|
||||||
time.sleep(0.1)
|
|
||||||
PWM.setMotorModel(1500,1500,-1500,-1500)
|
|
||||||
elif R < 30 and M < 30:
|
|
||||||
self.PWM.setMotorModel(-1450,-1450,-1450,-1450)
|
|
||||||
time.sleep(0.1)
|
|
||||||
PWM.setMotorModel(-1500,-1500,1500,1500)
|
|
||||||
elif L < 20 :
|
|
||||||
PWM.setMotorModel(2000,2000,-500,-500)
|
|
||||||
if L < 20 :
|
|
||||||
PWM.setMotorModel(1500,1500,-1000,-1000)
|
|
||||||
elif R < 30 :
|
|
||||||
PWM.setMotorModel(-500,-500,2000,2000)
|
|
||||||
if R < 20 :
|
|
||||||
PWM.setMotorModel(-1500,-1500,1500,1500)
|
|
||||||
elif M < 30 :
|
|
||||||
self.PWM.setMotorModel(-1450,-1450,-1450,-1450)
|
|
||||||
time.sleep(0.1)
|
|
||||||
if L < R:
|
|
||||||
self.PWM.setMotorModel(1450,1450,-1450,-1450)
|
|
||||||
else :
|
|
||||||
self.PWM.setMotorModel(-1450,-1450,1450,1450)
|
|
||||||
else :
|
|
||||||
self.PWM.setMotorModel(600,600,600,600)
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
self.PWM=Motor()
|
|
||||||
self.pwm_S=Servo()
|
|
||||||
|
|
||||||
self.pwm_S.setServoPwm(1,0,30,0)
|
|
||||||
R = self.get_distance()
|
|
||||||
time.sleep(0.2)
|
|
||||||
|
|
||||||
self.pwm_S.setServoPwm(1,0,90,0)
|
|
||||||
L = self.get_distance()
|
|
||||||
time.sleep(0.2)
|
|
||||||
|
|
||||||
self.pwm_S.setServoPwm(1,0,150,0)
|
|
||||||
M = self.get_distance()
|
|
||||||
time.sleep(0.2)
|
|
||||||
|
|
||||||
while True:
|
|
||||||
self.pwm_S.setServoPwm(1,0,30,0)
|
|
||||||
R = self.get_distance()
|
|
||||||
self.run_motor(L,M,R)
|
|
||||||
time.sleep(0.2)
|
|
||||||
|
|
||||||
self.pwm_S.setServoPwm(1,0,90,0)
|
|
||||||
L = self.get_distance()
|
|
||||||
self.run_motor(L,M,R)
|
|
||||||
time.sleep(0.2)
|
|
||||||
|
|
||||||
self.pwm_S.setServoPwm(1,0,150,0)
|
|
||||||
M = self.get_distance()
|
|
||||||
self.run_motor(L,M,R)
|
|
||||||
time.sleep(0.2)
|
|
||||||
self.run_motor(L,M,R)
|
|
||||||
|
|
||||||
ultrasonic=Ultrasonic()
|
|
||||||
# Main program logic follows:
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print ('Program is starting ... ')
|
|
||||||
try:
|
|
||||||
ultrasonic.run()
|
|
||||||
except KeyboardInterrupt: # When 'Ctrl+C' is pressed, the child program destroy() will be executed.
|
|
||||||
PWM.setMotorModel(0,0,0,0)
|
|
||||||
ultrasonic.pwm_S.setServoPwm(1,0,90,20)
|
|
||||||
|
|
@ -1,122 +0,0 @@
|
|||||||
import io
|
|
||||||
import os
|
|
||||||
import socket
|
|
||||||
import struct
|
|
||||||
import time
|
|
||||||
import picamera
|
|
||||||
import sys,getopt
|
|
||||||
from threading import Thread
|
|
||||||
from server_ui import Ui_server_ui
|
|
||||||
from PyQt4.QtCore import *
|
|
||||||
from Thread import *
|
|
||||||
from PyQt4 import QtGui, QtCore
|
|
||||||
from PyQt4.QtGui import *
|
|
||||||
from PyQt4.QtCore import pyqtSignature
|
|
||||||
from PyQt4.QtGui import (QApplication, QMainWindow, QGraphicsScene)
|
|
||||||
from server import video
|
|
||||||
|
|
||||||
class mywindow(QMainWindow,Ui_server_ui):
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
super(mywindow,self).__init__()
|
|
||||||
self.setupUi(self)
|
|
||||||
self.user_ui=True
|
|
||||||
self.m_DragPosition=self.pos()
|
|
||||||
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
|
|
||||||
self.setMouseTracking(True)
|
|
||||||
self.Button_Server.setText("On")
|
|
||||||
self.Button_Server.clicked.connect(self.on_pushButton)
|
|
||||||
self.pushButton_Close.clicked.connect(self.close)
|
|
||||||
self.pushButton_Min.clicked.connect(self.windowMinimumed)
|
|
||||||
self.myvideo=video()
|
|
||||||
self.SendVideo=Thread(target=self.myvideo.sendvideo)
|
|
||||||
self.ReadData=Thread(target=self.myvideo.readdata)
|
|
||||||
self.parseOpt()
|
|
||||||
def windowMinimumed(self):
|
|
||||||
self.showMinimized()
|
|
||||||
def mousePressEvent(self, event):
|
|
||||||
if event.button()==Qt.LeftButton:
|
|
||||||
self.m_drag=True
|
|
||||||
self.m_DragPosition=event.globalPos()-self.pos()
|
|
||||||
event.accept()
|
|
||||||
|
|
||||||
def mouseMoveEvent(self, QMouseEvent):
|
|
||||||
if QMouseEvent.buttons() and Qt.LeftButton:
|
|
||||||
self.move(QMouseEvent.globalPos()-self.m_DragPosition)
|
|
||||||
QMouseEvent.accept()
|
|
||||||
|
|
||||||
def mouseReleaseEvent(self, QMouseEvent):
|
|
||||||
self.m_drag=False
|
|
||||||
|
|
||||||
def parseOpt(self):
|
|
||||||
self.opts,self.args = getopt.getopt(sys.argv[1:],"tn")
|
|
||||||
for o,a in self.opts:
|
|
||||||
if o in ('-t'):
|
|
||||||
print "Open TCP"
|
|
||||||
self.myvideo.StartTcpServer()
|
|
||||||
self.ReadData=Thread(target=self.myvideo.readdata)
|
|
||||||
self.SendVideo=Thread(target=self.myvideo.sendvideo)
|
|
||||||
self.SendVideo.start()
|
|
||||||
self.ReadData.start()
|
|
||||||
|
|
||||||
self.label.setText("Server On")
|
|
||||||
self.Button_Server.setText("Off")
|
|
||||||
elif o in ('-n'):
|
|
||||||
self.user_ui=False
|
|
||||||
|
|
||||||
def close(self):
|
|
||||||
try:
|
|
||||||
stop_thread(self.SendVideo)
|
|
||||||
stop_thread(self.ReadData)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
self.myvideo.server_socket.shutdown(2)
|
|
||||||
self.myvideo.server_socket1.shutdown(2)
|
|
||||||
self.myvideo.StopTcpServer()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
print "Close Server"
|
|
||||||
QCoreApplication.instance().quit()
|
|
||||||
os._exit(0)
|
|
||||||
def on_pushButton(self):
|
|
||||||
if self.label.text()=="Server Off":
|
|
||||||
self.label.setText("Server On")
|
|
||||||
self.Button_Server.setText("Off")
|
|
||||||
self.myvideo.StartTcpServer()
|
|
||||||
self.SendVideo=Thread(target=self.myvideo.sendvideo)
|
|
||||||
self.ReadData=Thread(target=self.myvideo.readdata)
|
|
||||||
self.SendVideo.start()
|
|
||||||
self.ReadData.start()
|
|
||||||
print "Open TCP"
|
|
||||||
elif self.label.text()=='Server On':
|
|
||||||
self.label.setText("Server Off")
|
|
||||||
self.Button_Server.setText("On")
|
|
||||||
try:
|
|
||||||
time.sleep(0.1)
|
|
||||||
stop_thread(self.SendVideo)
|
|
||||||
stop_thread(self.ReadData)
|
|
||||||
except:
|
|
||||||
print 'stop_thread error'
|
|
||||||
|
|
||||||
self.myvideo.StopTcpServer()
|
|
||||||
print "Close TCP"
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
app = QApplication(sys.argv)
|
|
||||||
myshow=mywindow()
|
|
||||||
if myshow.user_ui==True:
|
|
||||||
myshow.show();
|
|
||||||
sys.exit(app.exec_())
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
while(1):
|
|
||||||
pass
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
myshow.close()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,307 +0,0 @@
|
|||||||
#!/usr/bin/python
|
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
import io
|
|
||||||
import socket
|
|
||||||
import struct
|
|
||||||
import time
|
|
||||||
import picamera
|
|
||||||
import gzip
|
|
||||||
import fcntl
|
|
||||||
import sys
|
|
||||||
import threading
|
|
||||||
from Motor import *
|
|
||||||
from servo import *
|
|
||||||
from Led import *
|
|
||||||
from Buzzer import *
|
|
||||||
from ADC import *
|
|
||||||
from Thread import *
|
|
||||||
from Light import *
|
|
||||||
from Ultrasonic import *
|
|
||||||
from Infrared_Obstacle_Avoidance import *
|
|
||||||
from threading import Timer
|
|
||||||
from threading import Thread
|
|
||||||
from Command import COMMAND as cmd
|
|
||||||
|
|
||||||
|
|
||||||
class video:
|
|
||||||
def __init__(self):
|
|
||||||
self.PWM=Motor()
|
|
||||||
self.servo=Servo()
|
|
||||||
self.led=Led()
|
|
||||||
self.ultrasonic=Ultrasonic()
|
|
||||||
self.buzzer=Buzzer()
|
|
||||||
self.adc=Adc()
|
|
||||||
self.light=Light()
|
|
||||||
self.infrared=Infrared_Obstacle_Avoidance()
|
|
||||||
self.Mode = 'one'
|
|
||||||
self.sonic=False
|
|
||||||
self.Light=False
|
|
||||||
self.Power=False
|
|
||||||
|
|
||||||
def get_interface_ip(self):
|
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
||||||
return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915, struct.pack('256s',
|
|
||||||
"wlan0"[:15]))[20:24])
|
|
||||||
def StartTcpServer(self):
|
|
||||||
HOST=str(self.get_interface_ip())
|
|
||||||
self.server_socket1 = socket.socket()
|
|
||||||
self.server_socket1.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEPORT,1)
|
|
||||||
self.server_socket1.bind((HOST, 5000))
|
|
||||||
self.server_socket1.listen(1)
|
|
||||||
|
|
||||||
self.server_socket = socket.socket()
|
|
||||||
self.server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEPORT,1)
|
|
||||||
self.server_socket.bind((HOST, 8000))
|
|
||||||
self.server_socket.listen(1)
|
|
||||||
print('Server address: '+HOST)
|
|
||||||
|
|
||||||
def StopTcpServer(self):
|
|
||||||
try:
|
|
||||||
self.connection.close()
|
|
||||||
self.connection1.close()
|
|
||||||
except Exception , e:
|
|
||||||
print "No client connection"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def Reset(self):
|
|
||||||
self.StopTcpServer()
|
|
||||||
self.StartTcpServer()
|
|
||||||
self.SendVideo=Thread(target=self.sendvideo)
|
|
||||||
self.ReadData=Thread(target=self.readdata)
|
|
||||||
self.SendVideo.start()
|
|
||||||
self.ReadData.start()
|
|
||||||
|
|
||||||
def SocketAccept(self):
|
|
||||||
self.connection1,self.client_address1 = self.server_socket1.accept()
|
|
||||||
self.connection,self.client_address = self.server_socket.accept()
|
|
||||||
self.connection=self.connection.makefile('rb')
|
|
||||||
def sendvideo(self):
|
|
||||||
try:
|
|
||||||
self.connection,self.client_address = self.server_socket.accept()
|
|
||||||
self.connection=self.connection.makefile('rb')
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
with picamera.PiCamera() as camera:
|
|
||||||
|
|
||||||
camera.resolution = (400,300) # pi camera resolution
|
|
||||||
|
|
||||||
camera.framerate = 15 # 15 frames/sec
|
|
||||||
|
|
||||||
time.sleep(2) # give 2 secs for camera to initilize
|
|
||||||
|
|
||||||
start = time.time()
|
|
||||||
|
|
||||||
stream = io.BytesIO()
|
|
||||||
|
|
||||||
# send jpeg format video stream
|
|
||||||
|
|
||||||
for foo in camera.capture_continuous(stream, 'jpeg', use_video_port = True):
|
|
||||||
try:
|
|
||||||
self.connection.write(struct.pack('<L', stream.tell()))
|
|
||||||
|
|
||||||
self.connection.flush()
|
|
||||||
|
|
||||||
stream.seek(0)
|
|
||||||
|
|
||||||
self.connection.write(stream.read())
|
|
||||||
if time.time() - start > 600:
|
|
||||||
|
|
||||||
break
|
|
||||||
|
|
||||||
stream.seek(0)
|
|
||||||
|
|
||||||
stream.truncate()
|
|
||||||
except:
|
|
||||||
break
|
|
||||||
self.connection.write(struct.pack('<L', 0))
|
|
||||||
except:
|
|
||||||
print "send video error"
|
|
||||||
|
|
||||||
def stopMode(self):
|
|
||||||
try:
|
|
||||||
stop_thread(self.infraredRun)
|
|
||||||
self.PWM.setMotorModel(0,0,0,0)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
stop_thread(self.lightRun)
|
|
||||||
self.PWM.setMotorModel(0,0,0,0)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
stop_thread(self.ultrasonicRun)
|
|
||||||
self.PWM.setMotorModel(0,0,0,0)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def readdata(self):
|
|
||||||
self.connection1,self.client_address1 = self.server_socket1.accept()
|
|
||||||
while True:
|
|
||||||
try:
|
|
||||||
AllData=self.connection1.recv(1024)
|
|
||||||
if AllData==None:
|
|
||||||
pass
|
|
||||||
elif AllData=='':
|
|
||||||
self.Reset()
|
|
||||||
break
|
|
||||||
elif AllData==cmd.CMD_CLOSE :
|
|
||||||
self.Reset()
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
data=AllData.split("#")
|
|
||||||
except:
|
|
||||||
continue
|
|
||||||
if data==None:
|
|
||||||
continue
|
|
||||||
elif (cmd.CMD_MODE[0] in data) or (cmd.CMD_MODE[1] in data) or (cmd.CMD_MODE[2] in data) or (cmd.CMD_MODE[3] in data):
|
|
||||||
if cmd.CMD_MODE[0] in data:
|
|
||||||
self.stopMode()
|
|
||||||
self.Mode='one'
|
|
||||||
elif cmd.CMD_MODE[1] in data:
|
|
||||||
self.stopMode()
|
|
||||||
self.Mode='two'
|
|
||||||
self.lightRun=Thread(target=self.light.run)
|
|
||||||
self.lightRun.start()
|
|
||||||
elif cmd.CMD_MODE[2] in data:
|
|
||||||
self.stopMode()
|
|
||||||
self.Mode='three'
|
|
||||||
self.ultrasonicRun=threading.Thread(target=self.ultrasonic.run)
|
|
||||||
self.ultrasonicRun.start()
|
|
||||||
|
|
||||||
elif cmd.CMD_MODE[3] in data:
|
|
||||||
self.stopMode()
|
|
||||||
self.Mode='four'
|
|
||||||
self.infraredRun=threading.Thread(target=self.infrared.run)
|
|
||||||
self.infraredRun.start()
|
|
||||||
|
|
||||||
elif (cmd.CMD_MOTOR in data) and self.Mode=='one':
|
|
||||||
try:
|
|
||||||
data1=int(data[1])
|
|
||||||
data2=int(data[2])
|
|
||||||
data3=int(data[3])
|
|
||||||
data4=int(data[4])
|
|
||||||
if data1==None or data2==None or data2==None or data3==None:
|
|
||||||
continue
|
|
||||||
self.PWM.setMotorModel(data1,data2,data3,data4)
|
|
||||||
self.connection1.send(data[0]+'#'+data[1])
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
elif cmd.CMD_SERVO in data:
|
|
||||||
try:
|
|
||||||
data1=int(data[1])
|
|
||||||
data2=int(data[2])
|
|
||||||
data3=int(data[3])
|
|
||||||
data4=int(data[4])
|
|
||||||
if data1==None or data2==None or data2==None or data3==None:
|
|
||||||
continue
|
|
||||||
self.servo.setServoPwm(data1,data2,data3,data4)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
elif cmd.CMD_LED in data:
|
|
||||||
try:
|
|
||||||
data1=int(data[1])
|
|
||||||
data2=int(data[2])
|
|
||||||
data3=int(data[3])
|
|
||||||
data4=int(data[4])
|
|
||||||
if data1==None or data2==None or data2==None or data3==None:
|
|
||||||
continue
|
|
||||||
self.led.ledIndex(data1,data2,data3,data4)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
elif cmd.CMD_LED_MOD in data:
|
|
||||||
try:
|
|
||||||
self.LedMoD=data[1]
|
|
||||||
if self.LedMoD== '0':
|
|
||||||
stop_thread(Led_Mode)
|
|
||||||
self.led.ledMode(self.LedMoD)
|
|
||||||
time.sleep(0.1)
|
|
||||||
self.led.ledMode(self.LedMoD)
|
|
||||||
else :
|
|
||||||
Led_Mode=Thread(target=self.led.ledMode,args=(data[1],))
|
|
||||||
Led_Mode.start()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
elif cmd.CMD_SONIC in data:
|
|
||||||
if data[1]==cmd.CMD_START:
|
|
||||||
self.sonic=True
|
|
||||||
self.ultrasonicTimer = threading.Timer(0.5,self.sendUltrasonic)
|
|
||||||
self.ultrasonicTimer.start()
|
|
||||||
else:
|
|
||||||
self.sonic=False
|
|
||||||
elif cmd.CMD_BUZZER in data:
|
|
||||||
try:
|
|
||||||
self.buzzer.run(data[1])
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
elif cmd.CMD_LIGHT in data:
|
|
||||||
if data[1]==cmd.CMD_START:
|
|
||||||
self.Light=True
|
|
||||||
self.lightTimer = threading.Timer(0.3,self.sendLight)
|
|
||||||
self.lightTimer.start()
|
|
||||||
else:
|
|
||||||
self.Light=False
|
|
||||||
elif cmd.CMD_POWER in data:
|
|
||||||
if data[1]==cmd.CMD_START:
|
|
||||||
self.Power=True
|
|
||||||
self.powerTimer = threading.Timer(0.7,self.sendPower)
|
|
||||||
self.powerTimer.start()
|
|
||||||
else:
|
|
||||||
self.Power=False
|
|
||||||
self.StopTcpServer()
|
|
||||||
|
|
||||||
|
|
||||||
def sendUltrasonic(self):
|
|
||||||
if self.sonic==True:
|
|
||||||
ADC_Ultrasonic=self.ultrasonic.get_distance()
|
|
||||||
if ADC_Ultrasonic==self.ultrasonic.get_distance():
|
|
||||||
try:
|
|
||||||
self.connection1.send(cmd.CMD_SONIC+"#"+str(ADC_Ultrasonic))
|
|
||||||
except:
|
|
||||||
self.sonic=False
|
|
||||||
self.ultrasonicTimer = threading.Timer(0.13,self.sendUltrasonic)
|
|
||||||
self.ultrasonicTimer.start()
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
def sendLight(self):
|
|
||||||
if self.Light==True:
|
|
||||||
ADC_Light1=self.adc.recvADC(0)
|
|
||||||
ADC_Light2=self.adc.recvADC(1)
|
|
||||||
if ADC_Light1==self.adc.recvADC(0) and ADC_Light2==self.adc.recvADC(1):
|
|
||||||
try:
|
|
||||||
self.connection1.send(cmd.CMD_LIGHT+'#'+str(ADC_Light1)+'#'+str(ADC_Light2))
|
|
||||||
except:
|
|
||||||
self.Light=False
|
|
||||||
self.lightTimer = threading.Timer(0.11,self.sendLight)
|
|
||||||
self.lightTimer.start()
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
def sendPower(self):
|
|
||||||
if self.Power==True:
|
|
||||||
ADC_Power=self.adc.recvADC(2)
|
|
||||||
if ADC_Power==self.adc.recvADC(2):
|
|
||||||
try:
|
|
||||||
self.connection1.send(cmd.CMD_POWER+'#'+str(ADC_Power))
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
self.Power==False
|
|
||||||
self.powerTimer = threading.Timer(10,self.sendPower)
|
|
||||||
self.powerTimer.start()
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
if __name__=='__main__':
|
|
||||||
ultrasonic=Ultrasonic()
|
|
||||||
Light=Light()
|
|
||||||
Light_run=Thread(target=Light.run)
|
|
||||||
Light_run.start()
|
|
||||||
time.sleep(10)
|
|
||||||
stop_thread(Light_run)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,127 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
# Form implementation generated from reading ui file 'C:/Users/Freenove/Desktop/test/qss/server_ui.ui'
|
|
||||||
#
|
|
||||||
# Created by: PyQt4 UI code generator 4.11.4
|
|
||||||
#
|
|
||||||
# WARNING! All changes made in this file will be lost!
|
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
|
|
||||||
try:
|
|
||||||
_fromUtf8 = QtCore.QString.fromUtf8
|
|
||||||
except AttributeError:
|
|
||||||
def _fromUtf8(s):
|
|
||||||
return s
|
|
||||||
|
|
||||||
try:
|
|
||||||
_encoding = QtGui.QApplication.UnicodeUTF8
|
|
||||||
def _translate(context, text, disambig):
|
|
||||||
return QtGui.QApplication.translate(context, text, disambig, _encoding)
|
|
||||||
except AttributeError:
|
|
||||||
def _translate(context, text, disambig):
|
|
||||||
return QtGui.QApplication.translate(context, text, disambig)
|
|
||||||
|
|
||||||
class Ui_server_ui(object):
|
|
||||||
def setupUi(self, server_ui):
|
|
||||||
server_ui.setObjectName(_fromUtf8("server_ui"))
|
|
||||||
server_ui.resize(400, 300)
|
|
||||||
server_ui.setStyleSheet(_fromUtf8("QWidget{\n"
|
|
||||||
"background:#484848;\n"
|
|
||||||
"}\n"
|
|
||||||
"QAbstractButton{\n"
|
|
||||||
"border-style:none;\n"
|
|
||||||
"border-radius:0px;\n"
|
|
||||||
"padding:5px;\n"
|
|
||||||
"color:#DCDCDC;\n"
|
|
||||||
"background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);\n"
|
|
||||||
"}\n"
|
|
||||||
"QAbstractButton:hover{\n"
|
|
||||||
"color:#FFFFFF;\n"
|
|
||||||
"background-color:#00BB9E;\n"
|
|
||||||
"}\n"
|
|
||||||
"QAbstractButton:pressed{\n"
|
|
||||||
"color:#DCDCDC;\n"
|
|
||||||
"border-style:solid;\n"
|
|
||||||
"border-width:0px 0px 0px 2px;\n"
|
|
||||||
"padding:4px 4px 4px 2px;\n"
|
|
||||||
"border-color:#00BB9E;\n"
|
|
||||||
"background-color:#444444;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLabel{\n"
|
|
||||||
"color:#DCDCDC;\n"
|
|
||||||
"border:1px solid #484848;\n"
|
|
||||||
"background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #484848,stop:1 #383838);\n"
|
|
||||||
"}\n"
|
|
||||||
"QLabel:focus{\n"
|
|
||||||
"border:1px solid #00BB9E;\n"
|
|
||||||
"background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #646464,stop:1 #525252);\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"padding:2px;\n"
|
|
||||||
"background:none;\n"
|
|
||||||
"selection-background-color:#484848;\n"
|
|
||||||
"selection-color:#DCDCDC;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit:focus,QLineEdit:hover{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"border-radius:3px;\n"
|
|
||||||
"padding:2px;\n"
|
|
||||||
"background:none;\n"
|
|
||||||
"selection-background-color:#484848;\n"
|
|
||||||
"selection-color:#DCDCDC;\n"
|
|
||||||
"}\n"
|
|
||||||
"\n"
|
|
||||||
"QLineEdit:focus,QLineEdit:hover{\n"
|
|
||||||
"border:1px solid #242424;\n"
|
|
||||||
"}\n"
|
|
||||||
"QLineEdit{\n"
|
|
||||||
"lineedit-password-character:9679;\n"
|
|
||||||
"}"))
|
|
||||||
self.label = QtGui.QLabel(server_ui)
|
|
||||||
self.label.setGeometry(QtCore.QRect(100, 150, 200, 42))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(26)
|
|
||||||
self.label.setFont(font)
|
|
||||||
self.label.setObjectName(_fromUtf8("label"))
|
|
||||||
self.Button_Server = QtGui.QPushButton(server_ui)
|
|
||||||
self.Button_Server.setGeometry(QtCore.QRect(150, 220, 100, 40))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(12)
|
|
||||||
self.Button_Server.setFont(font)
|
|
||||||
self.Button_Server.setObjectName(_fromUtf8("Button_Server"))
|
|
||||||
self.label_2 = QtGui.QLabel(server_ui)
|
|
||||||
self.label_2.setGeometry(QtCore.QRect(0, 0, 301, 41))
|
|
||||||
font = QtGui.QFont()
|
|
||||||
font.setFamily(_fromUtf8("3ds"))
|
|
||||||
font.setPointSize(28)
|
|
||||||
font.setBold(True)
|
|
||||||
font.setWeight(75)
|
|
||||||
self.label_2.setFont(font)
|
|
||||||
self.label_2.setStyleSheet(_fromUtf8(""))
|
|
||||||
self.label_2.setObjectName(_fromUtf8("label_2"))
|
|
||||||
self.pushButton_Close = QtGui.QPushButton(server_ui)
|
|
||||||
self.pushButton_Close.setGeometry(QtCore.QRect(350, 0, 50, 40))
|
|
||||||
self.pushButton_Close.setObjectName(_fromUtf8("pushButton_Close"))
|
|
||||||
self.pushButton_Min = QtGui.QPushButton(server_ui)
|
|
||||||
self.pushButton_Min.setGeometry(QtCore.QRect(300, 0, 50, 40))
|
|
||||||
self.pushButton_Min.setObjectName(_fromUtf8("pushButton_Min"))
|
|
||||||
|
|
||||||
self.retranslateUi(server_ui)
|
|
||||||
QtCore.QMetaObject.connectSlotsByName(server_ui)
|
|
||||||
|
|
||||||
def retranslateUi(self, server_ui):
|
|
||||||
server_ui.setWindowTitle(_translate("server_ui", "Form", None))
|
|
||||||
self.label.setText(_translate("server_ui", "Server Off", None))
|
|
||||||
self.Button_Server.setText(_translate("server_ui", "Off", None))
|
|
||||||
self.label_2.setText(_translate("server_ui", "Freenove", None))
|
|
||||||
self.pushButton_Close.setText(_translate("server_ui", "×", None))
|
|
||||||
self.pushButton_Min.setText(_translate("server_ui", "-", None))
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
|||||||
import time
|
|
||||||
from PCA9685 import PCA9685
|
|
||||||
class Servo:
|
|
||||||
def __init__(self):
|
|
||||||
self.PwmServo = PCA9685(0x40, debug=True)
|
|
||||||
self.PwmServo.setPWMFreq(50)
|
|
||||||
self.PwmServo.setServoPulse(8,1500)
|
|
||||||
self.PwmServo.setServoPulse(9,850)
|
|
||||||
def setServoPwm(self,channel1,channel2,angle1,angle2,error=10):
|
|
||||||
if channel1==1:
|
|
||||||
self.PwmServo.setServoPulse(8,2500-int((angle1+error)/0.09))
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
if channel2==1:
|
|
||||||
self.PwmServo.setServoPulse(9,500+int((angle2+error)/0.09))
|
|
||||||
else:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
pwm=Servo()
|
|
||||||
def loop():
|
|
||||||
for i in range(180):
|
|
||||||
pwm.setServoPwm(1,0,i,0)
|
|
||||||
time.sleep(0.01)
|
|
||||||
for i in range(180,0,-1):
|
|
||||||
pwm.setServoPwm(1,0,i,0)
|
|
||||||
time.sleep(0.01)
|
|
||||||
|
|
||||||
def destroy():
|
|
||||||
pwm.setServoPwm(1,1,90,20)
|
|
||||||
|
|
||||||
# Main program logic follows:
|
|
||||||
if __name__ == '__main__':
|
|
||||||
pwm.setServoPwm(1,1,90,20)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,173 +0,0 @@
|
|||||||
import time
|
|
||||||
try:
|
|
||||||
from Led import *
|
|
||||||
led=Led()
|
|
||||||
def test_Led():
|
|
||||||
try:
|
|
||||||
led.ledIndex(0,255,0,0) #Red
|
|
||||||
led.ledIndex(1,255,125,0) #orange
|
|
||||||
led.ledIndex(2,255,255,0) #yellow
|
|
||||||
led.ledIndex(3,0,255,0) #green
|
|
||||||
led.ledIndex(4,0,255,255) #cyan-blue
|
|
||||||
led.ledIndex(5,0,0,255) #blue
|
|
||||||
led.ledIndex(6,128,0,128) #purple
|
|
||||||
led.ledIndex(7,255,255,255) #white
|
|
||||||
print "The LED has been lit, the color is red orange yellow green cyan-blue blue white"
|
|
||||||
time.sleep(3) #wait 10s
|
|
||||||
led.colorWipe(led.strip, Color(0,0,0)) #turn off the light
|
|
||||||
print "\nEnd of program"
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
led.colorWipe(led.strip, Color(0,0,0)) #turn off the light
|
|
||||||
print "\nEnd of program"
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
from Motor import *
|
|
||||||
PWM=Motor()
|
|
||||||
def test_Motor():
|
|
||||||
try:
|
|
||||||
PWM.setMotorModel(1000,1000,1000,1000) #Forward
|
|
||||||
print "The car is moving forward"
|
|
||||||
time.sleep(1)
|
|
||||||
PWM.setMotorModel(-1000,-1000,-1000,-1000) #Back
|
|
||||||
print "The car is going backwards"
|
|
||||||
time.sleep(1)
|
|
||||||
PWM.setMotorModel(-1500,-1500,2000,2000) #Left
|
|
||||||
print "The car is turning left"
|
|
||||||
time.sleep(1)
|
|
||||||
PWM.setMotorModel(2000,2000,-1500,-1500) #Right
|
|
||||||
print "The car is turning right"
|
|
||||||
time.sleep(1)
|
|
||||||
PWM.setMotorModel(0,0,0,0) #Stop
|
|
||||||
print "\nEnd of program"
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
PWM.setMotorModel(0,0,0,0)
|
|
||||||
print "\nEnd of program"
|
|
||||||
|
|
||||||
|
|
||||||
from Ultrasonic import *
|
|
||||||
ultrasonic=Ultrasonic()
|
|
||||||
def test_Ultrasonic():
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
data=ultrasonic.get_distance() #Get the value
|
|
||||||
print ("Obstacle distance is "+str(data)+"CM")
|
|
||||||
time.sleep(1)
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print "\nEnd of program"
|
|
||||||
|
|
||||||
|
|
||||||
from Infrared_Obstacle_Avoidance import *
|
|
||||||
def test_Infrared():
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
if GPIO.input(IR01)!=True and GPIO.input(IR02)==True and GPIO.input(IR03)!=True:
|
|
||||||
print 'Middle'
|
|
||||||
elif GPIO.input(IR01)!=True and GPIO.input(IR02)!=True and GPIO.input(IR03)==True:
|
|
||||||
print 'Right'
|
|
||||||
elif GPIO.input(IR01)==True and GPIO.input(IR02)!=True and GPIO.input(IR03)!=True:
|
|
||||||
print 'Left'
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print "\nEnd of program"
|
|
||||||
|
|
||||||
|
|
||||||
from servo import *
|
|
||||||
pwm=Servo()
|
|
||||||
def test_Servo():
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
for i in range(50,110,1):
|
|
||||||
pwm.setServoPwm(1,0,i,0)
|
|
||||||
time.sleep(0.01)
|
|
||||||
for i in range(110,50,-1):
|
|
||||||
pwm.setServoPwm(1,0,i,0)
|
|
||||||
time.sleep(0.01)
|
|
||||||
for i in range(20,80,1):
|
|
||||||
pwm.setServoPwm(0,1,0,i)
|
|
||||||
time.sleep(0.01)
|
|
||||||
for i in range(80,20,-1):
|
|
||||||
pwm.setServoPwm(0,1,0,i)
|
|
||||||
time.sleep(0.01)
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
pwm.setServoPwm(1,1,90,20)
|
|
||||||
print "\nEnd of program"
|
|
||||||
|
|
||||||
|
|
||||||
from ADC import *
|
|
||||||
adc=Adc()
|
|
||||||
def test_Adc():
|
|
||||||
try:
|
|
||||||
while True:
|
|
||||||
Left_IDR=adc.recvADC(0)
|
|
||||||
print ("The photoresistor voltage on the left is "+str(Left_IDR)+"V")
|
|
||||||
Right_IDR=adc.recvADC(1)
|
|
||||||
print ("The photoresistor voltage on the right is "+str(Right_IDR)+"V")
|
|
||||||
Power=adc.recvADC(2)
|
|
||||||
print ("The battery voltage is "+str(Power*3)+"V")
|
|
||||||
time.sleep(1)
|
|
||||||
print '\n'
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print "\nEnd of program"
|
|
||||||
|
|
||||||
from Buzzer import *
|
|
||||||
buzzer=Buzzer()
|
|
||||||
def test_Buzzer():
|
|
||||||
try:
|
|
||||||
buzzer.run(cmd.CMD_START)
|
|
||||||
time.sleep(1)
|
|
||||||
print "1S"
|
|
||||||
time.sleep(1)
|
|
||||||
print "2S"
|
|
||||||
time.sleep(1)
|
|
||||||
print "3S"
|
|
||||||
buzzer.run(cmd.CMD_STOP)
|
|
||||||
print "\nEnd of program"
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
buzzer.run(cmd.CMD_STOP)
|
|
||||||
print "\nEnd of program"
|
|
||||||
|
|
||||||
import cv2
|
|
||||||
def test_Camera():
|
|
||||||
try:
|
|
||||||
print "\nOpen camera"
|
|
||||||
capturing_Flag = True
|
|
||||||
cap = cv2.VideoCapture(0)
|
|
||||||
while(capturing_Flag):
|
|
||||||
ret, frame = cap.read()
|
|
||||||
cv2.imshow("Capture", frame)
|
|
||||||
cv2.waitKey(5)
|
|
||||||
cv2.destroyAllWindows()
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
print "\nClose camera"
|
|
||||||
capturing_Flag = False
|
|
||||||
|
|
||||||
# Main program logic follows:
|
|
||||||
if __name__ == '__main__':
|
|
||||||
|
|
||||||
print ('Program is starting ... ')
|
|
||||||
import sys
|
|
||||||
if len(sys.argv)<2:
|
|
||||||
print "Parameter error: Please assign the device"
|
|
||||||
exit()
|
|
||||||
if sys.argv[1] == 'Led':
|
|
||||||
test_Led()
|
|
||||||
elif sys.argv[1] == 'Motor':
|
|
||||||
test_Motor()
|
|
||||||
elif sys.argv[1] == 'Ultrasonic':
|
|
||||||
test_Ultrasonic()
|
|
||||||
elif sys.argv[1] == 'Infrared':
|
|
||||||
test_Infrared()
|
|
||||||
elif sys.argv[1] == 'Servo':
|
|
||||||
test_Servo()
|
|
||||||
elif sys.argv[1] == 'ADC':
|
|
||||||
test_Adc()
|
|
||||||
elif sys.argv[1] == 'Buzzer':
|
|
||||||
test_Buzzer()
|
|
||||||
elif sys.argv[1] == 'Camera':
|
|
||||||
test_Camera()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Binary file not shown.
BIN
Tutorial.pdf
BIN
Tutorial.pdf
Binary file not shown.
Loading…
Reference in New Issue
Block a user