This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC3200:企业网络连接问题

Guru**** 2769375 points

Other Parts Discussed in Thread: CC3200, CC3200SDK, CC3100

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1063445/cc3200-enterprise-network-connection-issue

器件型号:CC3200
Thread 中讨论的其他部件:CC3100

尊敬的团队:

下面是 我使用的设置详细信息:  

  1. CC3200 Wi-Fi 芯片。
  2. SDK: CC3200SDK_1.3.0
  3. 服务包:CC3100_CC3200_ServicePack_1.0.1.15-2.14.0.0

目标:收集 能量计 数据并通过企业网络将其发布在 MQTT 服务器上。

  • RS485协议
  • WPA 企业 安全

参考示例代码:

  • 我正在使用 MQTT 客户端代码、并根据要求进行了更改
  • 已参考企业连接的 ent_WLAN 示例代码

问题:无法连接到网络

  • 尝试在不使用证书的情况下连接到网络
  • 根据该帖子,已将 pValues 保持为“”,以便在 sl_WlanSet()函数中禁用服务器身份验证
  • 我仍然无法连接到网络。
  • 已尝试使用以下两种功能设置  
    • SL_WlanSet (SL_WLAN_CFG_General_Param_ID、SL_WLAN_General_Param_disable_ENT_SERVER_AUTH、1、&pValues); (参考:TI 帖子)
    • SL_WlanSet (SL_WLAN_CFG_General_Param_ID、19、1、&pValues);(参考:Ent_WLAN 示例代码)
      • 结果仍然是负面的
  • 我正在尝试 ping 内部服务器、以确保我们已连接到网络
    • 将主机名从"www.ti.com "替换为"vt1.vitesco.com "

          这是否会导致任何问题?

如需参考、请查找以下日志

这可能是什么问题?希望您能尽快与上述问题取得联系。

以下是我使用的 MQTT 客户端代码的代码片段、 我请求您  提供正确的解决方案?  

//*****************************************************************************
//
//! Task implementing MQTT client communication to other web client through
//!    a broker
//!
//! \param  none
//!
//! This function
//!    1. Initializes network driver and connects to the default AP
//!    2. Initializes the mqtt library and set up MQTT connection configurations
//!    3. set up the button events and their callbacks(for publishing)
//!    4. handles the callback signals
//!
//! \return None
//!
//*****************************************************************************

void MqttClient(void *pvParameters)
{
	long lRetVal = -1;
	int iCount = 0;
	int iNumBroker = 0;
	int iConnBroker = 0;
	unsigned char policyVal;

	SlSecParamsExt_t eapParams;
	SlSecParams_t    g_SecParams;
	//	   long 			lRetVal = -1;
	unsigned char 	pValues = 0;

	//	connect_config *local_con_conf = (connect_config *)app_hndl;
	local_con_conf = (connect_config *)app_hndl;

	//	connect_to_broker:
	// Reset The state of the machine
	Network_IF_ResetMCUStateMachine();

	// Start the driver
	lRetVal = Network_IF_InitDriver(ROLE_STA);
	if(lRetVal < 0)
	{
		LOOP_FOREVER();
	}


	//Write Data to Flash
	//	WriteFileToDevice(&ulToken, &lFileHandle);

	// switch on Yellow LED to indicate Simplelink is properly up
	MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, GPIO_PIN_4);	//Yellow LED ON

	// Start Timer to blink Red LED till AP connection
	LedTimerConfigNStart();

	/*
    // Initialize AP security params
    SecurityParams.Key = (signed char *)SECURITY_KEY;
    SecurityParams.KeyLen = strlen(SECURITY_KEY);
    SecurityParams.Type = SECURITY_TYPE;

    //
    // Connect to the Access Point
    //
    lRetVal = Network_IF_ConnectAP(SSID_NAME, SecurityParams);
    if(lRetVal < 0)
    {
       UART_PRINT("Connection to an AP failed\n\r");
       LOOP_FOREVER();
    }

    lRetVal = sl_WlanProfileAdd(SSID_NAME,strlen(SSID_NAME),0,&SecurityParams,0,1,0);
*/

