roboforum.ru

Технический форум по робототехнике.
Текущее время: 18 апр 2025, 10:49

Часовой пояс: UTC + 4 часа


Правила форума


Правила раздела OpenRobotics



Начать новую тему Ответить на тему  [ Сообщений: 127 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9
Автор Сообщение
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 14 май 2009, 21:15 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
blindman писал(а):
Или я невнятно изъясняюсь, или кто-то по диагонали читает :) Я именно это и имею в виду - супер-драйвер возвращает только информацию, которую драйвера сообщили ядру во время своей регистрации.

Может быть и по диагонали :pardon: Но супер-драйвер всегда может понять что такое у него за информация? Или там есть просто неясная последовательность байт которая может быть чем угодно в зависимости от типа драйвера? ;)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 14 май 2009, 21:27 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
У него только та информация, которую драйвера ему сообщили, через строго определенные программные интерфейсы. Эта информация имеет смысл для любого драйвера. А раз интерфейсы определены - значит можно говорить и об определенной структуре информации. Супер-драйвер может дать только ту информацию, которая есть у ядра, и которой должен обладать клиент, чтобы достучаться до драйвера. Ядро знает только код (или название) драйвера, количество и номера регистров. Соответственно супер-драйвер может выдать только эту информацию. Все прочее - через сам драйвер.

Кстати, номера регистров передавать не надо - достаточно количества и базового номера.

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 14 май 2009, 21:31 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
blindman писал(а):
У него только та информация, которую драйвера ему сообщили, через строго определенные программные интерфейсы. Эта информация имеет смысл для любого драйвера. А раз интерфейсы определены - значит можно говорить и об определенной структуре информации. Супер-драйвер может дать только ту информацию, которая есть у ядра, и которой должен обладать клиент, чтобы достучаться до драйвера. Ядро знает только код (или название) драйвера, количество и номера регистров. Соответственно супер-драйвер может выдать только эту информацию. Все прочее - через сам драйвер.

Тогда значит я не так понял. А можем сейчас приземлить эту структуру информации?

Например, если так?
* 2 байта - идентификатор типа драйвера;
* 2 байта - номер версии и субверсии драйвера;
* 2 байта - номер начального регистра драйвера и количество регистров;

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 15 май 2009, 21:32 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Написал драйвер.

00 00 — получить количество драйверов — 1 байт
00 nn — получить информацию о драйвере nn — 6 байт

1. 2 байта — uid
2. 1 байт — major version
3. 1 байт — minor version
4. 1 байт — start register
5. 1 байт — register count

Добавлено спустя 9 минут 43 секунды:
А также написал код поддержки для PyOR.

Код:
import pyor
import serial
import sys

from pyor.testio import LogIO

def main():
    ser = serial.Serial(sys.argv[1])
    log = LogIO(ser)
    req = pyor.Request(log)
    intro = pyor.Introspection(req)

    req.localhost = 0x40
    intro.load_info()

    print intro.reg

if __name__ == '__main__':
        main()


Код:
vovan@vovan-laptop:/tmp$ python t.py /dev/rfcomm0
< L40\n                                         
> L40\r                                         
> \n                                             
< S400000                                       
< S4101                                         
< P\n                                           
> # > cmd_start(0x40, 0)\r                       
> \n                                             
> # > cmd_txc(0x00)\r                           
> \n                                             
> # > cmd_txc(0x00)\r                           
> \n                                             
> # > cmd_start(0x41, 1)\r                       
> \n                                             
> # > cmd_rxc(0x41, 0)\r                         
> \n                                             
> # > cmd_stop()\r                               
> \n                                             
> SWAASR04P\r                                   
> \n                                             
< S400001                                       
< S4106                                         
< P\n                                           
> # > cmd_start(0x40, 0)\r                       
> \n                                             
> # > cmd_txc(0x00)\r                           
> \n                                             
> # > cmd_txc(0x01)\r                           
> \n                                             
> # > cmd_start(0x41, 1)\r                       
> \n                                             
> # > cmd_rxc(0x41, 1)\r                         
> \n                                             
> # > cmd_rxc(0x01, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x01, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x60, 0)\r                         
> \n                                             
> # > cmd_stop()\r                               
> \n                                             
> SWAASR010001006004P\r                         
> \n                                             
< S400002                                       
< S4106                                         
< P\n                                           
> # > cmd_start(0x40, 0)\r                       
> \n                                             
> # > cmd_txc(0x00)\r                           
> \n                                             
> # > cmd_txc(0x02)\r                           
> \n                                             
> # > cmd_start(0x41, 1)\r                       
> \n                                             
> # > cmd_rxc(0x41, 1)\r                         
> \n                                             
> # > cmd_rxc(0x10, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x01, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x51, 0)\r                         
> \n                                             
> # > cmd_stop()\r                               
> \n                                             
> SWAASR100001005102P\r                         
> \n                                             
< S400003                                       
< S4106                                         
< P\n                                           
> # > cmd_start(0x40, 0)\r                       
> \n                                             
> # > cmd_txc(0x00)\r                           
> \n                                             
> # > cmd_txc(0x03)\r                           
> \n                                             
> # > cmd_start(0x41, 1)\r                       
> \n                                             
> # > cmd_rxc(0x41, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x10, 1)\r                         
> \n                                             
> # > cmd_rxc(0x01, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x44, 0)\r                         
> \n                                             
> # > cmd_stop()\r                               
> \n                                             
> SWAASR001001004408P\r                         
> \n                                             
< S400004                                       
< S4106                                         
< P\n                                           
> # > cmd_start(0x40, 0)\r                       
> \n                                             
> # > cmd_txc(0x00)\r                           
> \n                                             
> # > cmd_txc(0x04)\r                           
> \n                                             
> # > cmd_start(0x41, 1)\r                       
> \n                                             
> # > cmd_rxc(0x41, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n                                             
> # > cmd_rxc(0x00, 1)\r                         
> \n
> # > cmd_rxc(0x01, 1)\r
> \n
> # > cmd_rxc(0x00, 1)\r
> \n
> # > cmd_rxc(0x00, 0)\r
> \n
> # > cmd_stop()\r
> \n
> SWAASR000001000001P\r
> \n
{'DIR2': 99, 'DIR1': 98, 'PORTD': 71, 'PORTB': 69, 'PORTC': 70, 'PORTA': 68, 'DDRD': 75, 'DDRB': 73, 'DDRC': 74, 'DDRA': 72, 'PWM1': 96, 'PWM2': 97}
vovan@vovan-laptop:/tmp$

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 15 май 2009, 21:33 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Надо потом будет интерфейс переделать - чтобы 00 nn было эквивалентно по ответам серии 00 01, 01 01, 02 01, ..., (N-1) 01.

Добавлено спустя 25 секунд:
По возможности конечно :) если сильно не усложнит.

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 15 май 2009, 22:28 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 09 фев 2006, 15:36
Сообщения: 3339
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков
Эмм не понял, зачем 01 01, 02 01, 03 01 нужны?
И это потребует вмешаться в работу драйвера.

_________________
Linux user | Firefox user


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обсуждение протокола шлюз-контроллера
СообщениеДобавлено: 15 май 2009, 22:46 
Не в сети
Аватара пользователя

Зарегистрирован: 06 окт 2004, 18:01
Сообщения: 24218
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов
Забей пока :) потом если придумаю как красиво сделать - предложу :)

_________________
Проект [[Open Robotics]] - Универсальные модули для построения роботов


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 127 ]  На страницу Пред.  1 ... 5, 6, 7, 8, 9

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO