Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update codes #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions sample/PC_GUI_Program/PC_GUI.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test.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
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
import os
from PIL import Image

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_Dialog(object):
def setupUi(self, Dialog):
im = Image.open('test.jpg') # Image Open & Resize
size = (500,500)
im.thumbnail(size)
im.save('test.jpg') # added by tom


Dialog.setObjectName(_fromUtf8("LTE Cat.M1 Picture Receiver"))
Dialog.resize(566, 464)
self.progressBar = QtGui.QProgressBar(Dialog)
self.progressBar.setGeometry(QtCore.QRect(60, 50, 301, 31))
self.progressBar.setProperty("value", 24)
self.progressBar.setObjectName(_fromUtf8("progressBar"))
self.pushButton = QtGui.QPushButton(Dialog)
self.pushButton.setEnabled(True)
self.pushButton.setGeometry(QtCore.QRect(400, 37, 141, 52))
self.pushButton.setObjectName(_fromUtf8("Server Open"))


self.label = QtGui.QLabel(Dialog) # Label Image
self.label.setGeometry(QtCore.QRect(70, 140, 431, 281)) #
self.label.setPixmap(QPixmap("test.jpg")) # aaded by tom

self.groupBox = QtGui.QGroupBox(Dialog)
self.groupBox.setGeometry(QtCore.QRect(30, 30, 361, 61))
self.groupBox.setObjectName(_fromUtf8("groupBox"))
self.groupBox_2 = QtGui.QGroupBox(Dialog)
self.groupBox_2.setGeometry(QtCore.QRect(30, 100, 511, 351))
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))



self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)

def retranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "LTE Cat.M1 Picture Receiver", None))
self.pushButton.setText(_translate("Dialog", "Server Open", None))
self.groupBox.setTitle(_translate("Dialog", "Status", None))
self.groupBox_2.setTitle(_translate("Dialog", "Picture Preview", None))

65 changes: 65 additions & 0 deletions sample/PC_GUI_Program/PC_GUI.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Dialog</class>
<widget class="QDialog" name="Dialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>585</width>
<height>428</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
<widget class="QMdiArea" name="mdiArea">
<property name="geometry">
<rect>
<x>40</x>
<y>200</y>
<width>200</width>
<height>160</height>
</rect>
</property>
</widget>
<widget class="QGraphicsView" name="graphicsView">
<property name="geometry">
<rect>
<x>290</x>
<y>190</y>
<width>256</width>
<height>192</height>
</rect>
</property>
</widget>
<widget class="QProgressBar" name="progressBar">
<property name="geometry">
<rect>
<x>60</x>
<y>110</y>
<width>441</width>
<height>23</height>
</rect>
</property>
<property name="value">
<number>24</number>
</property>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>60</x>
<y>60</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>
117 changes: 117 additions & 0 deletions sample/PC_GUI_Program/PC_GUI_Program_Server.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
# -*- coding: utf-8 -*- //

from PyQt4.QtGui import *
import sys
import os
from PyQt4 import QtCore, QtGui
import socketserver
from os.path import exists
import time, datetime
import threading
from PIL import Image
from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True
from PyQt4.QtCore import *

HOST = ''
PORT = 7777
progressBar_statusValue =0

# MyDiag.py 모듈 import
import PC_GUI

class MySignal(QtCore.QObject):
signal1 = QtCore.pyqtSignal(QtCore.QObject)
def run(self):
self.signal1.emit(self)

class MySignal2(QtCore.QObject):
signal2 = QtCore.pyqtSignal(QtCore.QObject)
def run(self):
self.signal2.emit(self)

mysignal = MySignal()
mysignal2 = MySignal2()

# MyDiag 모듈 안의 Ui_MyDialog 클래스로부터 파생
class XDialog(QDialog, PC_GUI.Ui_Dialog):
global progressBar_statusValue

def __init__(self):
QDialog.__init__(self)
# setupUi() 메서드는 화면에 다이얼로그 보여줌
self.setupUi(self)
self.pushButton.clicked.connect(self.run)
#self.pushButton_2.clicked.connect(self.imageRefresh)

mysignal.signal1.connect(self.imageRefresh)
mysignal2.signal2.connect(self.resetProgressbar)

