/* ************************************************** 经纬度发送函数 ************************************************** */ static void SendCoordinate(Datapack* pack)//注这是个奇葩问题 在我的板子上这里一定要USART1,具体原因找不出 { int i; sendChars("{\"longitude\":\""); //sendChars("{\"longitude\":\""); for(i=0; i<pack->countlon; i++) { //UART_SendChar(uarttemp) UART_SendChar(pack->longitude[i]); //UART_SendChar(pack->longitude[i]); } sendChars("\",\"latitude\":\""); //sendChars("\",\"latitude\":\""); for(i=0; i<pack->countlat; i++) { //printf("%c",pack->longitude[i]); UART_SendChar(pack->latitude[i]); //UART_SendChar(pack->latitude[i]); } sendChars("\"}"); //sendChars("\"}"); }
/* ************************************************** GSM初始化函数 头调用就好 ************************************************** */ void httpInit(void) { sendChars("AT\r\n"); delay_ms(1000); sendChars("ATE1\r\n"); delay_ms(1000); sendChars("AT+CSTT?\r\n"); delay_ms(1000); sendChars("AT+CSTT\r\n"); delay_ms(1000); sendChars("AT+CIICR\r\n"); delay_ms(1000); sendChars("AT+CIFSR\r\n"); delay_ms(1000); }
/* ************************************************** POST报文发送函数 当查找到有效协议帧时调用 注POST http://hailandev.sinaapp.com/gps/api.php?action=setlocation是地图的地址,另一个是之前post测试的,记得换回来 ************************************************** */ void Send_PostMessage(Datapack* pack,char* lat1,char* lon1) { int i = 0; char num[10]; Packlen_Tostring(pack,num); //latUnit_change(pack); //lonUnit_change(pack); sendChars("AT+CIPSTART=\"TCP\",\"hailandev.sinaapp.com\",80\r\n"); sendChars(Host); sendChars("\",80\r\n"); delay_ms(1000); sendChars("AT+CIPSEND\r\n"); delay_ms(1000); sendChars("POST "); sendChars(Postadd); sendChars("HTTP/1.1\r\n"); sendChars("Referer: http://hailandev.sinaapp.com\r\n"); sendChars(Host); sendChars("\r\n"); sendChars("Accept:*/*\r\n"); sendChars("Accept-Language: zh-cn,en-us;q=0.5\r\n"); sendChars("Content-Type:text/json\r\n"); sendChars("User-Agent:YunShen1.0\r\n"); sendChars("Host: hailandev.sinaapp.com\r\n"); sendChars(Host); sendChars("\r\n"); sendChars("Content-Length: "); while(num[i]!='\0') { UART_SendChar(num[i++]); } sendChars("\r\n\r\n"); SendCoordinate(pack); /*sendChars("{\"longitude\":\""); for(i=0;i<11;i++) { UART_SendChar(lon1[i]); } sendChars("\",\"latitude\":\""); for(i=0;i<10;i++) { UART_SendChar(lat1[i]); } sendChars("\"}");*/ sendChars("\r\n\r\n"); UART_SendChar(0x1a); pack->countlat = 0; pack->countlon = 0; pack->countUTC = 0; pack->status = 'V'; setCharsOLED("OK!",1,6); }
//------------------------------------------------------------------------------------ // MAIN Routine //------------------------------------------------------------------------------------ void main(void) { char input; char SFRPAGE_SAVE = SFRPAGE; WDTCN = 0xDE; // Disable the watchdog timer WDTCN = 0xAD; // Note: = "DEAD"! SYSCLK_INIT(); // Initialize the oscillator Timer_Init(); // Initialize timer UART_INIT(); // Initialize UARTs PORT_INIT(); // Initialize the Crossbar and GPIO SPI_Init(); SFRPAGE = UART0_PAGE; // Direct output to UART0 printf("\033[2J"); //clear screen printf("\033[2J"); //clear screen printf("\033[13;0H"); //print divider printf("--------------------------------------------------------------------------------"); //printf("\033[1;12r"); //define scrollable area //printf("\033[14;25r"); while(1) { if (RI0 == 1) { RI0 = 0; input = SBUF0; // If input from UART0, read SBUF0 if (input == 0x7F){ sendChars(); } else{ if (input == 'a') //228 { printf("i am a\n\r"); SPI0CKR += 5; printf("clock: %d\n\r", SPI0CKR); } else if (input == 'z') { SPI0CKR -= 5; printf("clock: %d\n\r", SPI0CKR); } //SFRPAGE_SAVE = SFRPAGE; //SFRPAGE = SPI0_PAGE; NSSMD0 = 0; //slave select SPIF = 0; //clear SPIF SPI0DAT = input; //send input while (!SPIF); //wait until sent NSSMD0 = 1; //release slave writeTop(input); //write to UART0 RI0 = 0; //Clear input flag overflows = 0; //wait while(overflows < 30000); NSSMD0 = 0; //slave select while (!SPIF); //wait until not busy SPIF = 0; //busy SPI0DAT = input; //write dummy character while (!SPIF); //wait until transfer is over NSSMD0 = 1; //release slave input = SPI0DAT; //read SPI0DAT writeBot(input); //SFRPAGE = SFRPAGE_SAVE; } } } }