This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC3220S network_terminal例程

Other Parts Discussed in Thread: CC3220S, CC3200

您好,按您说的,把路由器的DHCP打开了,应该没什么问题,还有您说的要把另一个设备连到路由器,不知道您指的是通过有线lan口连到设备还是无线连wifi就可以,因为我之后应该是要通过路由器的lan口连出来一根线接到可以读出传输的数据的板子上,所有我在这里试了下将路由器通过lan口连接到电脑;运行程序,做了以下几个例子:

这是send的参数,

我理解的u、nb和V这三个参数的意思是不设置的话就分别是TCP、blocking、IPv4;

有个小问题,server的ip在这里指的应该就是路由器的ip吧,不然感觉板子并没有和路由器有连接,或者是我理解错了,还是说是另一个最终要从路由器里获得数据的设备的ip呢?

第一个测试的send:作为client,server的ip地址设的是路由器的ip,后面显示发送成功,在这个里面u、nb、V都进行了设置,

第二个测试就是只把u、nb、V去掉了,然后显示有错误;不知道是tcp还是ipv4或者什么别的原因,

第三个把电脑和路由器断开了,然后server ip写的是电脑的,设置了u、nb、V,但还是显示成功,按理说电脑此时跟路由器没有连接啊,但为什么显示发送成功,还是说我这么设置的意思是直接把数据不通过路由器而是通过电脑的ip直接发送给了电脑?

主要就是有几个参数的意义不是很确定,有什么办法可以查看最终发出去的具体数据是什么吗?

