蓝牙模块与pc通讯的怪问题
昨天终于搞好了hc05的at指令设置,今天测试模块的收发。写了个简单的在pc端通过串口助手发送on或off来开关13号口的led。如果输入匹配则led会亮或者灭,无输入或输入不匹配则串口输出“no command”。
用串口线测试程序一切正常,一旦换蓝牙,问题就来了。无论我输入什么,总是现实“no comand”,感觉就像模块只能发送不能接收。
向各位请教这是何因?会不会是蓝牙模块hc05的硬件问题?
谢谢! 请问AT指令怎么发送设置的》?? 本帖最后由 windasher 于 2012-8-8 14:27 编辑
pww999 发表于 2012-8-8 13:29 static/image/common/back.gif请问AT指令怎么发送设置的》??先让hc05进入at模式(具体可参见其手册)。在程序的setup()里用println()函数写相应指令就可以了。
或者在电脑端用usb转ttl模块连接蓝牙模块,配合串口调试助手也可以实现指令的设置。 本帖最后由 pww999 于 2012-8-8 17:54 编辑
是不是 字符类型或字付串 发不对?之前我试了一下,简单发送只能够发一个字付,一串字符会续个接收的,有个帖子专门讲如何发送及读取字付串的
http://www.geek-workshop.com/thread-158-1-5.html
但想了想好象不对,因为不能接收字符串,又怎么接收at指令改模式?可能写到单片机上,与蓝呀内部处理不一样? at指令是单片机通过ttl端口发送给蓝牙模块的,并不是用无线连接。 pww999 发表于 2012-8-8 16:47 static/image/common/back.gif
是不是 字符类型或字付串 发不对?之前我试了一下,简单发送只能够发一个字付,一串字符会续个接收的,有个 ...
你推荐的帖子看了很受益,谢谢!
晚上再研究下。 昨天用serial.available()来检测模块是否收到数据,并根据收到的字符数来控制灯的开关,收到一个字符灯亮,收到两个字符灯灭。
测试结果是串口并不能每次都接收到数据,即使接收到pc端的字符(串),也未必能完全接收。比如发送两个字符,单片机端只能收到一个,发三个只能接收两个……
稍后上代码,请各位帮看看是哪儿出了问题。 本帖最后由 pww999 于 2012-8-9 11:30 编辑
按上面给的帖子 将接收后显示到lcd1602,开始接收显示时 字符(串)后面多了个乱码,接收多几次后就正常了,也不知什么原因, int led = 13;
int c;
String sr;
void setup()
{
pinMode(led,OUTPUT);
Serial.begin(9600);
}
void loop()
{
while(Serial.available()>0)
{
sr += char(Serial.read());
delay(2);
}
if(sr.length() == 1)//接收到的字符串长度为1
{
digitalWrite(led,HIGH);
Serial.println(sr);
sr = "";
}
else if(sr.length() == 2)//接收到的字符串长度为2
{
digitalWrite(led,LOW);
Serial.println(sr);
sr = "";
}
else if(sr.length() > 2)//接收到的字符串长度大于2
{
Serial.print(sr);
Serial.println("receive > 0");
sr = "";
}
else//如果缓冲区无字符
{
Serial.print(Serial.available());
Serial.println("no data");
}
}
这是我的代码,请各位看看,谢谢! pww999 发表于 2012-8-9 11:24 static/image/common/back.gif
按上面给的帖子 将接收后显示到lcd1602,开始接收显示时 字符(串)后面多了个乱码,接收多几次后就正常了, ...
两个乱码是不是回车换行?
能否把你的代码发上来让我学习下? 请问pww999兄,你用的是哪里生产的模块?我用的是lcsoft生产的模块(核心是hc05),我怀疑是不是硬件的问题。 本帖最后由 pww999 于 2012-8-9 13:09 编辑
http://www.geek-workshop.com/thread-1453-1-3.html
我是用检测字符(串)匹配,而不是字符(串) 长度 匹配{:soso_e140:} ~~~ pww999 发表于 2012-8-9 12:44 static/image/common/back.gif
http://www.geek-workshop.com/thread-1453-1-3.html
我是用检测字符(串)匹配,而不是字符(串) 长度 匹配 ...
这种方法我用串口线实验成功,但换蓝牙就不行了只能接收蓝牙信息,对蓝牙模块发送数据就会出错,不解…… 本帖最后由 pww999 于 2012-8-9 16:09 编辑
2个串口的端口号? 是不是你之前设置at 指令设错了?
我只买了一只,也是主从一体,直接默认从机使用的,at指令没设置过的
页:
[1]