DSP 开发例程(5): tcp_server

目录

  • DSP 开发例程(5): tcp_server
    • 创建工程
    • 源码编辑
      • tcp_echo.c
      • helloWorld.c
    • 调试
    • 说明

DSP 开发例程(5): tcp_server

此例程实现在 EVM6678L 开发板上创建 TCP Server进程, 完成计算机与开发板之间的 TCP/IP 通信. 例程源码可从我的 gitee 仓库上克隆或下载. 点击 DSP 开发教程(0): 汇总查看其他例程说明.

创建工程

此例程在官方提供的UDP通信例程基础上修改.

  • Project Explorer 视图中, 右键选择: Import

在这里插入图片描述

  • 选择 Existing CCS Eclipse Projects, 点击 Next.

在这里插入图片描述

  • 点击 Browse, 选择 mcsdk_###_#\examples 所在目录, 勾选 helloworld_evmc6678l 工程, 勾选 Copy projects into workspace, 点击 Finish.
    在这里插入图片描述
  • 复制 mcsdk_###_#\examples\ndk\helloWorld 目录下的四个 .c 源文件.
    在这里插入图片描述- 选择刚导入的工程, 右键选择: Paste, 粘贴刚刚复制的四个 .c 源文件到此工程中. 在弹出的 Question 对话框中点击 Yes To All, 完成替换.

在这里插入图片描述
在这里插入图片描述

  • 将此工程重命名为: tcp_server.

在这里插入图片描述
在这里插入图片描述

源码编辑

tcp_echo.c

  • 新建名为 tcp_echo.c 的源文件.
    在这里插入图片描述

在这里插入图片描述

  • 文件内容如下:
#include <ti/ndk/inc/netmain.h>int dtask_tcp_echo(SOCKET s, UINT32 unused)
{struct timeval to;int I;char *pBuf;HANDLE hBuffer;(void)unused;// Configure our socket timeout to be 5 secondsto.tv_sec = 5;to.tv_usec = 0;setsockopt(s, SOL_SOCKET, SO_SNDTIMEO, &to, sizeof(to));setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, &to, sizeof(to));I = 1;setsockopt(s, IPPROTO_TCP, TCP_NOPUSH, &I, 4);for (;;){I = (int)recvnc(s, (void **)&pBuf, 0, &hBuffer);// If we read data, echo it backif (I > 0){if (send(s, pBuf, I, 0) < 0)break;recvncfree(hBuffer);}// If the connection got an error or disconnect, closeelsebreak;}fdClose(s);// Return "0" since we closed the socketreturn (0);
}

其中, dtask_tcp_echo() 完成 TCP 数据的收发.

这段代码可以在 ti\ndk_###_#\docs\spru524i.pdf 的 5.4.2 节 中找到.

helloWorld.c

  • 打开 helloWorld.c 文件.
  • 在其中添加 dtask_tcp_echo() 的外部声明.
extern int dtask_tcp_echo(SOCKET s, UINT32 unused);

在这里插入图片描述

  • 修改 NetworkOpen() 函数, 将 dtask_udp_hello() 函数句柄添加到守护进程中.
static void NetworkOpen()
{// Create our local serverhHello = DaemonNew( SOCK_STREAMNC, 0, 7, dtask_tcp_echo,OS_TASKPRINORM, OS_TASKSTKNORM, 0, 3 );
//    hHello = DaemonNew( SOCK_DGRAM, 0, 7, dtask_udp_hello,
//                       OS_TASKPRINORM, OS_TASKSTKNORM, 0, 1 );
}

在这里插入图片描述

  • 查看计算机的以太网IP, 将 开发板的IP 修改到同一个网段.(此例程中, 我的IP为192.168.0.11).
    在这里插入图片描述
    保存上述修改, 并编译工程.

调试

  • EVM6678L 开发板 通过网线与 计算机连接.
  • 连接仿真器.
  • 开发板上电, 导入程序并运行. 此时在 Console 窗口能看到如下信息.
    在这里插入图片描述
  • 打开 命令提示符 窗口, 运行 ping 命令, 查看与开发板的网络连接是否正常.
    在这里插入图片描述
  • 打开 tera term, 选择 TCP/IP连接, 修改 HostLocalIPAddr设置的地址, TCP端口设置为 7. (也可以使用 putty 或其他测试工具进行连接.)

