Найти - Пользователи
Полная версия: Парни нужна помощь. Это касается дипломного проекта....
Начало » Python для экспертов » Парни нужна помощь. Это касается дипломного проекта....
1
juram7
Суть такая. Учусь я на радиотехника. И вот задали нам что то слепить на базе Arduino, долго всей группой искали каждый себе. В итоге я нашел себе лодку. у меня каспер стоит он ругаеться на эту ссылочку, но там все пучком. Так вот вся эта байда управляется графическим интерфейсом питона “я нуб в этом поэтому извините за непонятные слова” вот. Кое как я разобрался как запустить код. Но запустивши код у меня появляеться ошибка

C:\Windows\system32>python
Python 2.7.9 (default, Dec 10 2014, 12:28:03) on win
32
Type “help”, “copyright”, “credits” or “license” for more information.
>>> from Tkinter import *
>>> from tkFileDialog import *
>>> from serial import *
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
ImportError: No module named serial
>>> from time import *
>>>
>>> ser = serial('COM2', 19200)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘serial’ is not defined
>>>
>>> root = Tk()
>>>

Вот такого плана. Но окошко гафического интерфейса появляется но без всяких кнопок.
а вот и сам код


from Tkinter import *
from tkFileDialog import *
from serial import *
from time import *

ser = serial('COM2', 19200)

root = Tk()
CanvasSize = 200
CanvasBorder = 10

Lat =
Lon =
blackLine = 0
redLine = 0
speedL = 0
speedR = 0

def readFile():
global Lat, Lon, LonMid, LatMid, dLL, myCanvas, blackLine, redLine
#myCanvas.delete(blackLine)
#myCanvas.delete(redLine)
filetypes =
file = askopenfile(title='Choose a file',parent=console,filetypes=filetypes,mode='r')
if file != None:
s = “”
for line in file.readlines():
s += line

ss = s.replace('\n','').split()
for LatLon_string in ss:
LatLon_array = LatLon_string.split(',')
Lat.append(float(LatLon_array))
Lon.append(float(LatLon_array))
Lat.reverse()
Lon.reverse()

for i in range (len(Lat)):
print(str(i)+“, ”+str(Lat)+“, ”+str(Lon))

LatMin = min(Lat)
LatMax = max(Lat)
LonMin = min(Lon)
LonMax = max(Lon)
dLat = LatMax - LatMin
dLon = LonMax - LonMin
LatMid = LatMin + dLat/2
LonMid = LonMin + dLon/2
dLL = max(dLat, dLon)

line_coords =
for i in range(len(Lat)):
line_coords.append(CanvasSize/2 + (Lon - LonMid)*(CanvasSize-CanvasBorder)/dLL)
line_coords.append(CanvasSize/2 - (Lat - LatMid)*(CanvasSize-CanvasBorder)/dLL)
blackLine = myCanvas.create_line(line_coords, fill='black')

file.close()

def kmlUpdate():
ser.flushInput()
ser.flushOutput()
ser.write('A')
boatTime = ser.readline().rstrip('\r\n')
boatLat = ser.readline().rstrip('\r\n')
boatLon = ser.readline().rstrip('\r\n')
boatCourse = ser.readline().rstrip('\r\n')
boatSpeed = ser.readline().rstrip('\r\n')
boatHead = ser.readline().rstrip('\r\n')
boatDepth = ser.readline().rstrip('\r\n')
boatTemp = ser.readline().rstrip('\r\n')

print “%8s%11s%12s%5s%6s%4s%6s%5s” % (boatTime, boatLat, boatLon, boatSpeed, boatCourse, boatHead, boatDepth, boatTemp)

kml = (
‘<?xml version=“1.0” encoding=“UTF-8”?>\n’
'<kml xmlns="http://www.opengis.net/kml/2.2“>\n'
‘ <Document>\n’
‘\n’
‘ <Camera>\n’
‘ <longitude>%s</longitude>\n’
‘ <latitude>%s</latitude>\n’
‘ <altitude>500</altitude>\n’
‘ <heading>0</heading>\n’
‘ <tilt>0</tilt>\n’
‘ <roll>0</roll>\n’
‘ <altitudeMode>relativeToGround</altitudeMode>\n’
‘ </Camera>\n’
‘\n’
‘ <Style id=”mystyle">\n’
‘ <IconStyle>\n’
‘ <color>ffffffff</color>\n’
‘ <scale>0.8</scale>\n’
‘ <heading>%s</heading>\n’
‘ <Icon><href>roboat_symbol.png</href></Icon>\n’
‘ </IconStyle>\n’
‘ <LabelStyle><color>ffffffff</color></LabelStyle>\n’
‘ </Style>\n’
‘\n’
‘ <Placemark>\n’
‘ <name>%s</name>\n’
‘ <styleUrl>#mystyle</styleUrl>\n’
‘ <Point>\n’
‘ <coordinates>%s,%s,0</coordinates>\n’
‘ </Point>\n’
‘ </Placemark>\n’
‘\n’
‘ </Document>\n’
‘</kml>\n’
) %(boatLon, boatLat, boatHead, boatDepth, boatLon, boatLat)

