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