2016-09-12 14 views
0

現在、私のhttpサーバーにesp8266を接続しようとしています。私のローカルのWiFiネットワークの作品への接続が、私は自分のサーバーに接続しようとした場合、私は、ターミナルウィンドウでこのエラーを取得する:ESP8266 - TCPサーバーへの接続(C言語)

致命的な例外9(LoadStoreAlignmentCause): EPC1 = 0x4026027b、EPC2 = 0x00000000に、EPC3 = 0x00000000のTCP接続を処理し、このようになります私はcheck_ip()呼び出すuser_init機能で、excvaddr = 0x00000011、DEPC = 0x00000000の

LOCAL void ICACHE_FLASH_ATTR check_ip(void){ 
    struct espconn conn; 
    struct ip_info ipconf; 
    esp_tcp tcp; 
    uint8 ipAddr[4] = {1,2,3,4}; 
    uint32 localPort = espconn_port(); 
    bool res = wifi_get_ip_info(STATION_IF, &ipconf); 
    if(!res) 
     os_printf("No Success."); 
    else{ 
     os_memcpy(tcp.local_ip,&ipconf.ip,4); 
     if(wifi_station_get_connect_status() == STATION_GOT_IP && ipconf.ip.addr != 0){ 
      os_printf("Got IP Address.\n"); 

      tcp.remote_port = 80; 
      tcp.local_port = espconn_port(); 
      os_memcpy(tcp.remote_ip,ipAddr,4); 

      conn.type = ESPCONN_TCP; 
      conn.state = ESPCONN_NONE; 
      conn.proto.tcp = &tcp; 

      espconn_regist_connectcb(&conn,tcp_connect_cb); 
      espconn_regist_reconcb(&conn,tcp_recon_cb); 

      espconn_connect(&conn); 
      os_timer_disarm(&timer); 
     } else { 
      os_timer_setfn(&timer,(os_timer_func_t*)check_ip,NULL); 
      os_timer_arm(&timer,100,0); //recall function after 100ms, don't repeat 
     } 
    } 
} 

すべてのヘルプは、Vでありますエリーはとても感謝しています。

+0

解決策を質問に追加するのではなく、回答として追加してください – mpromonet

答えて

0

正しく覚えていれば、スタック変数を使用する代わりにesp_connを動的に割り当てる必要があります。 espconn_list_creat(&plink_active, pclient); pclient->pespconn = espconn; <---- it stores your pointer

例:https://myesp8266.blogspot.com.cy/2015/03/publish-data-from-your-esp8266-to.html(ちょうど最初のグーグルではなく、OKらしい)

PS:IMO esp_conn_xxxx機能が少しある

(奥深く、espconn_tcp_client(構造体espconn * espconn)関数は、これを行います信頼性の低い... LWIPの使用をお勧めします

+0

正解ではないのに、助けてくれてありがとうございます。ここからのコード:http://41j.com/blog/2015/01/esp8266-c lient-mode-connect-remote-host-simple-example/ 私の最初の投稿を編集しました。 – binaryBigInt

+0

あなたの例では、実際にはスタック変数を使用しません: 'static struct espconn conn;' これはmallocと同じです –

関連する問題