野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24030|回复: 11

求教以太网通讯

[复制链接]
发表于 2014-4-19 20:27:37 | 显示全部楼层 |阅读模式
新手!要做以太网通讯!但是野火的官方历程是打开网页的!无法抓取数据!想问一下如何移植野火的TCP/IP程序历程!
回复

使用道具 举报

发表于 2014-4-19 20:29:28 | 显示全部楼层
野火已经移植好lwip协议栈了,你直接调用lwip协议栈提供的app接口来写网络应用就可以了
回复 支持 反对

使用道具 举报

发表于 2014-4-19 20:30:19 | 显示全部楼层
用软件捉包的话,最好直接把模块和电脑用网线连接起来,使用lwip那个程序
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-19 20:31:56 | 显示全部楼层
郑倚云 发表于 2014-4-19 20:29
野火已经移植好lwip协议栈了,你直接调用lwip协议栈提供的app接口来写网络应用就可以了

现在我想发一组数据给电脑!我需要调用什么!才可以在电脑上抓到我的数据包
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-19 20:37:05 | 显示全部楼层
施叶丰 发表于 2014-4-19 20:30
用软件捉包的话,最好直接把模块和电脑用网线连接起来,使用lwip那个程序

可以具体点吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-23 16:34:23 | 显示全部楼层
写的程序,客户端的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-23 16:35:57 | 显示全部楼层
#include <stdio.h>
#include "stm32f10x.h"

#include "err.h"
#include "etharp.h"

#include "netconfig.h"
#include "bsp_SysTick.h"
#include "spi.h"


__IO uint32_t LocalTime = 0;

const static u8 TCP_TestData[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07};
const static u8 TCP_TestData1[]={0x02,0x03,0x08,0x09,0x07,0x04,0x01};


struct tcp_pcb *Check_TCP_Connect(void);

err_t TcpCli_Connected(void *arg,struct tcp_pcb *pcb,err_t err)
{

    tcp_write(pcb,TCP_TestData,sizeof(TCP_TestData),0);
                tcp_write(pcb,TCP_TestData1,sizeof(TCP_TestData1),0);

                return ERR_OK;
}

void Delay(u32 ulVal)
{
   while ( --ulVal != 0 );
}

void TCP_Client_Init()
{
                struct tcp_pcb *Clipcb;
                struct ip_addr ipaddr;
                IP4_ADDR(&ipaddr,169,254,223,245);
                Clipcb = tcp_new();
                tcp_bind(Clipcb,IP_ADDR_ANY,1026);
                tcp_connect(Clipcb,&ipaddr,1026,TcpCli_Connected);
}
void delay(u32 kcf)
{
    while(kcf--);
}
int main(void)
{        
  struct tcp_pcb *pcb;
        /*&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr; &Ograve;&Ocirc;&Igrave;&laquo;&Iacute;&oslash;SPI&frac12;&Oacute;&iquest;&Uacute;*/
        ENC_SPI_Init();                

        /*&sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;systick&pound;&not;&Oacute;&Atilde;&Oacute;&Uacute;&para;¨&Ecirc;±&Acirc;&Ouml;&Ntilde;&macr;&Ecirc;&auml;&Egrave;&euml;&raquo;ò&cedil;&oslash;LWIP&Igrave;á&sup1;&copy;&para;¨&Ecirc;±*/
        SysTick_Init();               

          /* &sup3;&otilde;&Ecirc;&frac14;&raquo;&macr;LWIP&ETH;&shy;&Ograve;é&Otilde;&raquo;*/
        LwIP_Init();
       
        TCP_Client_Init();
  while ( 1 )
        {       
                        pcb = Check_TCP_Connect();
                        if(pcb != 0)
                        {       
                                        tcp_write(pcb,TCP_TestData,sizeof(TCP_TestData),0);
                                        tcp_write(pcb,TCP_TestData1,sizeof(TCP_TestData1),0);
                                  tcp_output(pcb);
                        }               
      Delay(0xfffff);
      LwIP_Periodic_Handle(LocalTime);
  }
}

struct tcp_pcb *Check_TCP_Connect(void)
{
        struct tcp_pcb *cpcb = 0;
        unsigned char connect_flag = 0;
        connect_flag = 0;
        for(cpcb = tcp_active_pcbs;cpcb != NULL; cpcb = cpcb->next)
        {
                if(cpcb -> state == ESTABLISHED)
                {
                        connect_flag = 1;                                                  //&Aacute;&not;&frac12;&Oacute;±ê&Ouml;&frac34;
                        break;                                                                  
                }
        }

        if(connect_flag == 0)                                                          // TCP_LOCAL_PORT&Ouml;&cedil;&para;¨&micro;&Auml;&para;&Euml;&iquest;&Uacute;&Icirc;&acute;&Aacute;&not;&frac12;&Oacute;&raquo;ò&Ograve;&Ntilde;&para;&Iuml;&iquest;&ordf;
        {
                TCP_Client_Init();//&Ouml;&Oslash;&ETH;&Acirc;&Aacute;&not;&frac12;&Oacute;
                cpcb = 0;
        }
        return cpcb;       
}



回复 支持 反对

使用道具 举报

发表于 2014-4-23 17:13:13 | 显示全部楼层
罗飞 发表于 2014-4-23 16:35
#include
#include "stm32f10x.h"

调用 tcp_write程序向电脑发送数据
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-23 18:05:38 | 显示全部楼层
房宜楠 发表于 2014-4-23 17:13
调用 tcp_write程序向电脑发送数据

????怎地,可以说的完整点吗?
回复 支持 反对

使用道具 举报

发表于 2014-4-23 18:54:30 | 显示全部楼层
罗飞 发表于 2014-4-23 18:05
????怎地,可以说的完整点吗?

你按照例程来研究一下嘛,有注释的,例程没搞懂怎么后续开发呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-23 18:56:47 | 显示全部楼层
房宜楠 发表于 2014-4-23 18:54
你按照例程来研究一下嘛,有注释的,例程没搞懂怎么后续开发呢?

这个就是客户端的程序!简单的不断的发送上面的数组里面的内容!是基于野火的程序改的!
回复 支持 反对

使用道具 举报

发表于 2014-4-23 19:03:56 | 显示全部楼层
罗飞 发表于 2014-4-23 18:56
这个就是客户端的程序!简单的不断的发送上面的数组里面的内容!是基于野火的程序改的!

你使用这个程序,然后直接用网线把模块和pc连接起来,就可以抓包看数据了,不要经过路由器
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 02:18 , Processed in 0.030506 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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