在这里插入图片描述

  • 选择菜单: Setup | Terminal, 勾选 Local echo.
     wo'r
  • 在终端中输入一串字符后回车, 可以看到 开发板 TCP 服务进程回传的字符串.自此说明 TCP Server 能够正常运行.
    在这里插入图片描述

说明

  • DaemonNew() 的第三个参数为 监听端口, 我们可以修改它来指定服务器端口.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/176198.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

组件化npm包打包和使用

背景&#xff1a;本地环境对功能组件提取&#xff0c;开发环境下通过本地路径引用&#xff0c;发布模式下走npm包引用 1、项目下新建packages/HelloWorld文件夹&#xff0c;在此文件夹下运行终端 npm init 新建packages/HelloWorld/index.vue文件 新建packages/HelloWorld/ind…

「完美修复」concrt140.dll丢失的修复方法

concrt140.dll是一个动态链接库文件&#xff0c;它是Microsoft Visual C 2015 Redistributable的一部分。这个文件通常位于Windows系统的System32文件夹中&#xff0c;它提供了一些用于多线程编程的函数和类。当你在运行某些程序时&#xff0c;系统会调用这个文件中的函数来执行…

VR全景图片如何制作?揭秘VR全景图片制作全流程

引言&#xff1a; VR全景图片是一种以全景视角为基础的图片制作技术&#xff0c;能够呈现出更为真实、立体的视觉体验。通过VR全景图片&#xff0c;观众可以360环顾四周&#xff0c;仿佛身临其境&#xff0c;提供了一种全新的感官体验&#xff0c;那么如何制作出令人满意的全景…

数据库-用户权限管理

创建用户&#xff1a; create user testlocalhost identified by 123456; create user 创建用户的固定开头 testlocalhost test为用户名&#xff0c; localhost:新建用户可以在哪些主机上登录&#xff0c;即使可以使用IP地址&#xff0c;网段主机名都可以 identified by 1…

【AIFEM案例分析】药柱随机响应分析

AIFEM是由天洑自主研发的一款通用的智能结构仿真软件&#xff0c;助力用户解决固体结构相关的静力学、动力学、振动、热力学等实际工程问题&#xff0c;软件提供高效的前后处理工具和高精度的有限元求解器&#xff0c;帮助用户快速、深入地评估结构的力学性能&#xff0c;加速产…

PHP在线客服系统平台系统源码+完全开源 带完整的搭建教程

在线客服系统已经成为企业与用户进行实时沟通的重要工具。PHP作为一种流行的服务器端脚本语言&#xff0c;具有高效、稳定和易用性等优点&#xff0c;因此被广泛应用于在线客服系统的开发。今天罗峰来给大家介绍一款PHP在线客服系统平台系统源码&#xff0c;源码完全开源&#…

ChatGPT扩展系列之ChatExcel

文章目录 ChatGPT扩展系列之ChatExcel对某一列的文字进行处理对数据进行排序对数据进行计算微软官方又推出Excel AI插件ChatGPT扩展系列之ChatExcel 自从ChatGPT很空出世之后,很多基于ChatGPT的应用便如雨后春笋般应用而生,这些应用的底层本质就是利用了ChatGPT对自然语言的…

SpringCloud(五) Eureka与Nacos的区别

SpringCloud(二) Eureka注册中心的使用-CSDN博客 SpringCloud(四) Nacos注册中心-CSDN博客 在这两篇博文中我们详细讲解了Eureka和Nacos分别作为微服务的注册中心的使用方法和注意事项,但是两者之间也有一些区别. 一, Nacos实例分类 Nacos实例分为两种类型: 临时实例:如果实例…

解决proteus仿真stm32,IIC通讯,IIC DEBUG无法显示从机应答信号的问题(问题情况为在8位数据后应答位显示?)

