CH579的TCP_Server例程CH57xNET_SetSocketTTL設(shè)置報(bào)錯(cuò) mStopIfError: 17

CH579的例程 NET部分TCP_Server例程測(cè)試遇到如下問題,像是內(nèi)存設(shè)置問題?

接口封裝的很簡(jiǎn)潔,說明文檔也很簡(jiǎn)單。。。。(文檔很重要)


希望大神幫助解答下,未知報(bào)錯(cuò)挺可怕的


image.png


int main(void)?

{

? ? UINT8 i = 0;

? ? SystemClock_UART1_init();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 系統(tǒng)時(shí)鐘和串口1初始化 */??

? ? i = CH57xNET_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr);? ? ? ? ? ? ? ? ? ? ? ?/* 庫(kù)初始化 */

? ? mStopIfError(i);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????/* 檢查錯(cuò)誤 */? ?

? ? PRINT("CH57xNETLibInit Success\r\n");? ?

????Timer0Init( 10000 );? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 初始化定時(shí)器:10ms */

????NVIC_EnableIRQ(ETH_IRQn);

????while ( CH57xInf.PHYStat < 2 ) {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

????DelayMs(50);

}

? ? CH57xNET_CreatTcpSocket();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 創(chuàng)建TCP Socket */

? ? PRINT("CH579 TCP server create!\r\n");? ?

? ? while(1)

? ? {

? ? ? ? CH57xNET_MainTask();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* CH57xNET庫(kù)主任務(wù)函數(shù),需要在主循環(huán)中不斷調(diào)用 */

? ? ? ? if(CH57xNET_QueryGlobalInt())CH57xNET_HandleGlobalInt(); /* 查詢中斷,如果有中斷,則調(diào)用全局中斷處理函數(shù) */

? ? }

}


//DelsyMs(50);

訂正:

DelayMs(50);?


int main(void)?

{

? ? UINT8 i = 0;

? ? ??

? ? SystemClock_UART1_init();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/* 系統(tǒng)時(shí)鐘和串口1初始化 */??

? ? i = CH57xNET_LibInit(IPAddr,GWIPAddr,IPMask,MACAddr); /* 庫(kù)初始化 */

? ? mStopIfError(i);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????? /* 檢查錯(cuò)誤 */

? ? PRINT("CH57xNETLibInit Success\r\n");? ?

????Timer0Init( 10000 );? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????/* 初始化定時(shí)器:10ms */

????NVIC_EnableIRQ(ETH_IRQn);

????while ( CH57xInf.PHYStat < 2 ) {DelayMs(50);}

? ? CH57xNET_CreatTcpSocket();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* 創(chuàng)建TCP Socket */

? ? PRINT("CH579 TCP server create!\r\n");? ?

? ? while(1)

? ? {

? ? ? ? CH57xNET_MainTask();? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /* CH57xNET庫(kù)主任務(wù)函數(shù),需要在主循環(huán)中不斷調(diào)用 */

? ? ? ? if(CH57xNET_QueryGlobalInt())CH57xNET_HandleGlobalInt();? ? /*中斷標(biāo)志查詢執(zhí)行*/

? ? }

}


?工程編譯沒問題,報(bào)錯(cuò)不變

image.png



您好,根據(jù)打印信息,應(yīng)該在創(chuàng)建Socket時(shí)出錯(cuò),檢查下Socket參數(shù)是否合法。


感謝Archer,您說的對(duì),我仔細(xì)檢查了下;


問題更正:根據(jù)打印是CH57xNET_SetSocketTTL處報(bào)錯(cuò) ,設(shè)128也是一樣報(bào)錯(cuò),應(yīng)該跟參數(shù)沒關(guān)系,是內(nèi)部函數(shù)實(shí)現(xiàn)問題?

另外,NET.LIB封裝的DHCP協(xié)議中hostname不能設(shè)置,這個(gè)函數(shù)或定義給增加下怎么樣j_0011.gif,設(shè)備名unknow不太精致



