BG Development


Страници: (2) 1 [2]   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Wifi SSID
Lachezar
Публикувано на: 13-05-2019, 11:18
Quote Post



Име: Лъчезар Добрев
Група: Потребител
Ранг: Почетен член

Мнения: 2703
Регистриран на: 10.11.04



Виж какво ти е написал @dvader.
Четеш отпред назад, когато срещнеш знака \ го пропускаш, а следващия го добавяш без да гледаш дали е кавичка. Продължаваш докато не намериш кавичка.

Това обаче може да се окаже проблем за теб, защото AT командите имат знаци, които са забранени заради транспорта (\r, \n, \0, и всички други < 0x20). Не съм сигурен как това се оправя с допълнителен флаг за UTF-8. Не знам и как ще се държи този канал (UART?) ако се опиташ да приемаш/предаваш UTF-8, където има байтове >0x7F.

Това, че SSID-а се транспортира чрез AT команди всъщност ще ти усложни задачата.


--------------------
И'м ватцхинг ъоу...
PMUsers Website
Top
Gamma Goblin
Публикувано на: 13-05-2019, 19:56
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2279
Регистриран на: 21.02.18



QUOTE (korsarq @ 10-05-2019, 13:43)
Друго питане:

За отговор на команда получавам

CODE

+CWJAP:<ssid>,<bssid>,<channel>,<rssi>
OK

• <ssid>: a string parameter showing
the SSID of the AP.
• <bssid>: the AP's MAC address.
• <channel>: channel
• <rssi>: signal strength


Ако в ssid има запетаи и кави как да разбера кога свършва ssid и започва bssid.

Пример:
CODE

+CWJAP:"Tra,\"lala\",\"","FF:FF:FF:FF:FF:FF",11,-72,0



OK

Чрез краен автомат. За теб оставям упражнението да си добавиш смислени съобщения за грешка и да си добавиш стейтове да прасваш останалия шит


CODE

fn main() {
   let data =r#""Tra,\"lala\",\"","FF:FF:FF:FF:FF:FF",11,-72,0"#;
   let mut sm = StateMachine::new();

   let mut iter = data.chars();
   loop {
       let ch = iter.next();
       sm = match sm.transition(ch) {
           StateMachine::Failure(_) => {
               println!("Invalid SSID");
               break;
           }

           StateMachine::EndSsid(state) => {
               println!("SSID: {}", state.value());
               break;
           }

           sm => sm
       }
   }
}


Това мнение е било редактирано от Gamma Goblin на 13-05-2019, 19:57

Прикачен файл ( Брой сваляния: 2 )
Прикачен файл  sm.zip


--------------------
https://www.rust-lang.org/
---
Хора, които са прекалено умни, за да се занимават с политика, са наказани да бъдат управлявани от глупаци.
---
PMEmail PosterUsers Website
Top
korsarq
Публикувано на: 14-05-2019, 11:06
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 306
Регистриран на: 30.11.16



В крайна сметка май се оказва, че escape символите идват по два (\" ще бъдe oт два символа - \ и ") което прави решението лесно.

@Gamma Goblin евалата, че си хвърлил толкова труд да напишеш нещо.
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) 1 [2]  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0