使用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亮,表示开启成功
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
(2)输入过"start"后,如果输入"init",则会对板子初始化,即数码管全灭,若输入"read",板子上的数码管会显示温度(因为最近天气比较冷,所以默认温度大于24度就报警),同时也会把温度值送给client端,若输入其他命令,则显示“command dose not exist"
在这里插入图片描述
在这里插入图片描述
(3)若输入"quit",则显示"quit!",同时数码管和D1灯全灭
在这里插入图片描述在这里插入图片描述

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值