HM-10:可能有些AT指令没有实现?
HM-10: maybe some AT commands are not implemented?
我正在开发一个项目,其中 PIC dsPIC33 通过串行端口连接到 HM-10 设备。
我向设备发送 AT 命令,但似乎某些 AT 命令未在 HM-10 固件中实现。
详细:
AT+RESET - > OK+RESET : it works
AT+RENEW -> OK+RENEW : it works
AT+NAME? -> OK+NAME:HMSoft : it works
AT+VER? -> no answer : it doesn't work
AT+VERS -> no answer : it doesn't work
AT+NAMEaa -> no answer : it doesn't work
你遇到过类似的问题吗?
非常感谢您的帮助与合作
亲切的问候
看看datasheet。没有 AT+VER?
或 AT+VERS
命令。他们是 AT+VERR?
和 AT+VERS?
。
我用 HC-06 做了一些测试,有些命令需要 CR,有些则不需要。也许这也是你的问题?
我在 Arduino 草图中使用此代码为 HC-06 设置 BT 设备名称:
// Enter AT command mode
if (enterATCommandMode() == true)
{
// Set the name. As we don't have an end-of-line mark, we need to wait until the
// timeout is reached and hope for the best. We also check whether the reply starts
// with "OK", so have at least some indication things worked.
hc06.print("AT+NAME" + userInput);
String reply = hc06.readString();
if (reply.equals(""))
{
Serial.println(F("HC-06 didn't reply in time!"));
}
else
{
if (reply.length() < 2 || !reply.substring(0,2).equalsIgnoreCase(F("OK")))
Serial.println("Unexpected answer ('" + reply + "') to AT+NAME command!");
else
Serial.println(F("Name was set successfully."));
}
}
bool enterATCommandMode()
{
// This buffer receives at most 2 characters as the reply (plus terminating [=10=])
char atReplyBuffer[] = { '[=10=]', '[=10=]', '[=10=]' };
// Send AT command and receive answer
hc06.print(F("AT"));
int bytesRead = hc06.readBytesUntil('[=10=]', atReplyBuffer, 2);
String reply = String(atReplyBuffer);
// Timed out or answer wasn't OK? Error.
if (bytesRead != 2 || !reply.equalsIgnoreCase(F("OK")))
{
if (reply.equals(""))
Serial.println(F("HC-06 didn't reply in time!"));
else
Serial.println("Unexpected reply ('" + reply + "') to AT command");
return false;
}
// Success
return true;
}
发送命令必须没有任何停顿! (我想)。如果我用下面的代码:(假设send8char *x)是写串口的函数)
send("AT+NAME");
send("myName"); // id doesn't work
char name[20];
strcpy(name,"AT+NAME");
strcat(name,"myName");
send(name); // if works!!
我正在开发一个项目,其中 PIC dsPIC33 通过串行端口连接到 HM-10 设备。 我向设备发送 AT 命令,但似乎某些 AT 命令未在 HM-10 固件中实现。 详细:
AT+RESET - > OK+RESET : it works
AT+RENEW -> OK+RENEW : it works
AT+NAME? -> OK+NAME:HMSoft : it works
AT+VER? -> no answer : it doesn't work
AT+VERS -> no answer : it doesn't work
AT+NAMEaa -> no answer : it doesn't work
你遇到过类似的问题吗? 非常感谢您的帮助与合作 亲切的问候
看看datasheet。没有 AT+VER?
或 AT+VERS
命令。他们是 AT+VERR?
和 AT+VERS?
。
我用 HC-06 做了一些测试,有些命令需要 CR,有些则不需要。也许这也是你的问题?
我在 Arduino 草图中使用此代码为 HC-06 设置 BT 设备名称:
// Enter AT command mode
if (enterATCommandMode() == true)
{
// Set the name. As we don't have an end-of-line mark, we need to wait until the
// timeout is reached and hope for the best. We also check whether the reply starts
// with "OK", so have at least some indication things worked.
hc06.print("AT+NAME" + userInput);
String reply = hc06.readString();
if (reply.equals(""))
{
Serial.println(F("HC-06 didn't reply in time!"));
}
else
{
if (reply.length() < 2 || !reply.substring(0,2).equalsIgnoreCase(F("OK")))
Serial.println("Unexpected answer ('" + reply + "') to AT+NAME command!");
else
Serial.println(F("Name was set successfully."));
}
}
bool enterATCommandMode()
{
// This buffer receives at most 2 characters as the reply (plus terminating [=10=])
char atReplyBuffer[] = { '[=10=]', '[=10=]', '[=10=]' };
// Send AT command and receive answer
hc06.print(F("AT"));
int bytesRead = hc06.readBytesUntil('[=10=]', atReplyBuffer, 2);
String reply = String(atReplyBuffer);
// Timed out or answer wasn't OK? Error.
if (bytesRead != 2 || !reply.equalsIgnoreCase(F("OK")))
{
if (reply.equals(""))
Serial.println(F("HC-06 didn't reply in time!"));
else
Serial.println("Unexpected reply ('" + reply + "') to AT command");
return false;
}
// Success
return true;
}
发送命令必须没有任何停顿! (我想)。如果我用下面的代码:(假设send8char *x)是写串口的函数)
send("AT+NAME");
send("myName"); // id doesn't work
char name[20];
strcpy(name,"AT+NAME");
strcat(name,"myName");
send(name); // if works!!