Pebble tid titta Smartstrap handledning (3 / 4 steg)

Steg 3: Programmering pebble tid




  1. Skapa en pebble konto på cloudpebble

  2. Se till att PC och Smartphone i samma lokala nätverk och slå sedan på utvecklaren anslutning på din smartphone Pebble tid app Inställningar--> Developer Connection
  3. Skapa ett nytt tomt projekt, lägga till en ny källa fil vid namn "main.c" sedan lägga följande kod till det

#include < pebble.h >

#define TIMEOUT_MS 1000
#define MAX_READ_SIZE 100
statiska fönster * s_main_window;
statiska TextLayer * s_status_layer;
statiska TextLayer * s_attr_text_layer;
statiska char s_text_buffer1 [20];
statiska SmartstrapAttribute * s_raw_attribute;
statiska SmartstrapAttribute * s_attr_attribute;
statisk void prv_update_text(void) {
om (smartstrap_service_is_available(0x1001)) {
text_layer_set_text (s_status_layer, "ansluten!");
} annat {
text_layer_set_text (s_status_layer, "Ansluta...");
}
}
statisk void prv_did_read (SmartstrapAttribute * attr, SmartstrapResult resultat,
CONST uint8_t * data, size_t längd) {
char str [50] = "";
om (attr == s_attr_attribute) {
APP_LOG (APP_LOG_LEVEL_DEBUG, "did_read (s_attr_attribute, %d, %d)", resultat, längd);
om (resultatet == SmartstrapResultOk) {
memcpy (str, data, längd);
Str [längd] = '\0';
snprintf (s_text_buffer1, 50, "%s", str);
text_layer_set_text (s_attr_text_layer, s_text_buffer1);
APP_LOG (APP_LOG_LEVEL_DEBUG, "meddelande: %s)", str);
}
} annat {
APP_LOG (APP_LOG_LEVEL_ERROR, "did_read (< %p >, %d)", attr, resultatet);
}
}
statisk void prv_did_write (SmartstrapAttribute * attr, SmartstrapResult resultat) {
om (attr == s_attr_attribute) {
APP_LOG (APP_LOG_LEVEL_DEBUG, "did_write (s_attr_attribute, %d)", resultatet);
} annat {
APP_LOG (APP_LOG_LEVEL_ERROR, "did_write (< %p >, %d)", attr, resultatet);
}
}
statisk void prv_write_button_action (uint8_t button_value, uint8_t click_type) {
SmartstrapResult resultat.
om (! smartstrap_service_is_available(smartstrap_attribute_get_service_id(s_attr_attribute))) {
APP_LOG (APP_LOG_LEVEL_DEBUG, "s_attr_attribute är inte tillgänglig");
hemkomst.
}
få skrivbufferten
uint8_t * buffert = NULL;
size_t längd = 0;
resultat = smartstrap_attribute_begin_write (s_attr_attribute, & buffert, och längd);
om (resultatet! = SmartstrapResultOk) {
APP_LOG (APP_LOG_LEVEL_ERROR, "Skriva av s_attr_attribute misslyckades med %d", resultatet);
hemkomst.
}
skriva data i bufferten
buffert [0] = button_value;
buffert [1] = click_type;
Skicka det
resultat = smartstrap_attribute_end_write (s_attr_attribute, 2, falsk);
om (resultatet! = SmartstrapResultOk) {
APP_LOG (APP_LOG_LEVEL_ERROR, "Skriva av s_attr_attribute misslyckades med %d", resultatet);
}
}
statisk void prv_availablility_status_changed (SmartstrapServiceId service_id, bool is_available) {
APP_LOG (APP_LOG_LEVEL_DEBUG, "tillgänglighet för 0 x %x är %d", service_id, is_available);
prv_update_text();
}
statisk void prv_notified(SmartstrapAttribute *attr) {
SmartstrapResult resultat.
om (attr == s_attr_attribute) {
APP_LOG (APP_LOG_LEVEL_DEBUG, "notified(s_attr_attribute)");
resultat = smartstrap_attribute_read(s_attr_attribute);
om (resultatet! = SmartstrapResultOk) {
APP_LOG (APP_LOG_LEVEL_ERROR, "fel läsning attribut (< %p >, %d)", attr, resultatet);
}
} annat {
APP_LOG (APP_LOG_LEVEL_ERROR, "anmälda (< %p >)", attr);
}
}
statisk void up_click_handler (ClickRecognizerRef recognizer, void * sammanhang) {
prv_write_button_action(0x02, 0x01);
}
statisk void select_click_handler (ClickRecognizerRef recognizer, void * sammanhang) {
prv_write_button_action(0x03, 0x01);
}
statisk void down_click_handler (ClickRecognizerRef recognizer, void * sammanhang) {
prv_write_button_action(0x04, 0x01);
}
statisk void click_config_provider(void *context) {
window_single_click_subscribe (BUTTON_ID_UP, up_click_handler);
window_single_click_subscribe (BUTTON_ID_SELECT, select_click_handler);
window_single_click_subscribe (BUTTON_ID_DOWN, down_click_handler);
}
statisk void prv_main_window_load(Window *window) {
s_status_layer = text_layer_create (GRect (0, 15, 144, 40));
text_layer_set_font (s_status_layer, fonts_get_system_font(FONT_KEY_GOTHIC_28));
prv_update_text();
text_layer_set_text_color (s_status_layer, GColorBlack);
text_layer_set_background_color (s_status_layer, GColorClear);
text_layer_set_text_alignment (s_status_layer, GTextAlignmentCenter);
text_layer_set_overflow_mode (s_status_layer, GTextOverflowModeWordWrap);
layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_status_layer));
s_attr_text_layer = text_layer_create (GRect (0, 60, 144, 40));
text_layer_set_font (s_attr_text_layer, fonts_get_system_font(FONT_KEY_GOTHIC_28));
text_layer_set_text (s_attr_text_layer, "-");
text_layer_set_text_color (s_attr_text_layer, GColorBlack);
text_layer_set_background_color (s_attr_text_layer, GColorClear);
text_layer_set_text_alignment (s_attr_text_layer, GTextAlignmentCenter);
text_layer_set_overflow_mode (s_attr_text_layer, GTextOverflowModeWordWrap);
layer_add_child(window_get_root_layer(window), text_layer_get_layer(s_attr_text_layer));
}
statisk void prv_main_window_unload(Window *window) {
text_layer_destroy(s_status_layer);
}
statisk void prv_init(void) {
s_main_window = window_create();
window_set_click_config_provider (s_main_window, click_config_provider);
window_set_window_handlers (s_main_window, (WindowHandlers) {
.load = prv_main_window_load,
.unload = prv_main_window_unload
});
window_stack_push (s_main_window, true);
SmartstrapHandlers hanterare = (SmartstrapHandlers) {
.availability_did_change = prv_availablility_status_changed,
.did_write = prv_did_write,
.did_read = prv_did_read,
.Notified = prv_notified
};
smartstrap_subscribe(handlers);
smartstrap_set_timeout(50);
s_raw_attribute = smartstrap_attribute_create (0, 0, 2000);
s_attr_attribute = smartstrap_attribute_create (0x1001, 0x1001, 20);
}
statisk void prv_deinit(void) {
window_destroy(s_main_window);
smartstrap_unsubscribe();
smartstrap_attribute_destroy(s_raw_attribute);
smartstrap_attribute_destroy(s_attr_attribute);
}
int main(void) {
prv_init();
APP_LOG (APP_LOG_LEVEL_DEBUG, "START APP");
om (s_attr_attribute & & s_raw_attribute) {
app_event_loop();
}
APP_LOG (APP_LOG_LEVEL_DEBUG, "SLUT APP");
prv_deinit();
}

