WizFi250-CSI(C Script Interpreter) för rapid prototyping, DIY, IoT-startup eller studenter. (2 / 6 steg)

Steg 2: WizFi250-CSI.h

Alla funktioner, struktur och statiska värden definieras i "WizFi250-CSI.h".

Så behöver din skriptfil endast ska innefatta "WizFi250-CSI.h".

Du behöver inte innehålla en annan header-filer som stdio.h, string.h eller socket.h.

Genom att hänvisa till denna "WizFi250-CSI.h", kan du skriva din egen ansökan (C skriptfil).

Mest generella funktioner är baserade på "Standardbiblioteket för C".

int atoi(char *);
int atol(char *);
int printf (char *,...);
int scanf (char *,...);
void * memcpy (void *, void *, int);
int strlen(char *);
..........................................

Socket funktioner bygger på BSD sockets API.

int socket (heltal, heltal, heltal);
int ansluta (int, struct sockaddr *, osignerade långa);
int recv (int, void *, osignerade långa, int);
int recvfrom (int, void *, osignerade långa, int, struct sockaddr *, osignerade långa *);
int skicka (int, void *, osignerade långa, int);
..........................................

De flesta hårdvara-funktioner av WizFi250 är baserade på Arduino stil.

void pinMode (int gpio, typen int);
void pinut (int gpio, int värde);
int pinIn(int);
int analogRead(int);
void delay_ms (osignerade långa millisekunder);
..........................................

Snälla, se den under full "WizFi250-CSI.h".

