用ESP 8266模块AT指令开发无线通信系统

本文介绍了如何使用ESP8266模块通过AT指令开发无线通信系统,适用于初学者。作者选择了AP+STATION模式,创建了一个小的局域网,用C语言实现了WIN32下的串口通讯,包括打开串口、配置串口、创建读写线程,并给出了客户端和服务器的代码示例。
摘要由CSDN通过智能技术生成

最近一直在做关于气浮台的项目,里面有一个小环节就是需要把设备的数据传输下来,因为之前对通信几乎是小白,加上时间比较紧,凡是涉及到底层的东西都不敢碰,最后比较了一番选了ESP 8266这个模块来开发,通过AT指令进行开发,用的是C语言,运行在PC 104上(当然普通PC更没问题了),大概五天时间就做完了,下面介绍一下详细内容。


(一)ESP 8266模块介绍

这个模块的详细资料网上很容易找到,在此就不详述了,简单说几点吧。

这个模块开发有两种方式:第一种是用官方SDK来开发,适合对硬件有一定了解的朋友入手,因为这个模块本身的功能其实很强大,只用来通讯有点小题大做的感觉,但是这种方式不适合新手,入手难度有点高;第二种就是AT指令开发,很简单,拿一般的串口助手就可以调试。(注意调试的时候一定要先按回车再发送)


这个模块总共有三种工作方式:AP,STATION,AP+STATION。因为我需要完成的是多个设备数据传输,因此透传就不考虑了,这里我用的是一个模块用作热点同时开启服务器(用AP+STATION),通过串口接在终端上收数据;其他的模块通过串口接在设备上(用STATION)。相当于组建了一个小的局域网,基于TCP协议的WiFi通信。

这里再单独提一下,用AT指令开发有一个很头疼的地方在于指令的返回格式不统一,所以程序里面的判断条件会比较多。后面我会仔细的总结一下,其他的信息大家可以去找用户手册,里面对模块的介绍以及AT指令都比较完整。


(二)用C语言实现WIN 32下的串口通讯

这一步说白了就是怎么用C语言去完成串口助手最基本的功能,但是也必须要仔细,很多地方容易出错。

1. 首先打开串口,Createfile函数的具体用法在此不详述了,不熟悉的朋友可以去百度。

espCom = CreateFile("COM3", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (espCom == INVALID_HANDLE_VALUE)
{
	printf("open COM3 failed\n");
	exit(2);
}

提醒一下大家,如果设备的串口不是COM1-COM9,比如是COM10,那么函数第一个不能写成“COM10”了,得写成“\\\\.\\COM10”,因为COM10以上的串口对于文件名系统而言只是一般的文件,而非串行设备。

2. 完成串口相应的配置工作

espTimeOuts.ReadIntervalTimeout = 500;//MAXDWORD; //5000;
espTimeOuts.ReadTotalTimeoutConstant = 5000; //0;//1000;
espTimeOuts.ReadTotalTimeoutMultiplier = 500;// 0;//500;
espTimeOuts.WriteTotalTimeoutConstant = 2000;
espTimeOuts.WriteTotalTimeoutMultiplier = 500;
if (!SetCommTimeouts(espCom, &espTimeOuts))
{
	printf("写入超时参数错误\n");
	exit(3);
}
if (!SetupComm(espCom, 1024, 1024))
{
	printf("设置串口读写缓冲区失败\n");
	exit(4);
}
if (!GetCommState(espCom, &espdcb))
{
	printf("获取串口属性失败\n");
	exit(5);
}
espdcb.BaudRate = BAUD_RATE;
espdcb.ByteSize = 8;
espdcb.Parity = NOPARITY;
espdcb.StopBits = ONESTOPBI
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值