Ничего из этого не сработает, если вы не помассируете полезную нагрузку.
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.
Вы правы в своей оценке, что PIC16 не совсем дружественен к C. Если вы хотите писать код на C, вам гораздо лучше делать это с помощью PIC18.
Microchip предоставляет отличную бесплатную среду разработки и компилятор под названием MPLAB для PIC18. Работать очень легко. Кроме того, семейство PIC18 обычно более мощное, но имеет несколько микросхем с не намного большей занимаемой площадью, чем у семейства PIC16.
Начать разработку нового продукта с PIC16 - не лучшая идея.
Я считаю, что SDCC теперь имеет некоторую поддержку PIC16.
HI-TECH имеет компилятор C для PIC16 и даже предлагает бесплатную версию .
Компилятор HI-TECH C
CCS компилируется для любого PIC от 12, 16, 18 и выше. Это не бесплатно, но он отлично справляется с ролью компилятора картинок. (Для меня лучше ASM)
Sourceboost BoostC - очень хороший компилятор C для серий PIC12 / PIC16 / PIC18. У них также есть компилятор BoostC ++ и BoostBasic. Поставляется с прекрасной IDE, имеет базовые возможности моделирования. Мне очень нравится синтаксис CCS и Microchip C18. Кажется чище и менее загроможденным. Однако это тоже не бесплатно, а лицензии довольно дешевые. Бесплатная / облегченная версия позволяет использовать 2 КБ кода. С этим вы уже можете многое сделать.
Компилятор BKND C действительно необычный и не очень хорошо поддерживает компоновщик. Но с другой стороны, большинство микросхем PIC16 достаточно малы, поэтому не составляет большого труда просто включить весь ваш исходный код в один файл C.
Я провел некоторое сравнение компиляторов BKND и HiTECH C, и BKND, похоже, генерирует значительно лучший код. По крайней мере, в моем приложении это было необходимо для удовлетворения требований к скорости / пространству моего приложения на таком маленьком MCU.
Многие особенности компилятора BKND (дополнительные типы данных и т. Д.) Очень полезны для настройки вашего кода. для запуска на небольшом MCU. Стандартный C, который вы бы написали на ARM или x86, в любом случае не подходит для крошечного процессора с парой сотен байт ОЗУ.
Для более крупных микросхем PIC (18, 24F и т. Д.) Компилятор C предоставил от Microchip отлично.
Я считаю, что Hi-Tech очень хороша. Я бы проголосовал за ответ Луи, если бы у меня была лучшая репутация. Я также согласен с тем, что PIC18F - очень хорошая альтернатива. Ищите деталь серии k, поскольку это более новые, лучшие и дешевые детали. У них также очень низкий ток потребления (если это важно для вас).