[liborfa.so] Pure C API

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

Re: [liborfa.so] Pure C API

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

Код: Выделить всё
void *pointer = malloc( ... );

free( pointer );

...

if( pointer ) // pointer может быть не равен NULL после очистки, либо нужно вручную pointer = NULL после free
{
...



Код: Выделить всё
void *pointer = malloc( ... );

my_free( &pointer );

...

if( pointer ) // pointer равен NULL, тк в методе my_free мы его почистили
{
...


Добавлено спустя 8 минут 52 секунды:
Код: Выделить всё
static bool parse(struct parser_vars *self, uint8_t c, struct orfareply *reply)

Вставь проверку на валидность указателей
Код: Выделить всё
struct orfadev *orfa_open(char *port, int baudrate)

так же проверка на указатель.
Сначала проверь возможность открытия open(port, O_RDWR|O_NOCTTY|O_NDELAY) а потом уже делай malloc(sizeof(struct orfadev))
Код: Выделить всё
orfa_close(struct orfadev *device)

Вставь проверку на валидность указателя
Оберни возвратное значение close, чтобы в консоль выводилось сообщение что проблема при закрытии, иногда очень помогает.

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

Re: [liborfa.so] Pure C API

Сообщение =DeaD= » 02 авг 2009, 18:17

2Vooon: А какая задача этой библиотеки? Может кстати сразу её писать как обертку Qt-библиотеки для COM-порта?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: [liborfa.so] Pure C API

Сообщение Сергей » 02 авг 2009, 18:28

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

Re: [liborfa.so] Pure C API

Сообщение =DeaD= » 02 авг 2009, 18:45

Я понимаю, поэтому и спрашиваю - какую задачу решаем, зачем чистый Си?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: [liborfa.so] Pure C API

Сообщение Vooon » 03 авг 2009, 00:14

С си можно легко сделать привязку к куче языков, а с крестами сложенее.
И я хочу попробовать розиксовый последовательный порт, без лишних прослоек.
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

Сообщение =DeaD= » 03 авг 2009, 06:09

2Vooon: Ну если оно аналогично будет и там и там работать - тогда ок, но вроде даже в Qt-шной либе им пришлось для линуха и для винды делать отдельные субклассы и прописывать и там и там индивидуально всё.

Кстати, ты чисто синхронный вариант делать хочешь?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: [liborfa.so] Pure C API

Сообщение Vooon » 03 авг 2009, 14:20

Я не ставлю перед собой задачу чтобы оно _сразу_ работало под виндой, и поэтому сейчас пишу под POSIX системы.

Нет, отдельный поток чтения.
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

Сообщение =DeaD= » 03 авг 2009, 14:24

Ну ладно, посмотрим чего получится, а пока для меня загадка, зачем это делается :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: [liborfa.so] Pure C API

Сообщение Vooon » 03 авг 2009, 14:38

Учусь я, неужели не видно? Я под PC давно не писал на Си, вот и хочу вспомнить :)
Кстати парсер вполне готов и отлажен, ты можешь использовать его в своей либе для Qt.
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

Сообщение =DeaD= » 03 авг 2009, 14:40

Ну если как учебная задача - тогда ясно :)

Сначала интерфейс восстановлю (завтра-послезавтра надеюсь) и тогда посмотрим чего куда прикрутить :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: [liborfa.so] Pure C API

Сообщение Vooon » 04 авг 2009, 17:02

Отказался от отдельного потока чтения, скинул на на буфер ОС.
Уже работает, но пока только под линуксом.

В комплекте идет програмка lsorfa,
аналогична orintro.py, но менее информативна, т.к. не использует бд драйверов.

Код: Выделить всё
vovan@vovan-laptop:~/src/liborfa$ ./lsorfa /dev/rfcomm1
Drivers:
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.0     0x10    2
0x0040  1.0     0x12    2
vovan@vovan-laptop:~/src/liborfa$


Для сборки нужен CMake.
Правда правила установки я еще не описывал...
cmake .
make


Код: Выделить всё
vovan@vovan-laptop:~/src/liborfa$ ls
bin/  CMakeLists.txt  include/  LICENSE  Makefile  README  src/  tests/
vovan@vovan-laptop:~/src/liborfa$ cmake .
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/vovan/src/liborfa
vovan@vovan-laptop:~/src/liborfa$ make
Scanning dependencies of target orfa
[ 33%] Building C object CMakeFiles/orfa.dir/src/orfa.c.o
/home/vovan/src/liborfa/src/orfa.c: In function ‘parse’:
/home/vovan/src/liborfa/src/orfa.c:137: warning: implicit declaration of function ‘toupper’
[ 66%] Building C object CMakeFiles/orfa.dir/src/orfaintro.c.o
Linking C shared library liborfa.so
[ 66%] Built target orfa
Scanning dependencies of target lsorfa
[100%] Building C object CMakeFiles/lsorfa.dir/bin/lsorfa.c.o
/home/vovan/src/liborfa/bin/lsorfa.c:59:10: warning: unknown escape sequence '\s'
Linking C executable lsorfa
[100%] Built target lsorfa
vovan@vovan-laptop:~/src/liborfa$ ls
bin/  CMakeCache.txt  CMakeFiles/  cmake_install.cmake  CMakeLists.txt  include/  liborfa.so*  LICENSE  lsorfa*  Makefile  README  src/  tests/
vovan@vovan-laptop:~/src/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

Сообщение Vooon » 08 авг 2009, 01:14

Из qextserialport тиснул работу с виндовым ком-портом, если быть точнее то посмотрел как работать.
И добавил возможность сборки для WIN32, но не проверял т.к. у меня нет инструментария под виндой.
(я сейчас на даче)

Для сборки нужен CMake (очень понравился, удобнее сконса).
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

Сообщение Vooon » 12 авг 2009, 20:05

Сегодня разобрался с работой на винде.
Есть особенность, для ком-портов старше 9 нужно добавлять \\.\ ("\\\\.\\" на си)

Обновил первый пост, загрузил pdf созданный доксигеном.

Добавлено спустя 2 минуты 34 секунды:
Да, на юид 0xff00 пока не обращайте внимание, я начал драйвер пушки писать... :)
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

Сообщение Duhas » 12 авг 2009, 21:31

пушки? :shock:
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

Re: [liborfa.so] Pure C API

Сообщение =DeaD= » 12 авг 2009, 21:34

Следующим будет драйвер постановки дымовых заграждений и включения приборов ночного видения :ROFL:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Пред.След.

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

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

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