EEWORLD
电子资讯 犀利解读
技术干货 每日更新
对于socket编程,如果自己讲一大堆,会变得班门弄斧。所以还是直接进入重点好了。本来就想着在单片机跑下lwip,后来free叔叔介绍推荐了cyclonetcp,我个人觉得很好用,用起来很顺手,而且代码注释等也很简洁。
简单说下CycloneTCP,包括了TCP和SSL两部分,我主要用的是TCP部分,所以SSL部分也没仔细去看。从网络接口层上看,支持了eth、wifi、usb等常用的接口,从应用层上看,支持了16种应用层协议。对于单片机来说,已经足够很强大了。
我并没有切入到应用层上,而是在传输层上入手,因为自己项目上,用的tcp client和server比较多,所以同样在cyclontcp,我也是先试下tcp client的搭建。硬件平台是F746disco。
从底层开发上,搭建tcp client很简单,只需要调用几个socket接口即可通信。从官方的demo布局可以看到,每个demo都带了freertos,而且各个相关文件都已经给你分配好。
我在这个的基础上,建立了一些tcp client的Test任务。我在数据的收发上,自定义的自己的一个小协议。当收到帧头是7e的时候,长度一致,check么问题的时候,我就认为是一次有效数据。
开发板上的IP分配为静态IP,服务器地址是我的PC的IP地址。
接下来就是配置client端
然后在while里面不断等待收到数据,若收到一帧数据则进行处理。
以上的底层搭建已经完成。接下来就是server端。在PC上新建一个QT工程。在UI设计上简单布局几个控件。
当点击"打开连接"的时候,会轮询查询本机的IP地址并显示在ServerIP上,同时也侦听一个端口(我的是8001)使得开发板能够利用这个端口访问服务器。当服务器被客户端访问时,会发出newConnection()信号,因此为该信号添加槽函数acceptConnection()
连接成功后,每次点击相对应的控件都会使用Socket的write函数向客户端发送数据socket->write(data);
比如点击发送字符串。则对应到相对应的声明函数里。
其他功能,比如收到开发板的相关数据进行处理显示等,后续如果有时间我会继续完善。代码比较简陋,就不敢上传了
但是可以肯定的是,cyclonetcp功能强大,注释也很好,很适合学习与项目应用。接下来就是点屏的时候了。
领取专属 10元无门槛券
私享最新 技术干货