В Linux посмотреть передачу по RS232->USB

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение aftaev »

Nick писал(а):В общем, расскажите, как ведется передача информации по COM, есть ли какие-нибудь служебные команды?
Как опишем так и буде работать. Можно побитно, можно передавать хоть словами типо Spindle=24000 (что значит скорость шпинделя установить 24000)
Nick писал(а):Кстати, что ты хочешь передавать в пульт и что получать из него?
Война план покажет. Пока что нибудь лижбы работало :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение Nick »

aftaev писал(а):Как опишем так и буде работать.
Тогда предлагаю сделать, как писал выше - и работать будет быстрее...
Хотя, с другой стороны... было бы заманчиво прямо передавать название пина... но правда парсить потом замаемся, особенно на стороне платы. И все равно все пины надо заранее определять... :thinking: ... наверное лучше каждому пину свой id прицепить.
aftaev писал(а):Война план покажет. Пока что нибудь лижбы работало
Тогда пробуй то, что nkp написал! По результатам доложись! :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение nkp »

Как в питоне взять значение переменной из хал ?
Вот например наш модуль:

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

h.newpin("out", hal.HAL_BIT, hal.HAL_OUT)
h.newpin("a", hal.HAL_BIT, hal.HAL_OUT)
h.newpin("b", hal.HAL_BIT, hal.HAL_OUT)
h.newpin("c", hal.HAL_BIT, hal.HAL_OUT)

h.newpin("numberin", hal.HAL_S32, hal.HAL_IN)
h.newpin("numberout", hal.HAL_S32, hal.HAL_OUT)


h.ready()
h['a'] = False
h['b'] = False
h['c'] = False
h['out'] = False


try:
    while 1:
		time.sleep(1)
		ser = serial.Serial('/dev/ttyS0', 115200, timeout=1)	
		x = ser.read()
		if x == '2' :
			h['out'] = True
		else :
			h['out'] = False
		if x == '3' :
			h['a'] = True
			h['b'] = False
		if x == '4' :
			h['b'] = True
			h['a'] = False
		if x == '5' :
			h['c'] = True
		ser.close()
		h['numberout'] = h['numberin']
		n=h['numberout']
except KeyboardInterrupt:
    raise SystemExit
Переменная n. Import pult -вызывает ошибку, from pult import n - так тоже.
Пробовал выделить код в отдельную функцию и потом ее импортировать- ошибка

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

HAL: ERROR: duplicate component name 'pult'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pult.py", line 4, in <module>
    h = hal.component("pult")
hal.error: Invalid argument
PS вообще много вопросов возникает по питону-мож тему отдельную для него?
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение Nick »

Просто:
сначала объявляем пин h.newpin("numberin", hal.HAL_S32, hal.HAL_IN)

а потом:
a = h["numberin"]
Все :)
h = это ассоциативный массив (в терминах питона - dict - dictionary - словарь)
nkp писал(а):Переменная n. Import pult -вызывает ошибку, from pult import n - так тоже.
Вот это я чего-то не понял... зачем ты еще раз модуль импортируешь???
Или ты это все пишешь в отдельном скрипте?
nkp писал(а):PS вообще много вопросов возникает по питону-мож тему отдельную для него?
Как хошь, если это связанно с RS232, то можно и здесь...
Если Афтаев конечно не против. Хотя он сейчас добрый стал :hehehe:.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение nkp »

Nick писал(а): если это связанно с RS232, то можно и здесь...
Питон в емс везде :) -так что вопросы будут касаться разных аспектов.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение nkp »

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

Re: В Linux посмотреть передачу по RS232->USB

Сообщение Nick »

Скинь все скрипты. И примерно, что хочешь делать...
Саша7892ХН
Новичок
Сообщения: 29
Зарегистрирован: 22 мар 2012, 21:15
Репутация: 0
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение Саша7892ХН »

Как прописать чтобы из скрипта питон значение выводилось в pyvcp

не пинайте хочу со всем разобраться
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: В Linux посмотреть передачу по RS232->USB

Сообщение nkp »

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

Re: В Linux посмотреть передачу по RS232->USB

Сообщение Nick »

Дак и в pyvcp можно. Просто делаешь компонент на питоне как обычно, делаешь ему пин
h.newpin("float-out", hal.HAL_FLOAT, hal.HAL_OUT)
и потом
net float-out <= comp.float-out => pyvcp.number
Ответить

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