|
0.png (41.38 KB, 下載次數(shù): 109)
下載附件
2018-12-11 22:12 上傳
這段時(shí)間用STM32移植LwIP做語(yǔ)音傳輸。但是遇到一個(gè)問(wèn)題困擾許久,在使用TCP方式做一個(gè)client去連接server,由于數(shù)據(jù)量比較大經(jīng)常在連接一個(gè)多小時(shí)候就出現(xiàn)斷線而
也ping不通。接下來(lái)我們看一下這個(gè)問(wèn)題是怎么出現(xiàn)的和他的決絕方法(小白一枚,說(shuō)錯(cuò)的地方還望指正哈 。。。。共同學(xué)習(xí) 。嘻嘻 ^_^ )。
額,還沒(méi)有學(xué)操作系統(tǒng),還生活在裸奔的年代。。。 client和server采用LwIP的Raw函數(shù)編寫。連接過(guò)程采用短連接,即發(fā)送一次數(shù)據(jù)就請(qǐng)求斷開(kāi)。
我們先看一個(gè)client端的程序。
/**************************************/
以太網(wǎng)實(shí)驗(yàn),步驟
///
1.把M3接入路由。
///
2.ping實(shí)驗(yàn)。在接入相同路由的PC中,運(yùn)行CMD,輸入命令: ping 192.168.1.18
看是否能ping通,只有ping通后才能進(jìn)行后續(xù)的實(shí)驗(yàn)。
*********ping通的實(shí)驗(yàn)現(xiàn)象如下(時(shí)間可能稍有區(qū)別)***********
C:\Documents and Settings\>ping 192.168.1.18
Pinging 192.168.1.18 with 32 bytes of data:
Reply from 192.168.1.18: bytes=32 time=1ms TTL=255
Reply from 192.168.1.18: bytes=32 time=2ms TTL=255
Reply from 192.168.1.18: bytes=32 time<1ms TTL=255
Reply from 192.168.1.18: bytes=32 time=1ms TTL=255
Ping statistics for 192.168.1.18:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 2ms, Average = 1ms
******************************************************************
若不能ping通,可能是路由的限制:
可嘗試把M3與PC直接用網(wǎng)線相連, 再 ping 192.168.1.18 ,
如果還不通,排除網(wǎng)線及接觸問(wèn)題后,可能是代碼被修改或板子故障。
///
3.telnet實(shí)驗(yàn)。ping通后,輸入命令: telnet 192.168.1.18
使用用戶名:wildfire 密碼:123456 登錄。
登錄成功后可選兩條指令:LED1_ON 和 LED1_OFF 用于遠(yuǎn)程控制。
***************正常實(shí)驗(yàn)現(xiàn)象如下****************************************
屏幕輸出 Please enter your username:
鍵盤輸入 wildfire
屏幕輸出 Please enter your password:
鍵盤輸入 123456
屏幕輸出 Please enter command:
鍵盤輸入 LED1_ON
屏幕輸出 Success,LED1 status is ON!
屏幕輸出 Please enter command:
鍵盤輸入 LED1_OFF
屏幕輸出 Success,LED1 status is OFF!
屏幕輸出 Please enter command:
************輸入命令LED1_ON后,板上的LED1會(huì)點(diǎn)亮,輸入LED1_OFF后,LED1熄滅****************
(win7系統(tǒng)沒(méi)有telnet,需要在網(wǎng)上下載該程序進(jìn)行實(shí)驗(yàn))
////
4.瀏覽器實(shí)驗(yàn)。打開(kāi)瀏覽器,在地址欄輸入 http://192.168.1.18
連接成功后,可看到登錄界面。輸入:
*****************************************************
用戶名:wildfire
密碼 :123456
*****************************************************
登錄成功后,可點(diǎn)擊LED控制界面對(duì)M3板上的LED1進(jìn)行控制。
(如果不是原版代碼,該網(wǎng)頁(yè)上的野火旗艦店網(wǎng)址鏈接可能會(huì)被惡意篡改。)
單片機(jī)源程序如下:
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @date 2013-xx-xx
- * @brief enc28j60+lwip測(cè)試,具體測(cè)試步驟參考工程里面的文件readme.txt
- */
- /* Includes ------------------------------------------------------------------*/
- #include <stdio.h>
- #include "stm32f10x.h"
- #include "stm32f10x_usart.h"
- #include "err.h"
- #include "etharp.h"
-
- #include "netconfig.h"
- #include "bsp_usart1.h"
- #include "bsp_SysTick.h"
- #include "spi.h"
- #include "bsp_led.h"
- #include "cmd.h"
- #include "httpd.h"
- #include "DAC.h"
- #include "TIM2delay.h"
- #include "edcode.h"
- #include "ADPCM.h"
- #include "ADC.h"
- /*****************************************************************************************************************************/
- __IO uint32_t LocalTime = 0;
- /* this variable is used to create a time reference incremented by 10ms */
-
- /*
- * 函數(shù)名:main
- * 描述 :主函數(shù)
- * 輸入 :無(wú)
- * 輸出 : 無(wú)
- * 調(diào)用 :
- */
- int main(void)
- {
- /*初始化串口*/
- USART1_Config();
- /*初始化 以太網(wǎng)SPI接口*/
- ENC_SPI_Init();
- /*初始化systick,用于定時(shí)輪詢輸入或給LWIP提供定時(shí)*/
- SysTick_Init();
- ADC1_Init();//ADC 初始化 采用DMA方式
-
- printf("\r\n************************\r\n");
-
- /* 初始化LWIP協(xié)議棧*/
- LwIP_Init(); //192.168.1.18
- /*初始化web server 顯示網(wǎng)頁(yè)程序*/
- httpd_init();
- DAC_init(); //DAC初始化
-
-
- timer_init(32);//定時(shí)器初始化 開(kāi)始播放
- /* Infinite loop */
- while ( 1 )
- {
- /*輪詢*/
- LwIP_Periodic_Handle(LocalTime);
- decoding( ); //解碼
-
- encoding( );
-
-
-
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
LwIP client server.7z
(630.54 KB, 下載次數(shù): 60)
2018-12-11 22:10 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|