2017-01-10 15 views
0

Я разрабатываю проект с PIC dsPIC33, подключенным через последовательный порт к устройству HM-10. Я отправляю на AT-команды устройства, но кажется, что некоторые из AT-команд не реализованы в прошивке HM-10. Подробно:HM-10: возможно, некоторые команды AT не реализованы?

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 

вы имели подобную проблему? Большое спасибо за помощь и сотрудничество С уважением

ответ

1

Посмотрите на datasheet. Нет AT+VER? или AT+VERS команд. Это AT+VERR? и AT+VERS?.

Я провел несколько тестов с HC-06, а некоторые команды нуждались в CR, некоторые - нет. Может, это и ваша проблема?

Я использовал этот код в эскизе Arduino, чтобы установить имя устройства BT для HC-06:

// 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 \0) 
    char atReplyBuffer[] = { '\0', '\0', '\0' }; 

    // Send AT command and receive answer 
    hc06.print(F("AT")); 
    int bytesRead = hc06.readBytesUntil('\0', 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; 
} 
+0

Спасибо Торстен для вашей информации. Возможно, у меня было неправильное и старое техническое описание. Теперь AT + VERS? и HM-10 отвечает строкой HMsoft V540. – Ferrari

+0

Спасибо Thorsten за информацию. Возможно, у меня было неправильное и старое техническое описание. Теперь AT + VERS? и HM-10 отвечает строкой HMsoft V540. Я также добавил '\ r', '\ n' в конец строки AT + NAMEaa, но я не получил никакого ответа от HM-10 – Ferrari

+0

@Ferrari. Нужно ли вводить AT-режим команды, как в моем примере? Вы сделали это? –