Графити бот и блок управления EggBot

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

А оригинальный рисунок какой? :)
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Во вложении есть, это рисунок что получается при прямой печати из расширения EggBot без преобразования Graffiti.
По одной команде отправлять очень утомительно получается...
При печате удобно когда начальная точка находится посередине оси X, а по оси Y близкую к верхней точке крепления шаговыков.
Вложения
1234.svg
(14.95 КБ) 652 скачивания
Последний раз редактировалось 2cme 21 июл 2012, 20:27, всего редактировалось 1 раз.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Скинь еще раз ссылку на оригинал расширения EggBot, попробую ему фишку прикрутить, читать из файла...
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Вот изменил два файла, должна появиться вкладка, из которой можно отправить файл в порт построчно.

ЗЫ они оказывается тоже вкладками пользуются для определения разных функций. Забавно, не с нас ли они это срисовали :).
Я с них точно не срисовывал :).
Вложения
eggbot.tar.gz
(14.57 КБ) 1079 скачиваний
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Nick, в закладке "Do file" набираю путь и имя файл, нажимаю кнопку "применить" и получаю ребут компа... :pssdoff:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

2cme писал(а):и получаю ребут компа...
Wow! Сильно :hehehe:
Я тут ничего такого не делал :hottabych:.
Странно, я всего лишь добавил:

Код: Выделить всё

		elif self.options.tab == '"doFile"':
			self.EggbotOpenSerial()
			self.doFile(self.options.doFileName)

Код: Выделить всё

	def doFile( self, fname ):
		f = open(fname,"r")
		for s in f.readlines() :
			self.doCommand( s )
		f.close()
Можно попробовать конечено еще все это в try завернуть... но чтобы комп перезапустился...
попробуй еще раз.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

После нажатия кнопки "Применить" появляется стандартное окошоко, а затем ребут, вероятно что то некоректно отрабатывается...
Пробывал 3 раза, результат один - ребут!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Ок, давай тогда просто попробуем это

Код: Выделить всё

	def doFile( self, fname ):
		f = open(fname,"r")
		for s in f.readlines() :
			self.doCommand( s )
		f.close()
заменить на

Код: Выделить всё

	def doFile( self, fname ):
		self.doCommand( 'SP,0\r' )
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Вот такая ошибка:

Код: Выделить всё

 File "eggbot.py", line 1400
    def doFile( self, fname ):
                             ^
IndentationError: unindent does not match any outer indentation level
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Поправь отступы, в питоне очень важно какой отступ с левого края. Можешь даже скопировать отступ с соседней функци.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Отступы исправил - работает. Даже поменял команду self.doCommand( 'SP,0\r' ) на self.doCommand( 'v\r' ) и отобразилась версия fw eeb. И эта команда тоже работает self.doCommand( 'TP\r' ).
Что дальше делать?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Скинь свой файл, подготовленный для eggbota... посмотрим может там что-то не так...
Может нужно \n из каждой строчки убрать.

о, кстати, попоробуй выполнить 10 каких-нибудь команд - может там какого-нибудь ответа надо дождаться... хотя вроде ответ ждет doCommand
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Nick писал(а):о, кстати, попоробуй выполнить 10 каких-нибудь команд - может там какого-нибудь ответа надо дождаться... хотя вроде ответ ждет doCommand
Да после выполнения каждой команды приходит ответ "OK". Выполнил продрят несколько команд

Код: Выделить всё

			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
			self.doCommand( 'TP\r' )
В железе по факту выполнилось только 5. Нужно сделать так чтобы перед тем как выполнять следующую команду, дожидаться ответа OK.
Вот файлы:
Вложения
output.zip
(93.2 КБ) 373 скачивания
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Вот лог файл обмена данными (красным команды которые формирует комп, синим ответ платы EEB) при печате файла 1234.svg
Вложения
log.zip
(1.7 КБ) 366 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

Вот, что еще придумал: попробуй заменить

Код: Выделить всё

def doFile( self, fname ):
		f = open(fname,"r")
		for s in f.readlines() :
			self.doCommand( s )
		f.close()
на

Код: Выделить всё

def doFile( self, fname ):
		f = open(fname,"r")
		for s in f.readlines() :
			pass
		f.close()
Т.е. просто удрать docommand и вместо него pass. Может там в другом месте ошибка.

По идее
doCommand
ждет ответа:
self.serialPort.write( cmd )
response = self.serialPort.readline()
хотя может он просто пытается читать, если сразу ничего нет, то выдает ошибку
inkex.errormsg( 'EBB Serial Timeout.' )

можно конечно самим этот docommand переписать...

Попробуй сначала с pass если все будет ок - перепишем.
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

С pass отработало нармально.
Может значение в переменную s занесится некоректно?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

А попробуй к команде self.doCommand( 'TP\r' ) добавить \n
т.е. сделать
self.doCommand( 'TP\r\n' )

а еще лучше сделать это в цикле, а еще лучше сделать несколько команд на перемещение в цикле. может и правда надо окончания команды дожидаться...
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Графити бот и блок управления EggBot

Сообщение 2cme »

Nick писал(а):self.doCommand( 'TP\r\n' )
работает!
А как можно посмотреть что присваивается переменной s в цикле?
Вложения
log_tr.zip
Лог выполнения команды TR
(761 байт) 357 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Графити бот и блок управления EggBot

Сообщение Nick »

inkex.errormsg( "s=*%s*"%s )
Как-то так.

Но все равно не понимаю, почему комп может перезагружаться...
Ответить

Вернуться в «LinuxCNC»