image.png


#define?RECE_BUF_LEN?536

UINT8?IPAddr[4]?=?{192,168,0,200};????????????????/*?CH579IP地址?*/
UINT8?GWIPAddr[4]=??{192,168,0,1};????????????????/*?CH579網(wǎng)關(guān)?*/
UINT8?IPMask[4]?=?{255,255,255,0};????????????????/*?CH579子網(wǎng)掩碼?*/
UINT8?DESIP[4]?=??{192,168,0,102};???????????????/*?目的IP地址?*/
UINT8?SocketId;??????????????????????????/*?保存socket索引,可以不用定義?*/
UINT8?SocketRecvBuf[4][RECE_BUF_LEN];???????????????/*?socket接收緩沖區(qū)?*/

void?CH57xNET_CreatTcpSocket(void)
{
???UINT8?i;?????????????????????????????????????????????????????????????
???SOCK_INF?TmpSocketInf;???????????????????/*?創(chuàng)建臨時(shí)socket變量?*/

???memset((void?*)&TmpSocketInf,0,sizeof(SOCK_INF));??????/*?庫(kù)內(nèi)部會(huì)將此變量復(fù)制,所以最好將臨時(shí)變量先全部清零?*/
???memcpy((void?*)TmpSocketInf.IPAddr,DESIP,4);????????/*?設(shè)置目的IP地址?*/
???TmpSocketInf.SourPort?=?2000;???????????????/*?設(shè)置源端口?*/
???TmpSocketInf.ProtoType?=?PROTO_TYPE_TCP;??????????/*?設(shè)置socekt類型?*/
???TmpSocketInf.RecvStartPoint?=?(UINT32)SocketRecvBuf;????/*?設(shè)置接收緩沖區(qū)的接收緩沖區(qū)?*/
???TmpSocketInf.RecvBufLen?=?RECE_BUF_LEN?;?????????/*?設(shè)置接收緩沖區(qū)的接收長(zhǎng)度?*/
???i?=?CH57xNET_SocketCreat(&SocketId,&TmpSocketInf);?????/*?創(chuàng)建socket,將返回的socket索引保存在SocketId中?*/
???mStopIfError(i);???????????????????????/*?檢查錯(cuò)誤?*/
??????PRINT("CH57xNET_SocketCreat?finish\r\n");
#ifdef??KEEPLIVE_ENABLE
???CH57xNET_SocketSetKeepLive(?SocketId,?1?);????????/*?開啟socket的KEEPLIVE功能(V06版本支持)?*/
#endif

???i?=?CH57xNET_SocketListen(SocketId);???????????/*?TCP連接?*/
???mStopIfError(i);??????????????????????/*?檢查錯(cuò)誤?*/
???PRINT("CH57xNET_SocketListen?finish\r\n");
???i?=?CH57xNET_SetSocketTTL(?SocketId,10?);
???mStopIfError(i);??????????????????????/*?檢查錯(cuò)誤?*/
???PRINT("CH57xNET_SetSocketTTL?finish\r\n");
}





抱歉,這里17是十六進(jìn)制,錯(cuò)誤代碼,0x17,錯(cuò)誤如下:

image.png

這里TCP Server模式下,初始化的時(shí)候打開的是偵聽端口,這里不應(yīng)該設(shè)置TTL,TCP鏈接建立后才能設(shè)置,這個(gè)例程我們會(huì)修正。

請(qǐng)將這段設(shè)置TTL代碼屏蔽使用。




j_0002.gif了解了,謝謝大佬。


也碰到同樣問題


TCP Server? 在 HandleSockInt? ? 中

if(initstat & SINT_STAT_CONNET)

{

????SetSocketTTL();

}


也是失敗,同樣報(bào)0x17


注意HandleSockInt函數(shù)里的socketid參數(shù)和CH57xNET_SetSocketTTL()函數(shù)里的socketid參數(shù),連接對(duì)象要保持一致。


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频