我想用C51單片機和ESP8266做一個數據輸出端和數據接收端。有沒有大佬做過這塊的開發,看到網上的教程主要是以接收信息為主的,很少有發送信息出去的。自己試著編了一下,在“AT+CIPSEND=0,8”這里遇到了問題。我想通過ESP8266定時一次一次地從一個八位數組中發送數據出去。接收端同樣用ESP8266和C51的組合接收。 我現在的問題是,編完ESP初始化程序之后,想用AT+CIPSEND=0,8來輸出,但是,不知道怎么控制延時,總是會提醒busy,或者,不能輸出我數組的內容,想問大佬們這里要怎么改(標紅的代碼區)
顯示的串口輸入值是這樣的:
01.png (5.06 KB, 下載次數: 58)
下載附件
發送區出現的代碼,不能識別到數組
2018-3-28 21:05 上傳
接收客戶端的接收結果是這樣的:
02.png (1.15 KB, 下載次數: 52)
下載附件
變成了AT+CIPSEND=0,8字符串的循環輸出,而不是我要的數組輸出
2018-3-28 21:05 上傳
這個是我的代碼,大佬們能看看要怎么改嗎?
#include "reg51.h"
unsigned char i = 0;
unsigned char *p;
unsigned char Buffer[] = {0x05,0x04,0x03,0x02,0x01,0x43,0x42,0x41,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81};
unsigned char RST[]="AT+RST\r\n";//重啟模塊
unsigned char LYMS[]="AT+CWMODE=3\r\n";//設置WIFI模塊為station+AP模式
unsigned char SZLY[]="AT+CWSAP=\"TRAFFIC\",\"0123456789\",11,0\r\n";/*設置WIFI模塊連接WIFI的名稱與密碼*/
unsigned char KQFU[]="AT+CIPSERVER=1,5000\r\n";//連接服務器
unsigned char TCMS[]="AT+CIPMODE=1\r\n";//開啟透傳模式
unsigned char FSSJ[]="AT+CIPSEND=0,8\r\n";//發送數據
unsigned char SZDLJ[13]="AT+CIPMUX=1\r\n"; //多路連接
void Delay_Xms(unsigned int x)
{
unsigned char i, j;
while(x--)
{
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void Init_Uart(void)
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位數據,可變波特率
TMOD &= 0x0F; //清除定時器1模式位
TMOD = 0x20; //設定定時器1為8位自動重裝方式
TL1 = 0xFD; //設定定時初值
TH1 = 0xFD; //設定定時器重裝值
ET1 = 0; //禁止定時器1中斷
TR1 = 1; //啟動定時器1
ES=1;
EA=1;
}
void SendByte(unsigned char dat)
{
TI=0;
SBUF=dat;
while(!TI);
}
void SendArry(unsigned char *p,unsigned char num)
{
while(num--)
{
SendByte(*p++);
}
}
void SendString(unsigned char *p)
{
while(*p)
{
SendByte(*p++);
}
}
void Online(void)
{
Delay_Xms(1500);//等待WIFI上電初始化
SendString(RST);//重啟模塊
Delay_Xms(1500);//等待WIFI上電初始化
SendString(LYMS);//AT+CWMODE=3 設置station+AP模式
Delay_Xms(100);
SendString(SZLY);//設置WIFI模塊連接WIFI的名稱與密碼
Delay_Xms(2000);//等待連接WIFI以及獲取IP地址
SendString(SZDLJ);//設置多連接
Delay_Xms(100);
SendString(KQFU);//連接服務器
Delay_Xms(2000);//等待連接成功
}
void main()
{
Init_Uart();
Online();//上線過程的代碼 需要具體測試
while(1)
{
for(i=0;i<16;i++)
{
p=FSSJ;
while(*p)
{
SBUF=(*p++);
while(!TI);
TI=0;
}
SBUF=Buffer[ i];
while(!TI);
TI=0;
Delay_Xms(100);
}
}
}
|