MTK除錯gprs,即socket通訊

2021-07-25 22:01:37 字數 4141 閱讀 9170

轉 

二、將檔案新增工程裡:

三、mtk 實現socket連線,需要用到一下函式:

用到的標頭檔案有:

#include "soc_consts.h"

#include "soc_api.h"

#include "timerevents.h"

1、soc_cteat建立乙個socket

kal_int8 soc_creat(kal_uint8 domain,          //

協議,現在只支援

soc_pf_inet

socket_type_enum type,   

在該demain

下的型別,現在有

soc_sock_stream(tcp), soc_sock_dgram(udp), soc_sock_sms, soc_sock_ram

kal_uint8 protocol,         //

協議型別,除了

type

為soc_sock_ram,

其他都為

0module_type mod_id,        //

當前模組

id,主要用於接收訊息

kal_uint32 nwk_account_id)   //

接入點,

cmwap為10

,cmnet為14

2、設定socket非阻塞模式

kal_int8 soc_setsockopt(kal_int8 s, kal_uint16 option, kal_uint8 *val, kal_uint8 val_size)

kal_uint8 val = 1;

soc_setsockopt(socket_id, soc_nbio, &val, sizeof(val))

val=soc_read|soc_write|soc_close|soc_connect;

soc_setsockopt(socket_id,soc_async,&val, sizeof(val))

3、連線中國移動閘道器

kal_int8 soc_connect(kal_int8 s, sockaddr_struct *daar)

手機上網與pc上網不同,選擇cmwap,手機端需要首先連線移動閘道器才能進行網路通訊,

選擇cmnet可以直接連線internet,這裡需要填寫結構體sockaddr_struct的addr即port成員。

4、傳送http請求

kal_int32 soc_send(kal_int8 s, kal_uint8 *buf, kal_int32 len, kal_uint8 flags)

其中buf子串需要遵守http連線協議。

5、接收資料

kal_int32 soc_recv(kal_int8 s, kal_uint8 *buf, kal_int32 len, kal_uint8 flags)

buf用來儲存接收到的字串,這裡需要注意buf的長度不能超過2000,否則上真機的時候到申請記憶體空間時就會宕機,可以用迴圈來接收資訊。

6、關閉socket連線

kal_int8 soc_close(kal_int8 s)

引數傳入soc_create的返回值。

在程式中的**在真機中實現了插入sim卡可以獲取北京的今明兩天的天氣情況,在模擬器中除錯時可以連線tcp除錯助手進行socket同,互發、收資料。

下面為具體**:

#include "mmi_features.h"

#include "pixteldatatypes.h"

#include "gdi_include.h"

#include "wgui.h"

#include "gui.h"

#include "globaldefs.h"

#include "custdatares.h"

#include "gui_themes.h"

#include "wgui_categories.h"

#include "wgui_categories_util.h"

#include "wgui_softkeys.h"

#include "historygprot.h"

#include "organizerdef.h"

#include "mainmenudef.h"

#include "unicodexdcl.h"

#include "gui.h"

#include "conversions.h"

#include "wgui_categories_list.h"

#include "uart_sw.h"

#include "uart_hw.h"

#include "soc_consts.h"

#include "soc_api.h"

#include "timerevents.h"

#define buf_size 1024

kal_int8 ticket_socket_id;//建立socket連線的返回值//建立socket連線的返回值(設定全域性變數,定義在邋錞icketsocket.c中)

kal_int8 ret;

kal_int8 ticket_soc_init()

val = soc_read | soc_write | soc_close | soc_connect;

if (soc_setsockopt(ticket_socket_id, soc_async, &val, sizeof(val)) < 0)

ret = soc_connect(ticket_socket_id, &server_addr);

dbg_print("connect: ret = %x\r\n var = %x\r\n", ret, val);

return ret;

} //dbg_print("zhanweizhao6\r\n");

else

return -0x11;

} void close_sock()

kal_uint32 ticketcount;

void timeout()

void sock_send() ;

//kal_uint8 rbuf[1024];

kal_int32 ret;

//kal_uint8 weather_url = ;

kal_uint8 weather_url = ;

entrynewscreen(scr_ticket_buy, null, null, null);  //main_menu_screenid 主選單螢幕id

entry_full_screen();  //進入新程式時呼叫entrynewscreen

clear_screen();          //將整個螢幕刷成白色

//ret = soc_send(ticket_socket_id, wbuf, sizeof(wbuf), 0);

dbg_print("ready to send...\r\n");

ret = soc_send(ticket_socket_id, weather_url, sizeof(weather_url), 0);

dbg_print("send: ret = %x\r\n", ret);

if(ret > 0)

else if(ret == -12)//socket is not connect

show_chinese((kal_uint8 *)"請插入sim卡", 36, 25, 120, ui_color_dark_grey);

gui_blt_double_buffer(0, 0, ui_device_width - 1, ui_device_height - 1);//用來重新整理螢幕

setkeyhandler(goback, key_rsk, key_event_up);

return; }

u32 sock_receive()

}return ret; }

void soc_socket_notify(void *inmsg)//註冊的鉤子函式,響應socket伺服器端來的資料;

switch(soc_notify->event_type)

}頂

0

Mtk開機除錯步驟

開機除錯 1 將原來使用的mtk版本的tools目錄下的如下檔案 資料夾拷貝到tools目錄下 msys mingw make.exe 2 將目錄plutommi customer resgenerator下的exe檔案拷貝到新版本的plutommi customer resgenerator目錄下...

GPRS除錯時注意點

gprs除錯中指令 我使用的是原子的gprs開發板,其中有些預設指令是被記錄其中的 1 at cgclass b 2 at cgat 1 3 at cipcsgp 1,cmnet 以上指令是場景預設設定,設定後基本上就不會改變 以下指令是需要自己修改的 tcp協議傳輸時 1 at cipstart ...

除錯驅動思路 MTK除錯CTP

拿到ctp和相應的驅動 原廠的驅動 差別很大,有的廠家的驅動 寫得規規矩矩,注釋清楚,有的寫的就是一團糟,甚至還存在著邏輯錯誤。拿到ctp 驅動 後,直接將 合進去,然後看效果,不管怎麼觸控,ctp的列印一直不出來。看了看,也沒什麼問題,最後用示波器看中斷腳電平,發現一直為高,高為無效。然後用萬能表...