共2条
1/1 1 跳转至页
问
大家都在说ZLG/IP有问题.
而像我这样对ZLG的依赖性很大的人来说,用ZLG/IP就是不用考虑的选择(没有能力和精力去选择别的CPU和TCP/IP协议栈).我想像我这样的人可能不在少数.
大家看看,能不能互相帮助,把ZLG/IP改造好,主要是把已有的源代码中的错误找出来,利人利已.
贴一个前人找到的错误(网友lizhenARM):
源代码在Ethernet.c文件的Rec_Packet函数中:
----
WriteToNet(0x0b,tmp[0]
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]);
//RSCR0写入读取字节计数低字节//read count low;
应更改为:
WriteToNet(0x0b,tmp[1]>>8&0x00ff);
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]&0x00ff); //RSCR0写入读取字节计数低字节//read count low;
---
我也找了一个,不知对不对:
源代码在IP.c文件的IP_PROCESS()函数中
----
uint8 IP_PROCESS(uint8 * RecData,uint8 num)
{
static temp=0;
---
---
temp++;
if(temp>=MAX_REC_BUFF)
temp=1;
---
---
在这个函数中,局部变量temp不可能大于MAX_REC_BUFF,因为在进入函数时已将temp清0了.所以TEMP没有存在的意义的
------
答 1: !static temp=0;
有意义,temp是静态局部变量(static),它和全局变量差不多,只是它只能局部访问! 答 2: ???楼主搞错了这个变量的用法了 答 3: 是啊!谢谢了!读书,不认真啊! 答 4: -在用ZLG/IP时出现两个问题:
背景: 只用TCP任务.用开发板做客户机,PC做服务器.
1 只调用一次Arp_Request()无法获得对的MAC
2 连续传数会掉线,用ENTHERREAL抓包查看,双方并没有关掉连接,那应是应答出了问题.
高手能指点一下,怎样进行改进吗?
周公说ZLG/IP只要稍加修改就可实用,看来还要再努力啊! 答 5: 我第一次尝试tcp不是很成功zlgip代码写的很乱,后来我改用zlip 答 6: 是校验和出错,正在想,出错了怎么办? 答 7: -- while(ExPtr!=NULL)
{
/*
写数(IP,TCP,DATA)
问题: 如果数据为单个的怎么办????
*/
TEPTR = ExPtr->DAPTR;
for(ii=0;ii<((ExPtr->length+1)/2);ii++)
{
send_buff.bytes[0] = *TEPTR;
TEPTR++;
send_buff.bytes[1] = *TEPTR;
TEPTR++;
WriteToNet(0x10,send_buff.words);
}
ExPtr = ExPtr->STPTR;
}
如果发的数是单个的怎么办,这个段代码,没看懂,有人能指点一下吗?
而像我这样对ZLG的依赖性很大的人来说,用ZLG/IP就是不用考虑的选择(没有能力和精力去选择别的CPU和TCP/IP协议栈).我想像我这样的人可能不在少数.
大家看看,能不能互相帮助,把ZLG/IP改造好,主要是把已有的源代码中的错误找出来,利人利已.
贴一个前人找到的错误(网友lizhenARM):
源代码在Ethernet.c文件的Rec_Packet函数中:
----
WriteToNet(0x0b,tmp[0]
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]);
//RSCR0写入读取字节计数低字节//read count low;
应更改为:
WriteToNet(0x0b,tmp[1]>>8&0x00ff);
//RSCR1写入读取字节计数高字节//read count high
WriteToNet(0x0a,tmp[1]&0x00ff); //RSCR0写入读取字节计数低字节//read count low;
---
我也找了一个,不知对不对:
源代码在IP.c文件的IP_PROCESS()函数中
----
uint8 IP_PROCESS(uint8 * RecData,uint8 num)
{
static temp=0;
---
---
temp++;
if(temp>=MAX_REC_BUFF)
temp=1;
---
---
在这个函数中,局部变量temp不可能大于MAX_REC_BUFF,因为在进入函数时已将temp清0了.所以TEMP没有存在的意义的
------
答 1: !static temp=0;
有意义,temp是静态局部变量(static),它和全局变量差不多,只是它只能局部访问! 答 2: ???楼主搞错了这个变量的用法了 答 3: 是啊!谢谢了!读书,不认真啊! 答 4: -在用ZLG/IP时出现两个问题:
背景: 只用TCP任务.用开发板做客户机,PC做服务器.
1 只调用一次Arp_Request()无法获得对的MAC
2 连续传数会掉线,用ENTHERREAL抓包查看,双方并没有关掉连接,那应是应答出了问题.
高手能指点一下,怎样进行改进吗?
周公说ZLG/IP只要稍加修改就可实用,看来还要再努力啊! 答 5: 我第一次尝试tcp不是很成功zlgip代码写的很乱,后来我改用zlip 答 6: 是校验和出错,正在想,出错了怎么办? 答 7: -- while(ExPtr!=NULL)
{
/*
写数(IP,TCP,DATA)
问题: 如果数据为单个的怎么办????
*/
TEPTR = ExPtr->DAPTR;
for(ii=0;ii<((ExPtr->length+1)/2);ii++)
{
send_buff.bytes[0] = *TEPTR;
TEPTR++;
send_buff.bytes[1] = *TEPTR;
TEPTR++;
WriteToNet(0x10,send_buff.words);
}
ExPtr = ExPtr->STPTR;
}
如果发的数是单个的怎么办,这个段代码,没看懂,有人能指点一下吗?
共2条
1/1 1 跳转至页
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |
我要赚赏金打赏帖 |
|
|---|---|
| 在FireBeetle2ESP32-C5上实现温湿度检测和显示被打赏¥20元 | |
| 在FireBeetle2ESP32-C5上实现光照强度检测及显示被打赏¥21元 | |
| 以FireBeetle2ESP32-C5实现数据识读播报被打赏¥19元 | |
| 【STM32F103ZET6】14:实测STM32F1的串口输出任务的挂起与恢复功能被打赏¥27元 | |
| Chaos-nano在压力容器监控系统中的项目应用被打赏¥23元 | |
| 基于FireBeetle2ESP32-C5的WS2812B彩色灯带控制被打赏¥21元 | |
| SWM221CBT7显示开发板驱动TFT显示屏被打赏¥19元 | |
| SWM221CBT7显示开发板驱动OLED屏显示被打赏¥19元 | |
| SWM221CBT7显示开发板及其使用被打赏¥20元 | |
| 揭秘Chaos-nano:ArduinoProMini轻量级操作系统开发框架深度解析与实战应用被打赏¥19元 | |
我要赚赏金