谢谢!

  • 我建议你先看一下TCP和UDP的基础知识,UDP是没有ACK的,只要发出去了,不管对方有没有收到,都是成功。TCP会要求对方有ACK。
  • 嗯嗯,我知道了,谢谢!还有一个问题就是程序开始是通过cmd_prompt( )这个函数来检测用户在终端上的输入的,好像主要是通过获取app_CB.CmdBuffer里的内容来实现的,这些都需要用户在终端上手动输入来实现,那么比如我想设备一运行就自动进入我想要执行的功能,可以通过直接在程序里把在终端上输入的信息写入这个CmdBuffer来实现吗?
  • 可以的,你去改一下getcmd这个函数,让它不要从串口读,直接传参数给它就好。
  • 好的,谢谢您了,我试试看!
  • 您好,我试着改了int GetCmd(char *pcBuffer, unsigned int uiBufLen)这个函数,把在串口输入的字符串直接赋给了GetCmd的pcBuffer这个参数,比如串口输入的功能是send -c 192.168.1.101 -u -p 5001 -n 1000;我直接把字符串给了pcBuffer,但是一运行就是显示no such command。您能跟我说说这段程序具体该怎么写呢,下面是这个函数原本的代码。刚开始学,不是很懂为什么读或者写的后面字节数都是1.含义不是很懂,

    还有就是,我现在有两块CC3220S板子,想都作为client连接路由器AP,一个实时发送数据,一个实时接收数据,实现两块板子直接的实时数据收发,这个功能send,和recv可以做到吗?两个参数如下:

    两个都选 -c,然后ip应该就是路由器的ip吧,在发送和接收前我也都用wlanconnect把它们都连接到了路由器,然后分别运行在send和recv模式下,但是接收不到数据包,是我对参数的理解有什么问题吗?

    或者除了这样,还有什么方法能实现两块板子之间数据的实时收发呢,后期是想给其中一块板子接入脉冲信号,然后将这个信号实时的无线传输给另一块板子进行接收,您对这个有什么建议吗?

    十分感谢!

  • polling串口是一个字符一个字符去读的,你直接传参数的话就不用这样了,直接一个字符串参数传了就好了。你可以对比看一些send和recv对应的代码,每个参数的处理的代码看一下。
  • 好的,谢谢,还有一个问题就是,我最终是要实现这两块cc3220s板子之间无线实时传输数据,那可以不要路由器吗,直接一块板子作STA一个作AP,然后实现收发功能吗?

  •     您说,如果我把network_terminal.c里的mainthread函数的最后,cmd_prompt()这个去掉,不去检测串口的指令,而直接调用实现我需要功能的相关函数,比如,先初始化,然后将设备配置到默认状态,然后设为STA,然后连接路由器AP,再调用发送或接收数据的相关函数,一块板子发送数据到路由器,,然后另一块板子通过连接路由器实时接收,然后路由器和收发相关的参数直接在相关函数里定义好,您觉得这个思路可行吗?

  • 可以的,这样的逻辑没问题。
  • 你好,我现在做到可以一运行就开始发送数据,但是运行一次之后,如果不手动把板子复位,第二次运行的话就会显示wlandisconnect,不能在该状态下发送数据,复位一下再运行就显示可以发送;想问一下在传输数据之前,板子肯定要连接上路由器AP,但是我看了一下send部分的函数,它里面感觉只涉及了路由器的ipv4或ipv6的ip参数,不知道实际有没有连接到路由器,再一个就是板子我之前都用network_terminal这个程序执行过wlanconnect这个功能,连接过路由器,还是说板子已经保存了路由器的信息了,再一运行send功能它就自动连上AP了?或者说我得在把send的相关参数传给getcmd之前先把wlanconnect连接路由器AP的相关参数传给getcmd,先执行这个,然后再传send的参数?
  • 你好,我用TCP client发送数据给路由器老显示不成功,这里显示出来SOCK一直是0,看这个函数的说明,如果成功的话应该返回一个正数,不知道是什么原因,还有就是如果用tcp传数据给路由器的话,确定不需要特别对路由器做什么设置吗,发送后如果路由器接收成功它会自动返回ACK吗?谢谢!

  • 1. 你在使用socket之前必须要保证WIFI是连接上的
    2. 你发送TCP数据给路由器的话,你在路由器端不能创建TCP SERVER吧?如果没TCP SERVER你是不能发数据的
    3. SOCK 0没问题
  • 您好,我之前也感觉是这样,所以我现在在使用socket之前确定板子是连上了路由器wifi的,然后我也觉得路由器端肯定要设置的,但不知道具体能不能设置TCP Server,怎么设置,在网上找了一些方法,不知道是不是针对这个的,有点迷茫,

    不知道这个是不是?如果路由器不能设置TCP Server的话,那如果拿另外一块cc3220板子作为server是否可行呢?如果将来有很多个板子的话,其中一个作AP接收数据,其它的都作STA来连接这一个来实时发送数据给这一块板子,通过这一块板子解析出来数据又是否可行呢?谢谢

  • 路由器的虚拟服务器和你需要的服务器是两个概念吧。你用另一个板子去做TCP server吧,或者用电脑也可以啊。
  • 谢谢!我是因为之前找到一篇基于CC3200作无线数据传输的一篇文章以为可以直接让板子连上路由器然后发数据给路由器,最后通过另一块板子把数据从路由器里接收出来的,我想cc3220应该也可以就试了下,

    1.那所以通过路由器来作为中间连接部分来无线传输数据是不可行的吗?或者说市面上有卖可以直接作为TCP server的路由器或者吗?

    2.用两个cc3220的话,那就一个作为STA,一个AP,STA连上AP,然后将两块板子一块运行在TCP SERVER,一块运行在TCP client就可以进行无线数据收发了吗?

  • 1. 一般没有直接做TCP SERVER的路由器
    2. 这样是可以的。
  • 哦哦,谢谢!那如果像您说的用电脑端作TCP server,在网上找到一个网络调试助手,不知道能不能用这个将电脑设置为TCP server使用。

    1. 具体应该怎么操作,我才能看到板子作为TCP client是否把数据发送过去了呢,

    2.还有就是此时的service ip就是电脑的ip吧,

    3. 电脑和板子此时要通过wifi进行连接吗?是都连到同一个AP吗?比如路由器?

  • 1. 你发的数据应该会显示在你的网络助手上的
    2. 是的
    3. 是的,连到路由器。
  • 你好,谢谢您了,现在我这边网络调试助手可以收到我设置要发送的数据了,下一步,我想改变一下传输速率,这个应该怎么实现呢?在程序里没有找到相关设置数据发送频率的部分,我想把数据发送的速度在不丢失数据的情况下设置到最大,应该怎么做呢?十分感谢!
  • 那你尝试一下TCP看看,它有重传的。
  • 您好,我也在看CC3220S network_terminal例程,有个疑问,具体如下:
    测试send,这个命令发送后串口终端显示send x packets successfully,但是我的网络调试助手并未受到数据啊?send 这个指令能发送任意数据到指定服务器吗?比如我想发送hello到我的网络调试助手,有没有相关的例程推荐一下,谢谢