4. i fliken avmarkera bygga Aplite eftersom vi bygger för att köras på Pebble tid klockor

5. sammanställning fliken Välj telefon istället för Emulator att programmera våra riktig klocka

6. kör koden genom att klicka på play-knappen

Se Steg
Relaterade Ämnen

Pebble tid laddningskabel från Pebble ursprungliga

Pebble tid har en annan laddningskabel än den ursprungliga Pebble Smartwatch, men det är möjligt att ändra den ursprungliga kabeln till arbeta med Pebble tiden.Ta bort plast barriären mellan stiften.(Jag tog bort hela barriären, men en bättre idé sku...

DIY Pebble tid (stål) Dock med kartong

Vissa scheman. Jag är inte särskilt bra på detta men om du är intresserad av mätningarna jag brukade bygga en Pebble tid Dock med hjälp av kartong. Kan enkelt anpassa detta för trä eller andra material också:).Steg 1: Front Steg 2: Front (färdig)Steg...

Gör din egen Pebble tid laddare

Fick sten, men glömde att köpa en extra laddningskabel för din bil?Din ursprungliga laddningskabeln dog på dig och du behöver en annan kabel omedelbart?Följ dessa enkla steg för att göra en Pebble tid laddare med material som finns runt huset. Du beh...

Hacking någon bil med Pebble klocka och 1Sheeld

Tanken bakom projektet var att kunna styra någon bil utan att vara inne i bilen, eller fysiskt trycker instrumentpanel knappar/switchar.Använda en bärbar (Pebble watch) och 1Sheeld för Android (artighet av 1Sheeld), jag planerar att göra hela process...

