[liborfa.so] Pure C API

Разработка стандартизированных модулей для домашнего робостроения.
Правила форума
Правила раздела OpenRobotics

[liborfa.so] Pure C API

Сообщение Vooon » 27 июл 2009, 22:53

Библиотека работает как под linux, так и под windows.

Лицензия: MIT
Репозиторий исходного кода: http://hg.vehq.ru/liborfa/
Архив последней версии: http://hg.vehq.ru/liborfa/archive/tip.zip

Для сборки требуется CMake версии 2.6 или старше (очень удобная система для кроссплатформенной разработки).

refman.pdf
Документация.
(1.62 МиБ) Скачиваний: 10


Проверка работы на висте 32.
Код: Выделить всё
PS C:\Users\Vovan> C:\Users\Vovan\lsorfa.exe
Usage: C:\Users\Vovan\lsorfa.exe /dev/ttyS0
PS C:\Users\Vovan> C:\Users\Vovan\lsorfa.exe COM40
open_and_configure: can't open device "COM40": ═х єфрхЄё  эрщЄш єърчрээ√щ Їрщы.

Can't open the port: COM40
PS C:\Users\Vovan> C:\Users\Vovan\lsorfa.exe \\.\COM40
Protocol: V1.0

   UID Version Start Count
------ ------- ----- -----
0x0000     1.0  0x00     1
0x0020     1.0  0x02     8
0x0001     1.0  0x0A     2
0x0060     1.0  0x0C     4
0x0031     1.1  0x10     2
0x0040     1.0  0x12     2
0xFF00     1.0  0x14     1
orfa_close() returned: 1
PS C:\Users\Vovan> notepad lsorfa-runlog.txt



Начал потихоньку писать чисто сишную библиотеку.
По сути это минимальная обертка над ком-портом.

Пока разбираюсь как бы лучше интерфейс написать, нужно ваше мнение.
Вот заготовка:
/* текст удален */
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: [liborfa.so] Pure C API

Сообщение Angel71 » 28 июл 2009, 02:49

:oops: всякие штуки для определения версии вроде не особо нужны.
и по мелочам:
эта обвёртка вообще нужна или просто хочется?
зачем i2c добавлена?
почему не с++?
для каких контроллеров и компиляторов или без привязки?
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: [liborfa.so] Pure C API

Сообщение Vooon » 28 июл 2009, 16:13

Да, версия пока не очень нужна, но в протоколе есть.
К тому же я собираюсь выкинуть REGIO (R/W) из протокола версии 1.1.
Эта библиотека будет поддерживать протокол 1.1 (это урезанный 1.0, более строгий, но совместимый).

> эта обвёртка вообще нужна или просто хочется?
Главная задача — парсинг входного потока, формирование запросов просто бонус.

> зачем i2c добавлена?
Это же основа протокола.

> почему не с++?
Потому что гладиолус.

> для каких контроллеров и компиляторов или без привязки?
Нет привязки к контроллеру, на нем просто должна быть ORFA собранная с libserialgate.a.
Это серверная часть, и в первую очередь пишу под линукс, потом портирую.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: [liborfa.so] Pure C API

Сообщение Angel71 » 29 июл 2009, 01:12

:crazy: фреймворк... понятно. :wink: исчезаю
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: [liborfa.so] Pure C API

Сообщение Vooon » 29 июл 2009, 05:24

При чем тут фреймворк? Обычная библиотека...

/* портировал парсер из pyor,
* захостил http://hg.vehq.ru/liborfa/
* (что-то админка реп поломалась, и странный трейс показывет)
*/
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: [liborfa.so] Pure C API

Сообщение Angel71 » 29 июл 2009, 05:44

http://ru.wikipedia.org/wiki/Фреймворк
в данном случае ORFA это фреймворк :) я уже заметил, в какой ветке этот топик, исчезааааааю
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: [liborfa.so] Pure C API

Сообщение Vooon » 29 июл 2009, 09:19

Я так и не увидел где это библиотека переросла во фреймворк.
Вот ORFA да, фреймворк: бери, пиши модули, а каркас уже готовый.
А это только библиотека связи, не больше. Хотя в нее и будет входить интроспектор (упрощенный, в питонячей либе я его излишне усложнил), но только потому, что без него обойтись нельзя — это часть ядра.
Ты же не назовешь библиотеку сокетов фреймворком? :)

Добавлено спустя 2 минуты 47 секунд:
Ой, опять я невнимательно читаю :)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: [liborfa.so] Pure C API

Сообщение Сергей » 30 июл 2009, 12:38

ай ай яй
срочно переделать
Код: Выделить всё
static inline void orfa_free_reply(orfareply *reply) {
   free(reply->data);
   free(reply);
}

вот в это
Код: Выделить всё
static inline void orfa_free_reply( orfareply **reply )
{
    if( !reply )
        return;

    if( !(*reply) )
        return;

    if( *reply->data )
        free( *reply->data );
   
    free( *reply );

    *reply = NULL;
}
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: [liborfa.so] Pure C API

Сообщение Виталий » 30 июл 2009, 12:54

Сергей, в твоем коде тоже ошибка. :D
Все новости о моих проектах http://savethebest.ru
Аватара пользователя
Виталий
 
Сообщения: 2114
Зарегистрирован: 08 окт 2004, 16:43
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий

Re: [liborfa.so] Pure C API

Сообщение Сергей » 30 июл 2009, 13:04

Поправил :)
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: [liborfa.so] Pure C API

Сообщение blindman » 30 июл 2009, 13:30

Сергей писал(а):reply = NULL;

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

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

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

Re: [liborfa.so] Pure C API

Сообщение boez » 30 июл 2009, 13:41

может подразумевалось *reply = NULL ? Тогда смысл есть
boez
 
Сообщения: 1981
Зарегистрирован: 27 авг 2008, 10:45
Откуда: Харьков
прог. языки: С/С++

Re: [liborfa.so] Pure C API

Сообщение Vooon » 30 июл 2009, 14:19

И к чему такие сложности?
Да и сейчас того кода уже нет.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: [liborfa.so] Pure C API

Сообщение Сергей » 30 июл 2009, 17:04

boez писал(а):может подразумевалось *reply = NULL ? Тогда смысл есть

да, описался просто. поправил.
Vooon, где ты тут сложности увидел?
Сергей
 
Сообщения: 3744
Зарегистрирован: 29 дек 2004, 23:15
Откуда: Санкт-Петербург
прог. языки: C, C++, C#, Asm
ФИО: Кашликов Сергей

Re: [liborfa.so] Pure C API

Сообщение Vooon » 30 июл 2009, 17:41

Посмотри последнюю версию по ссылке плиз.

Я просто не понимаю зачем передавать указатель на указатель, когда мне нужно освободить память занимаемую ответом.
Для этого же достаточно просто указателя.

И сейчас я убрал «магию» с указателем на данные. Т.к. максимальный размер ответа известен заменил *data на data[REPLY_MAX].
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

След.

Вернуться в Open Robotics

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

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