Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: bluetooth модуль bluegiga ble112
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Rf & Microwave Design
Страницы: 1, 2
призрак
Помогите советом: Сделал мост между BLED112 и BLE112 в режиме донгла но не могу из сконнектить, ругается
ble_rsp_gap_connect_direct result:20c ['Command requested cannot be executed because the Controller is in a state where it cannot process this command at this time.'] connection_handle: 1 (0x01)
Что не так??
katmani
Общение с BLE112 через RS232 с компом помощью BGLIB API наладил, приделал эти библиотеки к C++ Builder 6, с модулем общаюсь, тут все Ок.
Но сделать тоже самое на PIC18F46J50 не получается, затык в компиляторе под этот PIC18, а именно CCS C PIC Compiler 5.049. Компилятор не хочет понимать следующую строку:
typedef void (* ble_cmd_handler) (const void *);
Она используется в исходниках BGLIB API.
C++ Builder 6 эту строку воспринял нормально.

уже сделал простой пример, он все равно не компилится,
выдает такие ошибки:
"Expecting an identifier"
"Expecting a declaration"

вот и вся программа:
newmain22.c:
-----------------------------------------------------------------------------
#include <18F46J50.h>

typedef void (*ble_cmd_handler)(const void*);

void main(void) {

int a, b, c;
a=2;
b=2;
c=a+b;
}
-----------------------------------------------------------------------------

"C:\Alex\PROGRAMS\PICC5049\CCSCON.exe" out="build/default/production" newmain22.c +FH +DF +CC +Y=9 +EA +DF +LN +T +A +M +J +EA +Z -P #__18F46J50=1
C:\Alex\MPLAB_PRJ_PCC\test_struct\test_struct.X\newmain22.c:3:59: Error#28 Expecting an identifier
C:\Alex\MPLAB_PRJ_PCC\test_struct\test_struct.X\newmain22.c:3:64: Error#43 Expecting a declaration
C:\Alex\MPLAB_PRJ_PCC\test_struct\test_struct.X\newmain22.c:3:65: Error#43 Expecting a declaration
3 Errors, 0 Warnings.
Build Failed.

Может кто знает как этому CCS C PIC компилятору объяснить что это за строка:
typedef void (*ble_cmd_handler)(const void*);
может ее можно както записать по другому? я честно ее не пойму
katmani
Похоже это косяк CCS C PIC Compiler.
Установил MPLAB® XC Compiler, скомпилилось все нормально.

Блин так неохота перелазить с одного компилятора на другой, когда уже написанна куча кода под CCS C PIC Compiler.
Kabdim
Если компилятор не понимает столь простую конструкцию от него надо бежать как от огня, а не жалеть об этом.
ЗЫ:
typedef void (*ble_cmd_handler)(const void*);
typedef - определяем тип:
(*ble_cmd_handler) - с именем ble_cmd_handler являющийся указателем на:
(const void*) - функцию принимающую 1 аргумент, нетипизированный указатель на константную область памяти
void - и н возвращающую ничего.
katmani
помогли на сайте поддержки CCS
В общем оказывается, что по умалчанию const у них используется для хранения переменных в ROM.
А что бы был обычный си нужно было написать:

#device ANSI //switch const meaning

Так, сделал и все ошибки исчезли sm.gif

Вот дословный ответ c их сайта:
By default in CCS, a 'const', is a ROM type to which a pointer can't be constructed. In ANSI C, a const is a variable in RAM, that is protected (if the hardware has such protection), against being modified. If ANSI is selected CCS attempts to switch the definition (but personally it is safer just to get rid of const).

eka1939
Цитата(Peps @ Sep 28 2012, 06:47) *
Я разрабатываю приложение под BLE112. Спрашивайте, может чем помогу.



А такой функционал - completelykeyless.com/premium-bluetooth-keyless/ проблемно сделать?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.