Handledning: Pärlstav armband "Game of Thrones"

Hej! Jag vill dela med mig av mönstret för "Game of Thrones" pärlstav armband som jag ritade. Om det finns är ett speciellt verktyg (juvel vävstol) att väva ett armband inte svårt. Systemet kan användas för andra pärla tekniker. Du kan också tit...

Handledning: Vintage pärlstav armband

Hej! Jag vill dela med dig mönstret av vintage pärlstav armband som jag ritade. Det är mycket enkel och vacker. Du kan också titta på en gratis video tutorial på min youtube-kanal.Steg 1: Det material som behövs: Det material som behövs:-8mm pärlor -...

Handledning: rullad krage halsband

Hej! Jag vill dela med mig av mönstret för rullad krage halsband som jag ritade. Det kan vara gjorda av material, pärlor eller Swarovski kristaller... Du kan också titta på en gratis video tutorial på min youtube-kanal.Steg 1: Det material som behövs...

Handledning: pärlstav snöflinga örhängen

Hej! Jag vill dela med mig av mönstret för pärlstav snöflingor örhängen som jag ritade. Du kan använda den som ett hänge, örhängen eller en dekoration på en julgran. Du kan också titta på en gratis video tutorial på min youtube-kanal.Steg 1: Det mate...

Kort handledning: Fransk samling Banner ganska kort

Jag gör en egentligen ganska kort med hjälp av en vacker rad papper i Kortmakeri demonstrationen. Kortet är en 6x4in kort och jag gå igenom de lager som bygger upp ett vackert kort som kan göras med någon utbud av papper och några stämplar för en män...

Göra ett lapptäcke Scraps blommig kort handledning

I denna demonstration Visa jag dig hur jag har använt scraps från min scrapbox och använder en punch, jag har gjort dem till ett lapptäcke kort.Steg 1: Objekt används för att göra detta kortArtiklar som använts - Jag använde Cosmic Shimmer PVA i Vint...

XBee adapter

enkel trådlös kommunikation: An XBee trådlös modem adapter som inte suger!XBee modem är en av de enklaste sätten att skapa en trådlös point-to-point eller mesh-nätverk. De har felkorrigering, konfigureras med AT-kommandon, finns i flera smaker och ka...

Finger virka: Ett Intro

Detta började med en typisk löpare ursäkt: det är hälla utanför, jag hatar körs på löpband och jag kan kompensera för de extra milesna imorgon om det är soligt. Instängda inuti bredvid en hög med läxor, jag vände mig till en alternativ källa av distr...

Rock kaktusar Terrarium

Hallå! låter göra en terrarium med kaktusar som du inte behöver vatten... någonsin!kaktusarna är målade stenar aka super rad.Jag använde en hel del modge podge i detta kan du använda mindre. den torr klart men så jag kommer att publicera en ny bild n...

Hur man lär dig Photoshop Online för gratis

En av de mest populära och mest använda foto redigerande mjukvaran tillgänglig online för designers och utvecklare är Photoshop. Du kan inte föreställa mig designa en bild utan Photoshop. Varför är det så populärt? Varför alla vill lära sig det?Först...

HLDS Counter Strike 1.6 [Linux]

så att du har spelat Counter Strike ett tag och funderar på att ställa in din egen server. Så är det handledningen du.Välkommen till min andra tutorial om hur du konfigurerar en Half Life dedikerad Server, HLDS för spel. Denna handledning kommer att...

StorageBot - röst kontrollerat robotic delar finder

VideoIntroduktionJag skapade StorageBot för att hjälpa till att lösa ett problem som upplevs av de flesta beslutsfattare. Efter många år av ackumulera tusentals delar lagras i lagringsbehållare, började jag gå galen letar delar utspridda mellan så må...

123D modellering för 3D utskrift

uppdatering: jag just fått 3D tryck från gruppen "Gratis 3D Printing" igår (3 Nov 2012). Det ser lite annorlunda än jag använde i handledningen eftersom jag lagt till fler delar i 3D-modellfilen, sedan jag fick lite utrymme kvar för att passa 3...

Child Labour prydnad

Enheten för utsmyckning inspirerade mig att titta på nuvarande världen problem som i mina ögon skulle kunna lösas genom skapandet av ett objekt som tonåring och vuxna kan bära för att få ett meddelande att försöka stoppa detta problem. Mitt problem v...

Gå tillbaka i tiden! Gamla blommig svart & Cerise kort

Detta Kortmakeri projekt handlar om att använda några av de underbara produkterna av gamla. Så kan vända tillbaka tid och gå igenom alla gamla kit vi har en göra några nya objekt. Detta kort är från ett kit som botaniska Kortmakeri och jag visa dig h...