求利用51单片机发送AT指令给蓝牙模块,并接收返回信息进行处理的程序

您所在的位置:网站首页 蓝牙是串口吗怎么连 求利用51单片机发送AT指令给蓝牙模块,并接收返回信息进行处理的程序

求利用51单片机发送AT指令给蓝牙模块,并接收返回信息进行处理的程序

2023-06-01 17:28| 来源: 网络整理| 查看: 265

蓝牙有RXD与TXD引脚, 用串口通信 ,代码可以参考网上的一些资料

使用AT指令的时候,先使蓝牙模块进入AT模式,然后你就当蓝牙就是命令的接收端,单片机或者PC串口就是命令的发送端(就当蓝空芹牙是独立的模块)。

串口配亏虚发送的AT数据是直接给蓝牙模块的,这个串口可以是PC串口也可以是单片机串口。

如果你想用单片机实现培燃AT指令设置蓝牙,就用一个IO控制蓝牙模块的KEY管脚,把AT指令写在程序中,通过串口发送给蓝牙模块。

参考《吴鉴鹰单片机项目实战精讲》

要满毁让和足这三个条件:

1,单开线程自动写at

2,单开线程读at

3,打开文件读配置,将读出来后的配置文件放到log文件里去。

这边记录下如何在ui下开一个线程的过程:用一滑粗个handler变量调用handler.post函数,然后在runnable里面重写run接口就可以,实际上,这样调用出来的线程跟ui主线程是一个线程,不会创建新的。所以这边如果要用线程创建的话,必须

wthread = new HandlerThread("thread")

wthread.start()

wHandler = new Handler(wthread.getLooper())

wHandler.post(runnable)

这时重写runnable的run函数才可以实现重新开启一个线程。

在这个线程里面可以读写串口,但是界面的刷新不能在这个子线程里面做。必须主线程在做一个handler,纤盯然后子线程调用Message 变量传进主线程的handler.sendMessage(msg)然后主线程用handlerMessage接收子线程传过来的消息,在主线程里面刷新界面。

用socket试试看;

端口号和ip地址自己改一下

using System.Net

using System.Net.Sockets

static void Main(string[] args)//服务器段

{

int port = 2000

string host = "127.0.0.1"

/**/

///创建终没侍镇结点(EndPoint)

IPAddress ip = IPAddress.Parse(host)//把ip地址字符串转换为IPAddress类型的实例

IPEndPoint ipe = new IPEndPoint(ip, port)//用指定的端口和ip初始化IPEndPoint类的新实例

/**/

///创建socket并开始监听

Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)//创建一个socket对像,如果用udp协议,则要用SocketType.Dgram类型的套接字

s.Bind(ipe)//绑定EndPoint对像(2000端口和ip地址)

s.Listen(0)//开始监听

Console.WriteLine("等待客户端连接")

/**/

///接受到client连接,为此连接建立新的socket,并谈手接受信息

Socket temp = s.Accept()//为新建连接创建新的socket

Console.WriteLine("建立连接")

string recvStr = ""

byte[] recvBytes = new byte[1024]

int bytes

bytes = temp.Receive(recvBytes, recvBytes.Length, 0)//从客户端接受信息

recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes)

/**/

///给client端返回信息

Console.WriteLine("server get message:{0}", recvStr)//把客户端传来的信息显示出来

string sendStr = "ok!Client send message successful!"

byte[] bs = Encoding.ASCII.GetBytes(sendStr)

temp.Send(bs, bs.Length, 0)//返回信息给客户端

temp.Close()

s.Close()

Console.ReadLine()

}

static void Main(string[] args)//客户端

{

try

{

int port = 2000

string host = "127.0.0.1"

/**/

///创建终结点EndPoint

IPAddress ip = IPAddress.Parse(host)

//IPAddress ipp = new IPAddress("127.0.0.1")

IPEndPoint ipe = new IPEndPoint(ip, port)//把ip和端口转化为IPEndpoint实例

/**/

///创建socket并连接到服务器

Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)//创建Socket

Console.WriteLine("Conneting…")

c.Connect(ipe)//连接到服务器

/**/

///向服务器发送信息

string sendStr = "hello!This is a socket test"

byte[] bs = Encoding.ASCII.GetBytes(sendStr)//把字符串编码为字节

Console.WriteLine("Send Message")

c.Send(bs, bs.Length, 0)//发送信息

/**/

///接受枯粗从服务器返回的信息

string recvStr = ""

byte[] recvBytes = new byte[1024]

int bytes

bytes = c.Receive(recvBytes, recvBytes.Length, 0)//从服务器端接受返回信息

recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes)

Console.WriteLine("client get message:{0}", recvStr)//显示服务器返回信息

/**/

///一定记着用完socket后要关闭

c.Close()

}

catch (ArgumentNullException e)

{

Console.WriteLine("argumentNullException: {0}", e)

}

catch (SocketException e)

{

Console.WriteLine("SocketException:{0}", e)

}

Console.WriteLine("Press Enter to Exit")

}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://outofmemory.cn/yw/12568396.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3