< p > / * < br > * den här filen ingår i projektet WizFi250-CSI(C Script Interpreter)
* Genom att hänvisa till denna header-fil, kan du skriva en C-skriptfil WizFi250-CSI.
*
* Detta publiceras under "Nya BSD licens".
* < en href = "http://www.opensource.org/licenses/bsd-license.php" rel = "nofollow" > http://www.opensource.org/licenses/bsd-license.ph...</a>
*
* Copyright (C) 2015 Steve Kim (ssekim
*
* Den WizFi250-CSI är baserad på picoc projektet.
* < en href = "https://github.com/zsaleeba/picoc" rel = "nofollow" > http://www.opensource.org/licenses/bsd-license.ph...</a>
* Copyright (c) 2009-2011, Zik Saleeba
* Alla rättigheter reserverade.
*
* Återdistribution och användning i källformat och binärt format, med eller utan
* ändring, är tillåtna under förutsättning att följande villkor är
* träffade:
*
** Vid vidaredistribution av källkod måste innehålla copyrightanmärkningen ovan
* märka, denna lista med villkor och följande friskrivningsklausul.
*
** Återdistribution i binär form måste återge ovanstående meddelande om copyright
* märka, denna lista med villkor och följande friskrivningsklausul i
* i dokumentationen och/eller annat material som medföljer den
* distribution.
*
** Varken namnet på Zik Saleeba eller namnen på dess
* bidragsgivare kan användas för att stödja eller främja produkter som härrör
* från denna programvara utan särskilt skriftligt tillstånd.
*
* DENNA PROGRAMVARA TILLHANDAHÅLLES AV UPPHOVSRÄTTSINNEHAVARNA OCH BIDRAGSGIVARE
* "SOM ÄR" OCH ALLA UTTRYCKLIGA ELLER UNDERFÖRSTÅDDA GARANTIER, INKLUSIVE, MEN INTE
* BEGRÄNSAT TILL, UNDERFÖRSTÅDDA GARANTIER FÖR SÄLJBARHET OCH LÄMPLIGHET FÖR
* ETT SÄRSKILT ÄNDAMÅL SALUFÖRBARHET. UNDER INGA OMSTÄNDIGHETER SKALL UPPHOVSRÄTTEN
* ÄGARE ELLER BIDRAGSGIVARE HÅLLAS ANSVARIGA FÖR NÅGON DIREKT, INDIREKT, TILLFÄLLIG,
* SÄRSKILDA, FÖREDÖMLIGA ELLER FÖLJDRIKTIGA SKADOR (INKLUSIVE, MEN INTE
* BEGRÄNSAT TILL ANSKAFFNING AV ERSÄTTNINGSVAROR ELLER TJÄNSTER; FÖRLUST AV ANVÄNDNING,
* DATA ELLER VINST; ELLER AVBROTT I VERKSAMHETEN) EMELLERTID ORSAKADE OCH PÅ ALLA
* TEORI GÄLLANDE ANSVARSSKYLDIGHET, VARE SIG I KONTRAKT, STRIKT ANSVAR ELLER ÅTALBAR HANDLING
* (INKLUSIVE FÖRSUMLIGHET ELLER ANNAT) SOM UPPSTÅR PÅ NÅGOT SÄTT AV ANVÄNDNING
* AV DENNA PROGRAMVARA INFORMERATS ÄVEN OM OM MÖJLIGHETEN AV SÅDANA SKADOR.
* < /p >< p > / WizFi250-CSI(C Script Interpreter) Header-fil för alla < /p >< p > / / baserat på "ctype.h" av C standard bibliotek
int isalnum(int);
int isalpha(int);
int isblank(int);
int iscntrl(int);
int isdigit(int);
int isgraph(int);
int islower(int);
int isprint(int);
int ispunct(int);
int isspace(int);
int isupper(int);
int isxdigit(int);
int tolower(int);
int toupper(int); < /p >< p > / / baserat på "stdbool.h" av C standard bibliotek
TypeDef int bool;
#define sant 1
#define falska 0 < /p >< p > / / baserat på "stdio.h"
int puts(char *);
char * gets(char *);
int getchar();
int printf (char *,...);
int sprintf (char *, char *,...);
int snprintf (char *, int, char *,...);
int scanf (char *,...);
int sscanf (char *, char *,...);
int vprintf (char *, va_list);
int vsprintf (char *, char *, va_list);
int vsnprintf (char *, int, char *, va_list);
int vscanf (char *, va_list);
int vsscanf (char *, char *, va_list); < /p >< p > / / baserat på "stdlib.h" av standardbiblioteket för C
#define NULL-0 < /p >< p > int atoi(char *);
int atol(char *);
int strtol (char *, char *, int);
int strtoul (char *, char *, int);
void * malloc(int);
void * calloc(int,int);
void * realloc (void *, int);
void free(void *);
int rand();
void srand(int);
void abort();
void exit(int);
char * getenv(char *);
int abs(int);
int labs(int); < /p >< p > / / baserat på "string.h" av C standard bibliotek
void * memcpy (void *, void *, int);
void * memmove (void *, void *, int);
void * memchr (char *, int, int);
int memcmp (void *, void *, int);
void * memset (void *, int, int);
char * strcat (char *, char *);
char * strncat (char *, char *, int);
char * strchr (char *, int);
char * strrchr (char *, int);
int strcmp (char *, char *);
int strncmp (char *, char *, int);
int strcoll (char *, char *);
char * strcpy (char *, char *);
char * strncpy (char *, char *, int);
char * strerror(int);
int strlen(char *);
int strspn (char *, char *);
int strcspn (char *, char *);
char * strpbrk (char *, char *);
char * strstr (char *, char *);
char * strtok (char *, char *);
int strxfrm (char *, char *, int); < /p >< p > / / baserat på "time.h" av standardbiblioteket för C
TypeDef int tid;
TypeDef int clock_t; < /p >< p > struct tm
{
int tm_sec;
int tm_min;
int tm_hour;
int tm_mday;
int tm_mon;
int tm_year;
int tm_wday;
int tm_yday;
int tm_isdst;
}; < /p >< p > char * asctime(struct tm *);
char * ctime(int *);
struct tm * gmtime(int *);
struct tm * localtime(int *);
int mktime (struct tm * ptm);
int strftime (char *, int, char *, struct tm *); < /p >< p > / / baserat på "sockets.h" av lwIP
#define AF_UNSPEC_networkLibrary 0
#define AF_INET_networkLibrary 2
#define SOCK_STREAM_networkLibrary 1
#define SOCK_DGRAM_networkLibrary 2
#define SOCK_RAW_networkLibrary 3
#define IPPROTO_IP_networkLibrary 0
#define IPPROTO_TCP_networkLibrary 6
#define IPPROTO_UDP_networkLibrary 17 < /p >< p > #define O_NONBLOCK_networkLibrary 1
#define F_GETFL_networkLibrary 3
#define F_SETFL_networkLibrary 4 < /p >< p > #define EAGAIN_networkLibrary 11 < /p >< p > #define MSG_PEEK_networkLibrary 0x01
#define MSG_DONTWAIT_networkLibrary 0x08 < /p >< p > struct in_addr {
osignerade långa s_addr;
}; < /p >< p > struct sockaddr_in {
unsigned char sin_len;
unsigned char sin_family;
osignerad korta sin_port;
struct in_addr sin_addr;
char sin_zero [8].
} sockaddr_in; < /p >< p > typedef struct fd_set {
unsigned char fd_bits [(8+7)/8];
} fd_set; < /p >< p > int acceptera (int, struct sockaddr *, osignerade långa *);
int bind (int, struct sockaddr *, osignerade långa);
int avstängning (heltal, heltal);
int getpeername (int, struct sockaddr *, osignerade långa *);
int getsockname (int, struct sockaddr *, osignerade långa *);
int getsockopt (heltal, heltal, heltal, void *, osignerade långa *);
int setsockopt (heltal, heltal, heltal, void *, osignerade långa);
int close(int);
int ansluta (int, struct sockaddr *, osignerade långa);
int lyssna (heltal, heltal);
int recv (int, void *, osignerade långa, int);
int recvfrom (int, void *, osignerade långa, int, struct sockaddr *, osignerade långa *);
int skicka (int, void *, osignerade långa, int);
int sendto (int, void *, osignerade långa, int, struct sockaddr *, osignerade långa);
int socket (heltal, heltal, heltal);
int Välj (int, fd_set *, fd_set *, fd_set *, struct timeval *);
int fcntl (int, heltal, heltal);
int inet_addr(char *);
osignerade kort htons (unsigned short); < /p >< p > / / när det gäller WizFi250-WiFi
/**
* Går ett Wi-Fi-nätverk
* ssid: en null-avslutad sträng som innehåller SSID-namnet på nätverket för att ansluta till
* auth_type: Autentiseringstyp:
* Öppna - öppna säkerhet
* wep - WEP-säkerhet
* wpa2_tkip - WPA2 säkerhet med hjälp av TKIP cipher
* wpa2_aes - WPA2 säkerhet med AES cipher
* wpa2 - säkerhet WPA2 med AES eller TKIP chiffer
* wpa_aes - WPA-säkerhet med hjälp av AES cipher
* wpa_tkip - WPA-säkerhet med hjälp av TKIP chiffer
* viktigt: trygghet nyckel
* ip: sträng IP adress snöre (om 0, DHCP används.)
* nätmask: sträng netamsk snöre
* gateway: sträng gateway adress snöre
* 0(Success), others(Fail)
*/
int wifi_join (char * ssid, char * auth_type, char-tangenten, char * ip, char * nätmask, char-gateway); < /p >< p > / **
* Disassociates från ett trådlöst nätverk.
* Ingen
*/
int wifi_leave(); < /p >< p > / / när det gäller WizFi250-hårdvara
/**
* Initialises en GPIO pin
* gpio: gpio pin som bör påbörjas
* GPIO1, GPIO6, GPIO7, GPIO8, GPIO9, GPIO12(LED), GPIO13(LED), GPIO14
* Skriv: en struktur som innehåller konfigurationen krävs gpio
0: INPUT_PULL_UP: ingång med en inre pull-up resistor - använda med enheter som aktivt driver signalen låg - e.g. knapp ansluten till marken
1: INPUT_PULL_DOWN: ingång med en inre nedrullningsbara motståndet - använda med enheter som aktivt driver signalen hög - e.g. knapp ansluten till en makt järnväg
2: INPUT_HIGH_IMPEDANCE: ingång - måste alltid vara driven, antingen aktivt eller genom en extern pullup motstånd
3: OUTPUT_PUSH_PULL: utdata aktivt drivande hög och aktivt drivna låg - inte måste vara ansluten till andra aktiva utgångar - e.g. ledde produktion
4: OUTPUT_OPEN_DRAIN_NO_PULL: utgång aktivt drivna låg men är hög impedans när det som hög - kan anslutas till andra öppna-avlopp/öppen-collector utgångar. Behöver en extern pull-up resistor
5: OUTPUT_OPEN_DRAIN_PULL_UP: utgång aktivt drivna låg och dras hög med ett inre motstånd när satt hög - kan anslutas till andra öppna-avlopp/öppen-collector utgångar.
* Ingen
*/
void pinMode (int gpio, int typ); < /p >< p > / **
* Anger en GPIO utgångsstiftet låg eller hög
* gpio: gpio pin vilket bör ställas in
* GPIO1, GPIO6, GPIO7, GPIO8, GPIO9, GPIO12, GPIO13, GPIO14
* värde: 0(low) eller 1(high)
* Ingen
*/
Annullera pinut (int gpio, int värde); < /p >< p > / **
* Få tillståndet för en ingångsstift GPIO
* gpio: gpio stiftet som bör läsas
* GPIO1, GPIO6, GPIO7, GPIO8, GPIO9, GPIO12, GPIO13, GPIO14
* 0(low) eller 1(high)
*/
int pinIn(int); < /p >< p > / **
* Överföra data på en UART gränssnitt
* uart: UART gränssnitt. UART1, UART2.
* data: pekaren till början av data
* storlek: antal byte sända
* Ingen
*/
void uart_tx (int uart, unsigned char * data, int storlek); < /p >< p > / **
* Tar ett enda prov från en ADC-gränssnitt
* adc: gränssnittet bör vara provtagna
AD1 (för närvarande WizFi250-CSI stödet en ADC)
* en variabel som kommer att få provet (0 ~ 4095)
*/
int analogRead(int adc); < /p >< p > / **
* Ta emot data på en UART gränssnitt
* uart: UART gränssnitt. UART1, UART2.
* data: pekare till bufferten som kommer att lagra inkommande data
* storlek: antal byte som ska ta emot
* Antal mottagna byte
*/
int uart_rx (int uart, unsigned char * data, int storlek); < /p >< p > / **
* Sova för en given period
* millisekunder: dags att sova i millisekunder
* Ingen
*/
void delay_ms (osignerade långa millisekunder); < /p >

