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