TI中文支持网
TI专业的中文技术问题搜集分享网站

CC3200通过手机发送将 路由器名、密码、加密方式发送给CC3200然后断开连接后无法连接到路由器

过程:

1、安卓手机创建热点(AP);

2、CC3200以接入点的方式连接到手机热点(AP);

3、安卓手机使用网络工具将,路由器名称,密码,加密方式发送到CC3200;

4、CC3200接收到路由器的相关信息后,连接到路由器

问题: 在这个里面步骤1~3都没有问题,然后到步骤4的时候就无法连接到路由器了

代码如下:

   1.连接WIFI:

   这样写的原因:我定义了一个全局变量“wifi_connect_select”当wifi_connect_select等于‘1’的时候,   连接安卓手机的热点(步骤2)

                                                                                                  当wifi_connect_select等于‘2’的时候      连接到路由器

long WlanConnect()
{
SlSecParams_t secParams = {0};
long lRetVal = 0;
if(wifi_connect_select==1)
{
secParams.Key = (signed char*)SECURITY_KEY;
secParams.KeyLen = strlen(SECURITY_KEY);
secParams.Type = SECURITY_TYPE;
lRetVal = sl_WlanConnect((signed char*)SSID_NAME, strlen(SSID_NAME), 0, &secParams, 0);
ASSERT_ON_ERROR(lRetVal);
if(lRetVal==0)
Report("\n\r连接WIFI:%s成功\n\r",SSID_NAME);
else
Report("连接WIFI:%s失败",SSID_NAME);
}
if(wifi_connect_select==2)
{
secParams.Key = (signed char*)wifi_password;
secParams.KeyLen = wifi_password_len;
if(wifi_safety[0]==0)
secParams.Type = SL_SEC_TYPE_OPEN;//开放网络
else if(wifi_safety[0]==1)
secParams.Type = SL_SEC_TYPE_WEP;//WEP加密
else if(wifi_safety[0]==2)
secParams.Type = SL_SEC_TYPE_WPA_WPA2;//WPA2加密
lRetVal = sl_WlanConnect((signed char*)wifi_name, wifi_name_len, 0, &secParams, 0);
if(lRetVal==0)
Report("连接WIFI:%s成功",wifi_name);
else
Report("连接WIFI:%s失败",wifi_name);
//SimpleLinkNetAppEventHandler(1);//获取IPv4事件 P182页
ASSERT_ON_ERROR(lRetVal);
}
UART_PRINT("\n\r等待WIFI事件\n\r");
// Wait for WLAN Event
while((!IS_CONNECTED(g_ulStatus)) || (!IS_IP_ACQUIRED(g_ulStatus))) { // Toggle LEDs to Indicate Connection Progress
GPIO_IF_LedOff(MCU_IP_ALLOC_IND);
MAP_UtilsDelay(800000);
GPIO_IF_LedOn(MCU_IP_ALLOC_IND);
MAP_UtilsDelay(800000);
}

return SUCCESS;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

2.接收路由器信息代码(名称,密码,加密方式)

这样写的原因:我第一次进入(i==0)保存路由器名称,第二次进入(i==1)保存路由器密码,第三次(i==2)进入保存路由器加密方式,第四次(i==3)进入就连接路由器

if(i==0)//保存wifi名称
{
sl_Send(iNewSockID, "输入wifi名称:",13, 0);
sl_Send(iNewSockID, "\n",1, 0);
wifi_name_len = sl_Recv(iNewSockID, wifi_name,sizeof(wifi_name)/sizeof(wifi_name[0]), 0);
sl_Send(iNewSockID,"wifi名称为:",11, 0);
sl_Send(iNewSockID, wifi_name, sizeof(wifi_name)/sizeof(wifi_name[0]), 0);
sl_Send(iNewSockID, "\n",1, 0);
i++;
MAP_UtilsDelay(8000000);
}
if(i==1)//保存wifi密码
{
sl_Send(iNewSockID, "输入wifi密码:",13, 0);
sl_Send(iNewSockID, "\n",1, 0);
wifi_password_len = sl_Recv(iNewSockID,wifi_password,sizeof(wifi_password)/sizeof(wifi_password[0]), 0);
sl_Send(iNewSockID, "wifi密码为:",11, 0);
sl_Send(iNewSockID, wifi_password, sizeof(wifi_password)/sizeof(wifi_password[0]), 0);
sl_Send(iNewSockID, "\n",1, 0);
i++;
MAP_UtilsDelay(8000000);
}
if(i==2)//保存wifi加密方式
{
sl_Send(iNewSockID, "输入wifi加密方式:",17, 0);
sl_Send(iNewSockID, "\n",1, 0);
wifi_safety_len = sl_Recv(iNewSockID, wifi_safety,sizeof(wifi_safety)/sizeof(wifi_safety[0]), 0);
sl_Send(iNewSockID,"wifi加密方式为:",15, 0);
sl_Send(iNewSockID, wifi_safety, sizeof(wifi_safety)/sizeof(wifi_safety[0]), 0);
sl_Send(iNewSockID, "\n",1, 0);
i++;
MAP_UtilsDelay(8000000);
}
if(i==3)
{

wifi_connect_select=2;

main1();

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

3.main1()代码如下:

这样写的原因:main1();的代码也是主函数main();的代码,我想的是直接从头开始连接到路由器,最主要的是任务调度那里我看不懂……

void main1(void)
{
long lRetVal = -1;
//
// Board Initialization
//
BoardInit();
UART_PRINT("BoardInit()..\n\r");
//
// configure the GPIO pins for LEDs,UART
//
PinMuxConfig();
UART_PRINT("PinMuxConfig()..\n\r");
//
// Configure the UART
//
#ifndef NOTERM
InitTerm();
UART_PRINT("InitTerm()..\n\r");
#endif //NOTERM
//
// Display Application Banner
//
DisplayBanner(APPLICATION_NAME);
UART_PRINT("DisplayBanner()..\n\r");
//
// Configure all 3 LEDs
//
GPIO_IF_LedConfigure(LED1|LED2|LED3);
UART_PRINT("GPIO_IF_LedConfigure()..\n\r");
// switch off all LEDs
GPIO_IF_LedOff(MCU_ALL_LED_IND);
UART_PRINT("GPIO_IF_LedOff()..\n\r");
//
// Start the SimpleLink Host
//
lRetVal = VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
if(lRetVal < 0)
{
ERR_PRINT(lRetVal);
LOOP_FOREVER();
}
UART_PRINT("VStartSimpleLinkSpawnTask()..\n\r");
//
// Start the WlanStationMode task
//
//WlanStationMode();
lRetVal = osi_TaskCreate( WlanStationMode, \
(const signed char*)"Wlan Station Task", \
OSI_STACK_SIZE, NULL, 1, NULL );
if(lRetVal < 0)
{
ERR_PRINT(lRetVal);
LOOP_FOREVER();
}
UART_PRINT("osi_TaskCreate()..\n\r");
//
// Start the task scheduler
//
osi_start();
}
void main()
{
long lRetVal = -1;
wifi_connect_select=1;
//
// Board Initialization
//
BoardInit();
//
// configure the GPIO pins for LEDs,UART
//
PinMuxConfig();

//
// Configure the UART
//
#ifndef NOTERM
InitTerm();
#endif //NOTERM
//
// Display Application Banner
//
DisplayBanner(APPLICATION_NAME);
//
// Configure all 3 LEDs
//
GPIO_IF_LedConfigure(LED1|LED2|LED3);

// switch off all LEDs
GPIO_IF_LedOff(MCU_ALL_LED_IND);
//
// Start the SimpleLink Host
//
lRetVal = VStartSimpleLinkSpawnTask(SPAWN_TASK_PRIORITY);
if(lRetVal < 0)
{
ERR_PRINT(lRetVal);
LOOP_FOREVER();
}

//
// Start the WlanStationMode task
//
//WlanStationMode();
lRetVal = osi_TaskCreate( WlanStationMode, \
(const signed char*)"Wlan Station Task", \
OSI_STACK_SIZE, NULL, 1, NULL );
if(lRetVal < 0)
{
ERR_PRINT(lRetVal);
LOOP_FOREVER();
}
//
// Start the task scheduler
//
osi_start();
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

结果:当执行上面的代码过后,通过手机将路由器的信息发送到CC3200开发板后,当连接路由器的时候就无法连接了,它就不像第一次连接手机热点的时候先是led闪烁,WIFI连接起后led灯停止闪烁,然后UART发送IP等信息,实际情况是:led灯不闪烁,路由器连接不上,UART也不发送IP地址等信息,我不知道是哪里出了问题,求助…….如果有兄弟姐妹给我解释哈任务调度是什么东西就更好了,谢谢,感激不尽;

gaoyang9992006:

有没有彻底的与手机AP断开连接?

user5218768:

回复 gaoyang9992006:

断开了的,应该是任务调度的问题,但是任务调度我完全不懂グッ!(๑•̀ㅂ•́)و✧

user5218768:

回复 gaoyang9992006:

应该是任务调度那里出了问题,但是我完全不懂任务调度(>﹏<)

赞(0)
未经允许不得转载:TI中文支持网 » CC3200通过手机发送将 路由器名、密码、加密方式发送给CC3200然后断开连接后无法连接到路由器
分享到: 更多 (0)