1、错误现象 错误现象如下&#xff0c;在IIC数据传输8位数据后&#xff0c;IIC DEBUG的应答位无法显示应答位 2、错误原因 我们打开信号传输的示波器&#xff0c;直接去查看IIC从机校验位的数据波形&#xff0c;可以看到从机示波器显示的的波形为半高ACK&#xff0c;那错误原…

在python中加载tensorflow-probability模块和numpy模块

目录 操作步骤&#xff1a; 注意&#xff1a; 问题&#xff1a; 解决办法&#xff1a; 操作步骤&#xff1a; 在虚拟环境的文件夹中&#xff0c;找到Scripts文件夹&#xff0c;点击进去&#xff0c;找到地址栏&#xff0c;在地址栏中输入cmd&#xff0c;进入如下界面。 输…

[LeetCode]-27. 移除元素-26.删除有序数组中的重复项-88.合并两个有序数组

目录 27.移除元素 题目 思路 代码 26. 删除有序数组中的重复项 题目 思路 代码 88.合并两个有序数组 题目 思路 代码 总结 27.移除元素 27. 移除元素 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/remove-element/description/ 题目 给你一…

新建包含cuda和cudnn的docker

背景&#xff1a;服务器的cudnn版本太低了&#xff0c;没有权限去修改。故新建包含cuda和cudnn的docker 步骤 一、拉取镜像及创建docker 拉取相关的镜像 从镜像列表选出相关版本的镜像https://gitlab.com/nvidia/container-images/cuda/blob/master/doc/supported-tags.md …

在全新ubuntu上用gpu训练paddleocr模型遇到的坑与解决办法

目录 一. 我的ubuntu版本![在这里插入图片描述](https://img-blog.csdnimg.cn/297945917309494ab03b50764e6fb775.png)二.首先拉取paddleocr源代码三.下载模型四.训练前的准备1.在源代码文件夹里创造一个自己放东西的文件2.准备数据2.1数据标注2.2数据划分 3.改写yml配置文件4.…

皮肤渲染方法总结

一、皮肤次表面光照 HDRP用的延迟管线&#xff0c;镜面和散射分开进行计算 UE有透射开启和关闭的效果 &#xff08;一&#xff09;镜面反射 BRDF和Kelemen方法 &#xff08;二&#xff09;次表面散射与透射 1.散射&#xff1a;BRDF与BRSSDF&#xff08;从反射点附近的点进行…

MES 的价值点之动态调度

随着数字化技术的发展&#xff0c;为制造企业的生产计划提供了更多的便利。但在实际生产管理过程中&#xff0c;企业的生产计划不管做的多么理想&#xff0c;还是可能会因诸多的扰动因素造成执行与计划差异&#xff0c;这时就需要通过一些动态调整方案去适应新的生产要求与环境…

LeetCode刷题之 存在重复元素(题目分析➕源代码)

题目链接&#x1f517;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 1. 题目分析 本题是要找到数组中的重复元素&#xff0c;所以我们分析出一下几点&#xff1a; 1. bool是一种数据类型&#xff0c;true是非0值&#xff0c;false是0.。 2. 数组…

网络协议--TCP的成块数据流

20.1 引言 在第15章我们看到TFTP使用了停止等待协议。数据发送方在发送下一个数据块之前需要等待接收对已发送数据的确认。本章我们将介绍TCP所使用的被称为滑动窗口协议的另一种形式的流量控制方法。该协议允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必…

因存在色情内容,夸克被罚50万元

媒体经济的繁荣、自媒体、直播等各种形式的信息传播疯狂发展&#xff0c;但是各种形式的信息资源大规模生产时&#xff0c;“色情”&#xff0c;“暴力”的图像和视频不可控的滋生&#xff0c;特别是某些 APP 或浏览器。一旦打开&#xff0c;满屏都是“哥哥&#xff0c;快来啊”…

prometheus监控kafka

一、前言 关于对kafka的监控&#xff0c;要求高的话可以使用kafka-exorter和jmx-exporter一起收集监控数据&#xff0c;要求不高的情况下可以使用kafka-exporter收集监控数据即可 二、部署 kafka-exporter 部署kafka-exporter&#xff0c;我是在k8s集群中部署的 编辑yaml文件…

竞赛选题 深度学习图像风格迁移

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…