Se Steg
Relaterade Ämnen

Seriell-till-WiFi med WizFi250-CSI

För några veckor sedan, skrev jag ett inlägg om WizFi250-CSI enligt nedan.Och nu, jag kommer att visa en seriell-till-wifi-program som använder WizFi250-CSI.Med WizFi250-CSI, jag har avslutat programmet seriell-till-wifi i 10 minuter. (Skriva och pro...

Rapid Prototyping med polymerlera

Polymerlera är ett bra material att använda för rapid prototyping dina projekt. Det är mycket värmebeständiga och inte torka ut om inte bakat. Jag använda den för att göra tillfälliga inhägnader, att hjälpa till med lödning och som tredje hand för at...

Rapid Prototyping - 3D-utskrift för att göra Masters

Med en 3D-skrivare för att göra ditt ursprungliga prototyp, är det då möjligt att göra kopior av din design snabbt och kostnadseffektivt med mögel beslutsprocessen. ComposiMold kan användas för att göra formar och gjutgods snabbt och sedan åter smält...

Rapid Prototyping teknik för att utforma skarven med hjälp av Bezier kurvor.

Rapid Prototyping teknik för designledade, interfolierade eller ortodoxas ledermed hjälp av Bezier kurvor i modelleringkomplexa robotic rörelserR. Siderits MDS. Clifford MSIVJ. HawkinsM. snabb Exp-Path TeamK. Cannon MSII Exp-Path TeamV. Singh EXP-Pat...

Scratch bygga en Radiostyrd bil med CAD och Rapid Prototyping

IntroduktionLänge har jag ville bygga en RC bil helt från scratch, men aldrig riktigt haft tillgång till alla de verktyg som krävs för att göra det för hand eller kunnat motivera kostnaden för att använda rapid prototyping metoder. Efter att ha delta...

En introduktion till P-R-P. "Stackars mannens Rapid Prototyping". Låt oss bygga en IRobot keyring.

This is a tribute.Ett tack.Tillägnad alla människor som osjälviskt experimenterade, försökte, misslyckades och lyckades. De som skapade instructables så andra kan lära sig och vinna på den.Och ett tack för att skapa en plats att göra allt detta möjli...

Rapid Prototyping på gammaldags sätt (plåt + lödtenn)

Du vill göra häftiga saker? Billiga? Fasta? Du behöver något sätt att faktiskt göra byggnaden. Ingen mening med att bara komma med idéer eh? Detta instructable presenterar ett sätt att göra små saker snabbare än en 3D-skrivare. Det tar lite mer anstr...

Rapid Prototyping med papper: T-hyllor

inspirerad av J1Studio T-hyllorna, ville jag prova att göra dem med lasercutting. För att räkna ut några av de former som jag kunde bygga, började jag med prototyper i papper.Jag använde Silhouette Cameo för att klippa mina papper delar, men en bra b...

Linux shell script konvertering för 3d-video och bilder

Denna lilla instructable visar hur man använder linux-skal för att konvertera 3d-video och 3d-bild-filer till ett format för google papp.Jag har sällsynta förmånen att äga en Fuji verkliga 3D W3. När jag köpte den för några år sedan var det en ganska...

Motion Sensing pärlstav gardin

detta är ett projekt som vi skapat som en del av våra Computing och hantverk projekt. Uppdraget var att "skapa en familj av enheter för en viss sak". Vi valde att skapa denna pärlstav dörrgardin och ett fönster gardin (som visas i en annan Instr...

Arduino kontrollerade animatronic trä huvud (läslampa)

detta huvud är en läslampa som kan justeras för riktning av belysning, och nedtonade som krävs.Detta Instructable kombinerar Arduino programmering, några enkla elektronik, carving med hand och power tools, mekanisk kontroll och lite av träslöjd. Bort...

Raspberry fjärrkontroll med Telegram

Telegram är en mycket mångsidig snabbmeddelandeprogram som kan användas med samma telefonnummer på olika enheter samtidigt.I denna tutorial såg vi hur man installerar det, och vi har försökt att skicka meddelanden text och media.Vi har också sett att...

Webster: En geometriska mönster vävning maskin

vi är tre studenter från Kalifornien College of the Arts i San Francisco i programmet arkitektur. Denna studio heter kreativ arkitektur-maskiner och undervisas av Jason Johnson och Michael Shiloh. Webster är ett geometriskt mönster vävning maskin som...

RC plan

Vi är ett team av 12 personer, intresserade av området för flygteknik, ansöker som SAE Aero tävlingen äger rum varje år i USA.För detta instructable du behöver grundläggande kunskaper om:ANSYS: Anlaysis sofware, används för att ta reda på spänningen...

3D utskrift och CNCing konstiga frihandsfigur linser

Världen av optik och objektiv tillverkning har traditionellt varit stängt för icke-experter. Det behöver inte vara så. Med hjälp av rapid prototyping verktyg som 3D-skrivare och CNC-routers, är att göra en objektiv lättare än du kanske tror.Du kan an...

PCB isolering spår fräsning med MyDIYCNC Desktop CNC maskin

Hej där,Tory @ MyDIYCNC här igen för att visa dig en annan cool projekt som är mycket lätt på din desktopen CNC-maskin. Vi ska vara fräsning ut isolering spår till Tom PCB material till manliga rapid prototyping mönsterkort. Med alla de rätta verktyg...

Träkol Powered Generator - förgasare

Begära att jordbrukaren, survival expert, Boy Scout, hippie eller prepper och de kommer att berätta de awesome användningsområdena för träkol. Från att förbättra din trädgård för att filtrera vatten och fältet medicin. Men visste du med några skrot d...

Designosaurus - Laser skärning Workshop för beslutsfattare

Kan en hel klass design och laser skär ett projekt i en workshop?Absolut.Jag undervisar engineering uppsökande klasser på Makerspaces och skolor. Vi har ofta barn (och föräldrar) som är intresserad i försökande ute laserskärning. En av de stora utman...

Automatisera din skrivbordslampa!

Jag automatisera min hem skrivbordslampa med littleBits, ett verktyg för rapid prototyping. Jag remix sedan den för att tillåta mig själv att sätta ljuset på/av genom att skicka en text från min telefon!Steg 1: Hitta din lampaHitta din lampa. Du hitt...