def run(self):
runServer()
#while progressBar_statusValue < 100:
# self.progressBar.setValue(progressBar_statusValue)
#self.progressBar.setValue(100)

@pyqtSlot()
def imageRefresh(self):
#self.setupUi.label.setText("첫번째 버튼")
im = Image.open('download/test.jpg') # Image Open & Resize
size = (500,500)
im.thumbnail(size)
im.save('download/test.jpg') # added by tom
self.label.setPixmap(QPixmap("download/test.jpg"))

@pyqtSlot()
def resetProgressbar(self):
while progressBar_statusValue < 100:
self.progressBar.setValue(progressBar_statusValue)
self.progressBar.setValue(100)

class MyTcpHandler(socketserver.BaseRequestHandler):
def handle(self):
global progressBar_statusValue
dataTransferred = 0
print('[Connected to: %s]' %self.client_address[0])

fileInfo = self.request.recv(1024) # 클라이언트로 부터 파일이름을 전달받음
fileInfo = fileInfo.decode() # 파일이름 이진 바이트 스트림 데이터를 일반 문자열로 변환

fileInfo_parsing = fileInfo.split(',')
fileName = fileInfo_parsing[0]
fileSize = fileInfo_parsing[1]
print('[fileSize] : ', str(fileSize))

f = open('download/' + fileName, 'wb')
data = self.request.recv(4096)
cur_time = datetime.datetime.now()
mysignal2.run()
while data:
f.write(data)
dataTransferred += len(data)
progressBar_statusValue = ( dataTransferred/int(fileSize) ) * 100
data = self.request.recv(4096)
cur_time1 = datetime.datetime.now()

print('[recved time] : ', str(cur_time))
print('[recved1 time] : ', str(cur_time1))
print('[File]: %s , [Size]: %d Bytes' %(fileName, dataTransferred))
print('[Comeplete]')
print('[recving time] : ', str(cur_time1-cur_time))
mysignal.run()

def runServer():
print('[Server Start]')
print("[To terminate, Press 'Ctrl + C']")

try:
server = socketserver.TCPServer((HOST,PORT),MyTcpHandler)
#server.serve_forever()
threading.Thread(target=server.serve_forever).start()
except KeyboardInterrupt:
print('[Terminate]')

app = QApplication(sys.argv)
dlg = XDialog()
dlg.show()
app.exec_()
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added sample/PC_GUI_Program/test.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
66 changes: 66 additions & 0 deletions sample/Raspberry_Pi_Client/Raspberry Pi Client.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import socket
from os.path import exists
import time,datetime
import os

HOST = '64:ff9b::de62:adcb'
# HOST = '222.xxx.xxx.xxx'

PORT = 7777


def sendFileToServer(filename):
data_transferred = 0

sock = None
for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
af, socktype, proto, canonname, sa = res
try:
sock = socket.socket(af, socktype, proto)
except OSError as msg:
sock = None
continue
try:
sock.connect(sa)
except OSError as msg:
sock.close()
sock = None
continue
break
if sock is None:
print('couldnt open socket')
sys.exit(1)
with sock:
sock.sendall(filename.encode())
filename_parsing = filename.split(',')
filename = filename_parsing[0]
if not exists(filename):
print('file does not exist!')
return
print('[Start Sending]')
cur_time = datetime.datetime.now()
fUploadFile = open(filename,'rb')
sRead = fUploadFile.read(4096)
while sRead:
data_transferred+= len(sRead)
sock.send(sRead)
sRead = fUploadFile.read(4096)

cur_time1 = datetime.datetime.now()


print('[File]: %s , [Size]: %d Bytes' %(filename, data_transferred))
print('[send time] : ', str(cur_time))
print('[send1 time] : ', str(cur_time1))
print('[sending time] : ', str(cur_time1 - cur_time))
print('[Complete]')



os.system("raspistill -o test.jpg -t 500 -q 5")

filename = input('Input File Name to Transfer:')
fileSize = os.path.getsize("test.jpg")
print("File size is : ", str(fileSize))
fileInfo = filename + ","+str(fileSize)
sendFileToServer(fileInfo)
Binary file added sample/Raspberry_Pi_Client/test.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.