OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5306|回复: 7

在使用例程ENC28J60的时候,用网络调试助手发送指令问题

[复制链接]

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-5-8
在线时间
0 小时
发表于 2015-5-8 14:08:52 | 显示全部楼层 |阅读模式
5金钱
我想通过固定的指令去对开发板进行操作,比如发送“ledon 1”,第一个LED灯就亮了,大家谁弄过这种?给下方法或者代码?

最佳答案

查看完整内容[请看2#楼]

和开发板建立起UDP或者TCP连接,然后就可以像使用串口一样的给开发板发送数据了,网络调试助手发送字符串“ledon1”,开发板接收到以后就打开LED1。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-5-8 14:08:53 | 显示全部楼层
和开发板建立起UDP或者TCP连接,然后就可以像使用串口一样的给开发板发送数据了,网络调试助手发送字符串“ledon1”,开发板接收到以后就打开LED1。
开往春天的手扶拖拉机
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-5-8
在线时间
0 小时
 楼主| 发表于 2015-5-10 16:31:11 | 显示全部楼层
回复【2楼】zuozhongkai:
---------------------------------
建立了连接,但是无法通过网络调试助手控制LED灯
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-5-11 10:40:33 | 显示全部楼层
回复【3楼】study-c:
---------------------------------
建立了连接那你总会用网络发送数据的吧,你通过网络调试助手发一串字符串,看你的开发板能不能接受到
开往春天的手扶拖拉机
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-5-8
在线时间
0 小时
 楼主| 发表于 2015-5-11 20:15:12 | 显示全部楼层
回复【4楼】zuozhongkai:
---------------------------------
数据那些开发板能接受到,也能在TFT上显示我发送的数据,但是不能通过数据控制LED灯
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2015-5-11 21:02:14 | 显示全部楼层
能接收数据那就肯定能控制的啊。
开往春天的手扶拖拉机
回复

使用道具 举报

8

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-5-8
在线时间
0 小时
 楼主| 发表于 2015-5-11 22:53:29 | 显示全部楼层
回复【6楼】zuozhongkai:
---------------------------------
但是我不知道怎么处理接受到的数据,我加了一个DealCmd
void DealCmd(struct tcp_demo_appstate *s)
{
uint8_t led;

/* 点亮LED
语法:ledon n  (n: 1 - 4) 
例如 : 
ledon 2 表示点亮LED2
*/
if ((uip_len == 7) && (memcmp("ledon ", uip_appdata, 6) == 0))
{
led = ((uint8_t *)uip_appdata)[6]; /* 操作的LED序号 */
if (led == '1')
{
LED1_ON();
s->textptr = "Led 1 On!";
}
else if (led == '2')
{
LED2_ON();
s->textptr = "Led 2 On!";
}
else if (led == '3')
{
LED3_ON();
s->textptr = "Led 3 On!";
}
else if (led == '4')
{
LED4_ON();
s->textptr = "Led 4 On!";
}
s->textlen = strlen((char *)s->textptr);
}
/* 关闭LED
语法:ledoff n  (n: 1 - 4) 
例如 : 
ledon 2 表示点亮LED2
*/
else if ((uip_len == 8) && (memcmp("ledoff ", uip_appdata, 7) == 0))
{
led = ((uint8_t *)uip_appdata)[7]; /* 操作的LED序号 */
if (led == '1')
{
LED1_OFF();
s->textptr = "Led 1 Off!";
}
else if (led == '2')
{
LED2_OFF();
s->textptr = "Led 2 Off!";
}
else if (led == '3')
{
LED3_OFF();
s->textptr = "Led 3 Off!";
}
else if (led == '4')
{
LED4_OFF();
s->textptr = "Led 4 Off!";
}
s->textlen = strlen((char *)s->textptr);
}
/* 发送数据测试 sendtest
语法:sendtest
例如 : 
ledon 2 表示点亮LED2
*/
else if ((uip_len == 6) && (memcmp("txtest", uip_appdata, 6) == 0))
{
s->state = STATE_TX_TEST;

s->textptr = test_data;
s->textlen = 1400;
}
else if ((uip_len == 6) && (memcmp("rxtest", uip_appdata, 6) == 0))
{
s->state = STATE_RX_TEST;
s->textptr = "Ok";
s->textlen = 2;
}
else
{
s->textptr = "Unknow Command!\r\n";
s->textlen = strlen((char *)s->textptr);
}
}

想用这种操作来实现,但是加上以后没用
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2015-4-26
在线时间
0 小时
发表于 2015-5-18 14:09:51 | 显示全部楼层
回复【7楼】study-c:
---------------------------------
if (uip_newdata())
{
  struct tcp_demo_appstate *s = (struct tcp_demo_appstate *)&uip_conn->appstate;
if((tcp_client_sta&TCP_CCLIENT_RECEIVE_DATA)==0)//还未收到数据
{
if(uip_len>199)
{    
((u8*)uip_appdata)[199]=0;
}     
     strcpy((char*)tcp_client_databuf,uip_appdata);          
tcp_client_sta|=TCP_CCLIENT_RECEIVE_DATA;//表示收到客户端数据
}

if (s->state == STATE_CMD)
{
//USART_OUT(USART1,"uip_newdata!\r\n");
DealCmd(s);
}   
}
试试这个,我的已经调通了,重点在这
                               if (s->state == STATE_CMD)
{
//USART_OUT(USART1,"uip_newdata!\r\n");
DealCmd(s);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 22:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表