c = open('juram7.kml', ‘w’)
c.write(kml)
c.closed
root.after(500, kmlUpdate)

def sendPath():
global Lat, Lon, LonMid, LatMid, dLL, myCanvas, redLine
line_coords =
for i in range(len(Lat)):
ser.flushInput()
ser.flushOutput()
ser.write('B'+str(i)+'\r')
ser.write(str(Lat)+'\r')
ser.write(str(Lon)+'\r')
SerialI = ser.readline().rstrip('\r\n')
SerialLat = ser.readline().rstrip('\r\n')
SerialLon = ser.readline().rstrip('\r\n')
print(SerialI+“, ”+SerialLat+“, ”+SerialLon)
line_coords.append(CanvasSize/2 + (float(SerialLon) - LonMid)*(CanvasSize-CanvasBorder)/dLL)
line_coords.append(CanvasSize/2 - (float(SerialLat) - LatMid)*(CanvasSize-CanvasBorder)/dLL)
print(“”)
redLine = myCanvas.create_line(line_coords, fill='red', width=2)

def StartStop():
ser.flushInput()
ser.flushOutput()
if (StartStopButton == “Davai gazui”):
StartStopButton = “Trrr zaliyotnaja”
StartStopButton = “red”
ser.write('C\r')
else:
StartStopButton = “Start”
StartStopButton = “SystemButtonFace”
ser.write('D\r')

def keypress(event):
if event.keysym == ‘Left’:
ser.write('E-50\r')
if event.keysym == ‘Right’:
ser.write('E+50\r')
if event.keysym == ‘Up’:
ser.write('E0\r')
if event.keysym == ‘Down’:
ser.write('D\r')

if event.char == ‘f’: readFile()
if event.char == ‘p’: sendPath()
if event.char == ‘s’: StartStop()

#=============================================================================
console = Frame(root, width=200, height=300)
#console.grid_propagate(0)
#console.master.title(“Console”)
console.grid()

myCanvas = Canvas(console, bg=“white”, height=CanvasSize, width=CanvasSize)
myCanvas.grid(column=0, columnspan=4, row=0)

FileOpenButton = Button(console, text='File Open', command=readFile)
FileOpenButton.grid(column=0, row=1)

SendPathButton = Button(console, text='Send Path', command=sendPath)
SendPathButton.grid(column=1, row=1)

StartStopButton = Button(console, text='Start', command=StartStop)
StartStopButton.grid(column=2, row=1)

QuitButton = Button(console, text='Quit', command=root.destroy)
QuitButton.grid(column=3, row=1)

root.bind_all('<Key>', keypress)

root.after(500, kmlUpdate)
root.mainloop()

Можете помочь с данной проблемой?
py.user.next
Установи pyserial
https://pypi.python.org/pypi/pyserial/2.7
juram7
Спасибо большое. Все получилось, но есть одно но.

должно быть такого рода. то есть в окне путь и кнопки управления. у меня же просто окно без нечего. Можете подсказать что я могу неправильно делать? или в самом коде что то не то?
py.user.next
juram7
у меня же просто окно без нечего
Надо было закинуть код, присоединив его к сообщению, чтобы его можно было запустить.
Rodegast
А его точно из третьего, а не из второго питона запускать надо?
terabayt
Rodegast
А его точно из третьего, а не из второго питона запускать надо?
juram7
from Tkinter import *
его точно со второго
а где говорится о 3?
py.user.next
Ссылка на код.
http://users.libero.it/riccardo.rocca/07_ROBOAT_2011/code.zip

Под линем кнопки есть.
juram7
Так. Я подключаю одаптер под передатчик XBee S2 (который прошит уже) к компьютеру. Драйвера стоят уже. Дальше правлю код на питоне под свой ноутбук то есть ком порт и месторасоложения файла с расширением KML и запускаю его через командную строку (cmd/python) и пошло выполнение, дальше вылазит окошко и оно пустое. Вот в чем проблема. Хотя не должно быть пустым. Парни я понимаю что это все байда которая мне одному нужна. Но все же помогите чем можете (желательно таким языком что бы простой человек без знания данного языка программирования понял).
И да запускаю на питоне 2.7.9
py.user.next
Заменил только открытие порта на заглушку.
#ser = Serial('COM1', 9600, timeout=0.5)
import mock
ser = mock.MagicMock()
juram7
py.user.next
Заменил только открытие порта на заглушку.
так ясно. завтра линукс попробую поставить на ноут. запущу с нее, ибо с винды 7 нет такого
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB