ESP8266 Serial.print()和printf()生成不同的输出

时间:2018-02-06 00:00:10

标签: c++ wifi esp8266

我正在努力解决Serial.print()和printf()输出的差异。我正在编程ESP8266,下面的代码是控制我的wifi连接的一块。代码在启动时执行,并打印它检测到的WIFI网络以及连接到所选网络之一的状态。我遇到的问题是Serial.print("链接状态:\ t \ t");和printf("链接状态:\ t \ t"); WL_DISCONNECTED案例中的行:代码块。根据我编译的哪一行,我有不同的输出!我希望有一个人可以告诉我为什么以及可以做些什么。

case WL_INIT:               {       // #7 added to start the initialization
            wifi.dt = 1000;
            WiFi.hostname(infra.host);
            wifi.netcnt = WiFi.scanNetworks();
            for (n = 0; n < wifi.netcnt; n++) printf("%2d: SSID: %-20s, RSSI: %3d , Encryp: %2d\n", n, WiFi.SSID(n).c_str(), WiFi.RSSI(n), WiFi.encryptionType(n));
            Serial.print("Link Status: \t\t ");
//          printf("Link Status: \t\t "); // is not printed at the correct location
            wifimode(wifi.mode);
        }
        break;

        case WL_DISCONNECTED:       {       // #6   after 50 seconds no correct password, status changes to CONNECT_FAILED
            wifi.dt = 1000;
            wifi.stat = WiFi.status();
            printf(".%u",wifi.stat);
//          Serial.print(".");Serial.print(wifi.stat);  // with printf this has a different result.
            timeout++;

&LT;在Serial.print的情况下输出(&#34;。&#34;); Serial.print(wifi.stat); //使用printf这有不同的结果。 &GT;

 0: SSID: INFINITUMEDFF_2.4   , RSSI: -92 , Encryp:  4
 1: SSID: INFINITUM_A5A098    , RSSI: -81 , Encryp:  8
 2: SSID: Grasmeent           , RSSI: -46 , Encryp:  8
 3: SSID: INFINITUM8D73       , RSSI: -43 , Encryp:  8
 4: SSID: INFINITUM8D73       , RSSI: -58 , Encryp:  8
Link Status:            .6.6.6.3
Connected to: SSID:      INFINITUM8D73
IP address:             192.168.1.65 

&LT;在printf的情况下输出(&#34;。%u&#34;,wifi.stat);; //使用Serial.print,它有不同的结果。 &GT;

 0: SSID: Grasmeent           , RSSI: -46 , Encryp:  8
 1: SSID: INFINITUM8D73       , RSSI: -39 , Encryp:  8
 2: SSID: INFINITUM8D73       , RSSI: -56 , Encryp:  8
 3: SSID: INFINITUM_A5A098    , RSSI: -82 , Encryp:  8
Link Status:         
.6.6.6.3Connected to: SSID:      INFINITUM8D73 
IP address:             192.168.1.65 

带有printf()的示例(最后一个块)由于某种原因在&#34;链接状态&#34;之后产生CRLF。生成&#34; .6.6.6.3&#34;。基于Serial.print()的第一个例子并没有这样做,并减慢了我已经尝试混合Serial.print和printf()的一个很好的在线输出,它们生成了不同的布局。如果我切换到只有printf()基于输出,如第一个块中指示的输出好看,这似乎是不可能的。有人能告诉我什么问题是搞砸了我的printf()输出。 为什么printf和Serial print会生成不同的打印布局。

0 个答案:

没有答案