Технический форум по робототехнике.
Сергей » 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, чтобы в консоль выводилось сообщение что проблема при закрытии, иногда очень помогает.
Вставь проверку на валидность указателя во всех остальных функциях
=DeaD= » 02 авг 2009, 18:17
2Vooon: А какая задача этой библиотеки? Может кстати сразу её писать как обертку Qt-библиотеки для COM-порта?
Сергей » 02 авг 2009, 18:28
Qt это С++, а здесь чистый Си
=DeaD= » 02 авг 2009, 18:45
Я понимаю, поэтому и спрашиваю - какую задачу решаем, зачем чистый Си?
Vooon » 03 авг 2009, 00:14
С си можно легко сделать привязку к куче языков, а с крестами сложенее.
И я хочу попробовать розиксовый последовательный порт, без лишних прослоек.
=DeaD= » 03 авг 2009, 06:09
2Vooon: Ну если оно аналогично будет и там и там работать - тогда ок, но вроде даже в Qt-шной либе им пришлось для линуха и для винды делать отдельные субклассы и прописывать и там и там индивидуально всё.
Кстати, ты чисто синхронный вариант делать хочешь?
Vooon » 03 авг 2009, 14:20
Я не ставлю перед собой задачу чтобы оно _сразу_ работало под виндой, и поэтому сейчас пишу под POSIX системы.
Нет, отдельный поток чтения.
=DeaD= » 03 авг 2009, 14:24
Ну ладно, посмотрим чего получится, а пока для меня загадка, зачем это делается

Vooon » 03 авг 2009, 14:38
Учусь я, неужели не видно? Я под PC давно не писал на Си, вот и хочу вспомнить

Кстати парсер вполне готов и отлажен, ты можешь использовать его в своей либе для Qt.
=DeaD= » 03 авг 2009, 14:40
Ну если как учебная задача - тогда ясно

Сначала интерфейс восстановлю (завтра-послезавтра надеюсь) и тогда посмотрим чего куда прикрутить

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$
Vooon » 08 авг 2009, 01:14
Из qextserialport тиснул работу с виндовым ком-портом, если быть точнее то посмотрел как работать.
И добавил возможность сборки для WIN32, но не проверял т.к. у меня нет инструментария под виндой.
(я сейчас на даче)
Для сборки нужен CMake (очень понравился, удобнее сконса).
Vooon » 12 авг 2009, 20:05
Сегодня разобрался с работой на винде.
Есть особенность, для ком-портов старше 9 нужно добавлять
\\.\ ("\\\\.\\" на си)
Обновил первый пост, загрузил pdf созданный доксигеном.
Добавлено спустя 2 минуты 34 секунды:Да, на юид 0xff00 пока не обращайте внимание, я начал драйвер пушки писать...

Duhas » 12 авг 2009, 21:31
пушки?

=DeaD= » 12 авг 2009, 21:34
Следующим будет драйвер постановки дымовых заграждений и включения приборов ночного видения