//	//set AUTO policy
//	lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION,
//			SL_CONNECTION_POLICY(1,0,0,0,0),
//			&policyVal, 1 /*PolicyValLen*/);
//
//
//	//set AUTO policy
//	lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION,
//				SL_CONNECTION_POLICY(1,1,0,0,0),
//				&policyVal, 1 /*PolicyValLen*/);		//SL_CONNECTION_POLICY is set to auto and fast config connection mode.

	CLR_STATUS_BIT_ALL(g_ulStatus);

	//Start simplelink
	g_uiSimplelinkRole =  sl_Start(NULL,NULL,NULL);


	//start ent wlan connection

//	eapParams.EapMethod = SL_ENT_EAP_METHOD_PEAP1_MSCHAPv2;
	eapParams.EapMethod = SL_ENT_EAP_METHOD_PEAP0_MSCHAPv2;
	eapParams.User = USER_NAME;
	eapParams.UserLen = strlen((const char *)eapParams.User);
	eapParams.AnonUserLen = 0;

	g_SecParams.Key = PASSWORD;
	g_SecParams.KeyLen = strlen((const char *)g_SecParams.Key);
	g_SecParams.Type = SL_SEC_TYPE_WPA_ENT;



	// 0 - Disable the server authnetication | 1 - Enable (this is the deafult)
	pValues = 0;
//	sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, 19, 1 , &pValues);
	sl_WlanSet(SL_WLAN_CFG_GENERAL_PARAM_ID, SL_WLAN_GENERAL_PARAM_DISABLE_ENT_SERVER_AUTH, 1 , &pValues);

	lRetVal = sl_WlanConnect(ENT_NAME, strlen(ENT_NAME), NULL, &g_SecParams, &eapParams);
	//	    ASSERT_ON_ERROR(lRetVal);
	if(lRetVal < 0)
	{
		UART_PRINT("Connection to an AP failed\n\r");
		LOOP_FOREVER();
	}

	//End ent wlan connection

	//waiting for the device to Auto Connect
	while ( (!IS_IP_ACQUIRED(g_ulStatus))&&
			g_ucConnectTimeout < AUTO_CONNECTION_TIMEOUT_COUNT)
	{
		//Turn RED LED On
		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, GPIO_PIN_4);	//Yellow LED ON
		osi_Sleep(50);

		//Turn RED LED Off
		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, 0);	//Yellow LED OFF
		osi_Sleep(50);

		g_ucConnectTimeout++;
	}

	lRetVal = sl_WlanProfileAdd(ENT_NAME,strlen(ENT_NAME),0,&g_SecParams,0,1,0);

	//set AUTO policy
	lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION,
				SL_CONNECTION_POLICY(1,0,0,0,0),
				&policyVal, 1 /*PolicyValLen*/);
