Компилятор C PIC16

Ничего из этого не сработает, если вы не помассируете полезную нагрузку.

        var arn = 'ENDPOINT_ARN';
        console.log("endpoint arn: " + arn);

        var payload = {
            default: message_object.message,
            GCM: {
                data: {
                    message: message_object.message
                }
            }
        };

        // The key to the whole thing is this
        //
        payload.GCM = JSON.stringify(payload.GCM);
        payload = JSON.stringify(payload);

        // Create the params structure
        //
        var params= { 
            TargetArn: arn,
            Message: payload,
            MessageStructure: 'json' // Super important too
        };

        sns.publish(params , function(error, data) {
            if (error) {
                console.log("ERROR: " + error.stack);
            }
            else {
                console.log("data: " + JSON.stringify(data));
            }

            context.done(null, data);
        });

Итак, получается, что вы должны указать структуру сообщения (будучи json). Я пытался опубликовать в конечной точке с консоли AWS, и она работала великолепно, пока я выбирал JSON. Использование RAW ничего не даст.

В моем сценарии выполнялись предыдущие посты:

var params = {
    TargetArn: arn,
    Message:'Success!!! ',
    Subject: 'TestSNS'
};

И хотя CloudWatch регистрировал успех, я ни разу не получил сообщение. Как только я добавил данные MessageStructure и правильно отформатировал полезную нагрузку, он заработал как шарм.

Параметр [default] бесполезен, но я оставил его там, чтобы показать, как может выглядеть структура.

Если вы не зафиксируете часть payload.GCM, SNS откажется и скажет, что ваше сообщение должно содержать элемент «GCM».

Единственное, что раздражает, это то, что вы должны знать, какова конечная точка. Я надеялся, что вам не нужно было форматировать сообщение на основе конечной точки, что в некоторой степени противоречит цели SNS.

5
задан Eng.Fouad 7 April 2012 в 05:05
поделиться

7 ответов

Вы правы в своей оценке, что PIC16 не совсем дружественен к C. Если вы хотите писать код на C, вам гораздо лучше делать это с помощью PIC18.
Microchip предоставляет отличную бесплатную среду разработки и компилятор под названием MPLAB для PIC18. Работать очень легко. Кроме того, семейство PIC18 обычно более мощное, но имеет несколько микросхем с не намного большей занимаемой площадью, чем у семейства PIC16.
Начать разработку нового продукта с PIC16 - не лучшая идея.

10
ответ дан 18 December 2019 в 06:36
поделиться

Я считаю, что SDCC теперь имеет некоторую поддержку PIC16.

4
ответ дан 18 December 2019 в 06:36
поделиться

HI-TECH имеет компилятор C для PIC16 и даже предлагает бесплатную версию .
Компилятор HI-TECH C

5
ответ дан 18 December 2019 в 06:36
поделиться

CCS компилируется для любого PIC от 12, 16, 18 и выше. Это не бесплатно, но он отлично справляется с ролью компилятора картинок. (Для меня лучше ASM)

1
ответ дан 18 December 2019 в 06:36
поделиться

Sourceboost BoostC - очень хороший компилятор C для серий PIC12 / PIC16 / PIC18. У них также есть компилятор BoostC ++ и BoostBasic. Поставляется с прекрасной IDE, имеет базовые возможности моделирования. Мне очень нравится синтаксис CCS и Microchip C18. Кажется чище и менее загроможденным. Однако это тоже не бесплатно, а лицензии довольно дешевые. Бесплатная / облегченная версия позволяет использовать 2 КБ кода. С этим вы уже можете многое сделать.

0
ответ дан 18 December 2019 в 06:36
поделиться

Компилятор BKND C действительно необычный и не очень хорошо поддерживает компоновщик. Но с другой стороны, большинство микросхем PIC16 достаточно малы, поэтому не составляет большого труда просто включить весь ваш исходный код в один файл C.

Я провел некоторое сравнение компиляторов BKND и HiTECH C, и BKND, похоже, генерирует значительно лучший код. По крайней мере, в моем приложении это было необходимо для удовлетворения требований к скорости / пространству моего приложения на таком маленьком MCU.

Многие особенности компилятора BKND (дополнительные типы данных и т. Д.) Очень полезны для настройки вашего кода. для запуска на небольшом MCU. Стандартный C, который вы бы написали на ARM или x86, в любом случае не подходит для крошечного процессора с парой сотен байт ОЗУ.

Для более крупных микросхем PIC (18, 24F и т. Д.) Компилятор C предоставил от Microchip отлично.

0
ответ дан 18 December 2019 в 06:36
поделиться

Я считаю, что Hi-Tech очень хороша. Я бы проголосовал за ответ Луи, если бы у меня была лучшая репутация. Я также согласен с тем, что PIC18F - очень хорошая альтернатива. Ищите деталь серии k, поскольку это более новые, лучшие и дешевые детали. У них также очень низкий ток потребления (если это важно для вас).

4
ответ дан 18 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: