#include "sim800c.h"
#include "gtimer.h"
#include "gkbaseusart.h"
void post_data_stream_to_onenet(void);
char sim_init(void);
static gk_usartbase_type *puart=null;
//++++++++++++使用串列埠框架+++++++++++//
typedef struct
timeflagtype;
timeflagtype t***;
#define receive_max 2048
typedef struct
lbdatatype;
lbdatatype udata;
//++++++++++++使用串列埠框架+++++++++++//
//一共3個腳
#define simrst_gpio_port gpiob
#define simrst_pin gpio_pin_2
#define simrst1 hal_gpio_writepin(simrst_gpio_port, simrst_pin, gpio_pin_set);
#define simrst0 hal_gpio_writepin(simrst_gpio_port, simrst_pin, gpio_pin_reset);
void usart_timer_isr(void) }}
void modesimrxbyte(uint8_t ch)
uint8_t rxbuf[200];
void puart_init(void)
void modesim_resert( void )
void modesim_init(void)
void modesim_send(uint8_t *tx , uint16_t txlen )
void modesim_clear(void)
uint8_t modesim_txrx_l1(uint8_t *tx , uint16_t txlen , uint8_t *rx,uint16_t *rxlen )
hal_delay(10);
//printf("cnt=%d\r\n",cnt);
} memset(&udata,0,sizeof(lbdatatype));
memset(&t***,0,sizeof(timeflagtype));
if(ack==0)
return 0;
printf("tx[%s]\r\n",tx);
printf("rx[%s]rxlen=%d \r\n",rx,*rxlen);
return 1;
}//txrx 攜帶返回比較
uint8_t modesim_txrx_l2(void *tx , uint16_t length , uint8_t repert , void *checkdata)
; uint16_t rxlen=0;
while (1)
memset(rx,0,sizeof(rx));
memset(rxbuf,0,sizeof(rxbuf));
if( modesim_txrx_l1(tx , length ,(uint8_t*)rx , &rxlen) )
}if(repert != 0xff)
}}uint8_t modesim_power_on( void )
printf("gsm開機失敗\n");
return 0;
}#include "sim_init_touch.h"
void gsmtest(void)
//++++++++++gkoson風格++++++++++++++//
typedef struct _attype_
_attype;
const _attype atbank =,,,
,,,,//回答很多次creg: 0,2最後終於回答creg: 0,1
,//回答很多次error最後終於回答ok,,
,//一次ok =0是單鏈結 =1是多連線
,//一次ok,,
,,,,//onenet
};/*連線onenet不容易一次成功
一般如下:tx以後不會立刻回答連線狀態 而是馬上回ok 過來很久很久才回答0, connect ok
而我是急性子 我tx以後只拿到ok 我就再次tx 所以我拿到already connect
tx[at+cipstart=0,"tcp","183.230.40.33",80
]rx[
ok]rxlen=6
tx[at+cipstart=0,"tcp","183.230.40.33",80
]rx[
error
0, already connect
*/#define fun_chk( fun,id) \
do\else \
}\}while(0)
char sim_init(void)
; while(modesim_txrx_l2(at.at , atlen ,50, at.chk)==0)
printf("at send ok now send msg\r\n");
modesim_send((uint8_t *)msg ,len );
}void post_data_stream_to_onenet(void)
SIM800C模組TCP透傳模式AT設定
1 gprs伺服器tcp ip配置 at 檢查模組工作 at ipr 38400 設定波特率 at w 儲存設定 at cpin?查詢網路註冊情況 at csq 查詢訊號質量。at creg?查詢gsm網路註冊狀態 at cgreg?查詢gprs網路註冊狀態 at cgatt 1 使模組附著gprs...
用彙編的眼光看C (之退出流程)
無論是在判斷還是在迴圈的過程中,通常在遇到合適的條件的時候就會退出相應的模組。跳出模組執行的方式很多,break,continue,return都可以。下面我們就可以分別對他們進行將介紹。1 continue只能用於迴圈,而break迴圈 判斷都可以應用。兩者有什麼區別呢?view plain 21...
用彙編的眼光看C (之退出流程)
無論是在判斷還是在迴圈的過程中,通常在遇到合適的條件的時候就會退出相應的模組。跳出模組執行的方式很多,break,continue,return都可以。下面我們就可以分別對他們進行將介紹。1 continue只能用於迴圈,而break迴圈 判斷都可以應用。兩者有什麼區別呢?21 for int m ...