//	lRetVal = sl_WlanPolicySet(SL_POLICY_CONNECTION,SL_CONNECTION_POLICY(1,0,0,0,0),NULL,0);

	/*
//	start smart config section if AP is not found
	// Start Timer to blink Yellow LED till AP connection
	LedTimerConfigNStart();
	if (g_ucConnectTimeout >= AUTO_CONNECTION_TIMEOUT_COUNT)
	{
		SetConnectionPolicy();		//set connection policy to smart config and wait for connection
	}
//	end smart config section if AP is not found
	 */

	// Disable the LED blinking Timer as Device is connected to AP
	LedTimerDeinitStop();

	//Read Data from Flash
	ReadFileFromDevice(ulToken, lFileHandle);
	if(ui32_tempGWID == gateway.ui32DeviceId )
		iSamplingRate = gateway.ui8SamplingInterval;

	// Switch ON Yellow LED to indicate that Device acquired an IP
	MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, GPIO_PIN_4);	//Yellow LED ON
	UtilsDelay(20000000);
	MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, 0);	//Yellow LED OFF

	// Register Push Button Handlers
	Button_IF_Init(pushButtonInterruptHandler2,pushButtonInterruptHandler3);
	ReconnectNow:
	if(boolRestart)
	{
		//		sl_ExtLib_MqttClientDisconnect((void*)local_con_conf[iCount].clt_ctx);
		/* Clear all stored profiles and reset the policies */
		lRetVal = sl_WlanProfileDel(0xFF);
		//		ASSERT_ON_ERROR(lRetVal);
		sl_WlanDisconnect();


		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, GPIO_PIN_4);	//Yellow LED ON
		UtilsDelay(100000);
		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, 0);	//Yellow LED OFF
		UtilsDelay(100000);
		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, GPIO_PIN_4);	//Yellow LED ON

		// Start Timer to blink Red LED till AP connection
		LedTimerConfigNStart();
		SetConnectionPolicy();
		// Disable the LED blinking Timer as Device is connected to AP
		LedTimerDeinitStop();

		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, 0);	//Yellow LED OFF
		boolRestart = false;
	}

	connect_to_broker:
	// Initialze MQTT client lib
	lRetVal = sl_ExtLib_MqttClientInit(&Mqtt_Client);
	if(lRetVal != 0)
	{
		// lib initialization failed
		LOOP_FOREVER();
	}

	/******************* connection to the broker ***************************/
	iNumBroker = sizeof(usr_connect_config)/sizeof(connect_config);
	if(iNumBroker > MAX_BROKER_CONN)
	{
		LOOP_FOREVER();
	}

	//	connect_to_broker:
	while(iCount < iNumBroker)
	{
		//create client context
		local_con_conf[iCount].clt_ctx =
				sl_ExtLib_MqttClientCtxCreate(&local_con_conf[iCount].broker_config,
						&local_con_conf[iCount].CallBAcks,
						&(local_con_conf[iCount]));

		// Set Client ID
		sl_ExtLib_MqttClientSet((void*)local_con_conf[iCount].clt_ctx,
				SL_MQTT_PARAM_CLIENT_ID,
				local_con_conf[iCount].client_id,
				strlen((char*)(local_con_conf[iCount].client_id)));

		// Set will Params
		if(local_con_conf[iCount].will_params.will_topic != NULL)
		{
			sl_ExtLib_MqttClientSet((void*)local_con_conf[iCount].clt_ctx,
					SL_MQTT_PARAM_WILL_PARAM,
					&(local_con_conf[iCount].will_params),
					sizeof(SlMqttWill_t));
		}

		// setting username and password
		if(local_con_conf[iCount].usr_name != NULL)
		{
			sl_ExtLib_MqttClientSet((void*)local_con_conf[iCount].clt_ctx,
					SL_MQTT_PARAM_USER_NAME,
					local_con_conf[iCount].usr_name,
					strlen((char*)local_con_conf[iCount].usr_name));

			if(local_con_conf[iCount].usr_pwd != NULL)
			{
				sl_ExtLib_MqttClientSet((void*)local_con_conf[iCount].clt_ctx,
						SL_MQTT_PARAM_PASS_WORD,
						local_con_conf[iCount].usr_pwd,
						strlen((char*)local_con_conf[iCount].usr_pwd));
			}
		}

		// connectin to the broker
		if((sl_ExtLib_MqttClientConnect((void*)local_con_conf[iCount].clt_ctx,
				local_con_conf[iCount].is_clean,
				local_con_conf[iCount].keep_alive_time) & 0xFF) != 0)
		{

			//delete the context for this connection
			sl_ExtLib_MqttClientCtxDelete(local_con_conf[iCount].clt_ctx);

			break;
		}
		else
		{
			local_con_conf[iCount].is_connected = true;
			iConnBroker++;
		}

		// Subscribe to topics
		if(sl_ExtLib_MqttClientSub((void*)local_con_conf[iCount].clt_ctx,
				local_con_conf[iCount].topic,
				local_con_conf[iCount].qos, TOPIC_COUNT) < 0)
		{
			sl_ExtLib_MqttClientDisconnect(local_con_conf[iCount].clt_ctx);
			local_con_conf[iCount].is_connected = false;

			//delete the context for this connection
			sl_ExtLib_MqttClientCtxDelete(local_con_conf[iCount].clt_ctx);
			iConnBroker--;
			break;
		}
		else
		{
			int iSub;
			for(iSub = 0; iSub < local_con_conf[iCount].num_topics; iSub++)
			{
			}
		}
		iCount++;
	}


	if(iConnBroker < 1)
	{
		// no succesful connection to broker
		goto end;
	}

	iCount = 0;

	CPUTimerConfigNStart();		// start the timer

	for(;;)
	{
		if(boolSamplingIntervalSetFlag)
		{
			CollectEMData();
			boolSamplingIntervalSetFlag = false;
		}

		if(boolSmartConfig)             //Conditional entry check for Force Smart Configuration
		{
			boolRestart=true;
			boolSmartConfig = false;
			goto ReconnectNow;
		}

		//Check If AP is disconnected
		if(boolBrokerDisconnected)
		{
			//Jumps to Reconnection Wait state
			goto end;
		}

		//		collect_data:
		if (bool_EMData)	//collecting data after timer interval is over
		{
			CollectEMData();
			bool_EMData = false;
		}
	}

	end:
	lRetVal = CheckInternetConnection();
	//Wait Untill AP/Internet connection is established
	//	while((!IS_CONNECTED(g_ulStatus)) || (!IS_IP_ACQUIRED(g_ulStatus)))
	while(lRetVal < 0)
	{

		IS_IP_ACQUIRED(g_ulStatus);
		IS_CONNECTED(g_ulStatus);
		lRetVal = CheckInternetConnection();

		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, GPIO_PIN_4);	//Yellow LED ON
		osi_Sleep(12000);
		MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, 0);	//Yellow LED OFF
		osi_Sleep(3000);
		cReconnectCntr++;		//Count no of attempts of reconnection
		if(boolSmartConfig)
		{
			lRetVal = 1;
			lRetVal = sl_WlanProfileDel(0xFF);
			sl_WlanDisconnect();
			boolRestart=true;
			boolSmartConfig = false;
			goto ReconnectNow;
		}

		if( cReconnectCntr > 8 )		// 1 count = 15 secs therefore 4 count = 1 mins
		{
			cReconnectCntr = 0;
//			PowerCycleDevice();	// soft resets the device - data is lost
			goto end;
		}

		/*
//		start of timer interrupt condition when in disconnection state
			if (bool_EMData) //is data to be collected?
			{
				//Jumps to Collect the data from the energy meter
//				goto collect_data;
				CollectEMData(); // collection of EM data.
				bool_EMData = false;
			}
//		End of timer interrupt condition when in disconnection state
		 */
	}

	MAP_GPIOPinWrite(GPIOA3_BASE, GPIO_PIN_4, 0);	//Yellow LED OFF
	local_con_conf->is_connected = true;
	boolBrokerDisconnected = false;
	/*
		//If AP connection is sucessfull jump to reintiate MQTT broker Connection
		PowerCycleDevice();	// soft resets the device - data is lost
	 */
	//		ResetNwp();		//restart the network processor
	goto connect_to_broker;
}

