使用TCP+串口与板子进行网络通信

最近做了一个嵌入式的project,大概要求就是做一个client端,一个sensor端,两者通过TCP/UDP进行通信,然后在client端输入不同的命令sensor需做出不同的处理,此处理可以用模拟的方法进行,比如要做一个温度传感器,则可以在sensor里写个随机数生成器,最后将client的c代码封装成dll,做出一个GUI界面程序。

我们的主要解决方法如下:
1.sensor和client端的通信我们第一次采用的是UDP,但由于TCP会通过三次握手建立连接,因此相比UDP更加可靠,而且本项目要实现的是温度采集,并不需要传输大量数据,所以对传输速度要求并不是太高。鉴于以上情况,我们采用了TCP通信(我其实懒得改,但赵同学坚持采用TCP,最后也是由赵同学完成了这部份任务,在此特别感谢赵同学的辛苦付出,哈哈)。
2.关于温度采集,刚开始我们采用的是产生随机数的方法得到温度值,但因为我寒假的时候刚好买了个51,上面恰好带有DS18B20,所以奈不住想试试的心,就在sensor里调用API写了个串口跟板子进行通信。
3.GUI,此处不是我做的,等我同学写出来后我再更新,哈哈

然后这个project还有两个不足:一是我用的51板子,而大多数同学都只有老师给的stm32,所以后面有时间的话我会做个32的程序来,二是串行通信原理的可靠性改进,主要是帧格式定义、组装与解析这一部分还没有做,打算在第三次迭代时把这部分做了,然后我会将源码update到gitee上,后面的改进也会及时更新到上面去,大家有兴趣的可以看看。
gitee连接

最后直观显示一下我们实现的功能:
(1)第一次输入除"start"之外的命令时,会提示“Please press ‘start’”,直到输入为"start",显示“sensor start!”,同时板子上的D1亮,表示开启成功
使用TCP+串口与板子进行网络通信_第1张图片
使用TCP+串口与板子进行网络通信_第2张图片
使用TCP+串口与板子进行网络通信_第3张图片使用TCP+串口与板子进行网络通信_第4张图片
(2)输入过"start"后,如果输入"init",则会对板子初始化,即数码管全灭,若输入"read",板子上的数码管会显示温度(因为最近天气比较冷,所以默认温度大于24度就报警),同时也会把温度值送给client端,若输入其他命令,则显示“command dose not exist"
使用TCP+串口与板子进行网络通信_第5张图片
使用TCP+串口与板子进行网络通信_第6张图片
(3)若输入"quit",则显示"quit!",同时数码管和D1灯全灭
使用TCP+串口与板子进行网络通信_第7张图片使用TCP+串口与板子进行网络通信_第8张图片

你可能感兴趣的:(嵌入式,串口通信,嵌入式,udp,tcpip)