如果我错了、请告诉我。 提前感谢。

   

寻求快速响应。

谢谢、此致、

Shivaprasad。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shivaprasad、

    专家将在接下来的几天内在这里跟进。

    谢谢、
    Jacob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您在2个月前就同一问题打开了一个主题、但您从未回复我的第一条反馈 https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1046425/cc3200-eap---peapv0-mschapv2-connectivity-issue/3870942#3870942

    服务器旁路看起来正常。

    您是否知道 Radius 服务器使用的 TLS 版本? 是 TLSv1.0还是 TLSv1.2?

    您会得到哪种类型的错误?

    如果您可以记录 NWP 日志、我将能够看到更多信息。 要在 CC3200上执行此操作、您需要:

    1. 识别 CC3200芯片组上网络记录器的硬件引脚。
      1. 对于 CC3200 QFN 类型、它是引脚#62 (GPIO07)
      2. 对于 CC3200 MOD 类型、它是引脚#52 (GPIO07)
    2. 使用电平转换器并连接接地和1引脚数据线
    3. 在 pinmux.c 中添加以下行:
      1. MAP_PRCMPeripheralClkEnable (PRCM_UARTA0、PRCM_RUN_MODE_CLK);
      2. MAP_PinTypeUART (PIN_62、PIN_MODE_1);
    4. 打开终端仿真并配置以下各项:
      1. 波特率:921,600 bps
      2. 8位
      3. 无奇偶校验
      4. 1个停止位
      5. 无流量控制
    5. 将终端仿真配置为在二进制模式(而不是文本/ASCII 模式)下工作
    6. 将终端仿真配置为在"Log"模式下工作、以便将从 CC3200芯片组设备接收到的任何字符写入本地日志文件。 在此阶段、二进制字符应出现在"Terminal"窗口中。
    7. 完成后关闭日志文件、并将其发送给 TI 进行捕获后分析。

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Shlomi Itzhak、

    您是否知道 Radius 服务器使用的 TLS 版本? 是 TLSv1.0还是 TLSv1.2?

    -> 无 TLS 安全性。 在 RADIUS 服务器中,没有配置

    请在下面找到日志文件

    e2e.ti.com/.../peap0_2D00_1.log

    如果您需要更多信息、请告诉我。

    谢谢、

    Shivaprasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    日志已损坏。 您可以看到大写字母和普通字母被翻转、并且该字母不能按顺序出现。 这可能适用于其他不可读的字母。 您能否检查您是否一切正常? 如果没有正确的日志、我将无法进行大量调试。

    此外、空气嗅探器也很棒。

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果这些日志正常、请让我来看看。

    链接: https://shalakacom-my.sharepoint.com/:u:/g/personal/shivaprasad_desai_shalaka_com/EUphe9z4AQxElwyDBZ4zmysBmpAkKGhfVra9hXQM_k1Ogw?e=8LrsJi

    链接2: https://shalakacom-my.sharepoint.com/:u:/g/personal/shivaprasad_desai_shalaka_com/EfSOFRiLaB5AtbYlmEGNmUMBaxOXs45FnQ1R_LyD_myshQ?e=nn7cAV

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这些日志看起来不错、但所有日志都只是显示初始化阶段、即不显示从主机发送的命令。

    这是出于目的、还是您希望看到整个故障案例?

    您也没有提到您在主机端遇到了什么错误。 请指明吗?

    此致、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请找到以下日志。

    链接: https://shalakacom-my.sharepoint.com/:u:/g/personal/shivaprasad_desai_shalaka_com/Eb3H7ywwLSlMg9FNiWuoWDMBFh7_0qfgixgzm06gUCRxjQ?e=zY9Pe1

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为、发生的情况是、由于无法加载/cert/ca.pem 文件、因此它一开始就失败了。

    我知道您正在使用选项绕过服务器身份验证、但我认为它必须具有根 CA、不一定是正确的 CA。

    您能否尝试对该文件进行编程、即使它是假的/假的文件、然后重试?

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我没有此类证书。

    您能不能指引我访问有此类证书的链接。  

    以便我可以尽早对您进行编程和更新。

    好的、

    Shivaprasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请访问 attached.e2e.ti.com/.../ca_2D00_root.pem

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    请找到下面的日志、并告诉我您对它的评论。

    链接: https://shalakacom-my.sharepoint.com/:u:/g/personal/shivaprasad_desai_shalaka_com/EZ3_cdfVBqdOqmY_cKgJ89YBNhuRd2PnfKqjs37em8vPFA?e=eAfhfk

    提前感谢。

    好的、

    Shivaprasad。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    这个看起来不错。

    您可以连接到企业基础设施并获取 IP 地址。

    我确实看到您正在尝试获取 DNS 地址、可能失败、但它与成功的企业连接无关。

    您是否发现任何问题?

    谢谢、

    Shlomi

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    企业连接问题已解决。

    但在30/40分钟或1小时左右后、设备断开连接、无法重新连接。 因此、客户端建议切换到静态 IP。

    您能否建议静态 IP 代码的一些参考示例、或者 文档(swru368c-CC3100-CC3200 SimpleLink Wi-FiRegisteredInternet-on-a-chip 用户指南)中提到的任何步骤将得到解决?   

    谢谢、

    Shivaprasad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您的更新。

    您能否打开新问题的新主题?  最好将来使用。

    对于您的问题、我知道不重新连接的唯一原因与  SL_WLAN_General_Param_disable_ENT_SERVER_AUTH 相关、该值需要为0、以便在重新连接期间不测试证书。

    我不熟悉任何请求静态 IP 的服务器、但您可以这样做。 它应该出现在用户指南上,您也可以查看 SDK 中 power_measurement 示例的 ConfigureSimpleLinkToDefaultState()。

    请参阅以下代码片段:

    /*静态 IP 或 DHCP 配置*/
    if (g_IpV4Option = static_IP){
    IPv4.IPv4 = g_myIpAddr;
    IPv4.ipV4Mask =(_u32) sl_IPv4_VAL (255、255、255、0);
    IPv4.ipV4Gateway = g_GwIPAddr;
    IPv4.ipV4nsServer = g_GwIPAddr;
    SL_NetCfgSet (SL_IPV4_STA_P2P_CL_STATIC_ENABLE、IPCONFIG_MODE_ENABLE_IPv4、sizeof (SlNetCfgIpV4Args_t)、(_u8 *)和 IPv4);
    UART_PRINT ("已配置为静态 IP 地址\n\r");

    Shlomi