2016/12/23

[esp8266][rtos]RTOS版サンプル(TCP Client)はsocketを使ってない

TCPで通信するRTOS版のサンプルを動かしてみようとインストール先を見たが、なかった。
rtos_sdk_programming_guideを見るとsocket()が使えるようで、lwipらしいのだが、RTOS版のAPIドキュメントにはそこら辺は載っていないようだ。
socketが使えるのはRTOS版のよい点だと思うので、そこから見ていきたい。

 

名前からすると、githubのここでよいのだろうか?
espressif/esp8266-rtos-sample-code

これの、04Protocal/TCP_Client_Demoを動かそう。
たぶんProtocolの誤記だとは思うけど、キーボードで打ち込むときは間違えそうだ。

  • tcp_client/tcp_client.h
    • tcp_server_ipをサーバのIPに変更
    • ポート番号も、気に入らなければ変更
  • tcp_client/conn_ap.c
    • DEMO_AP_SSIDとDEMO_AP_PASSWORDを自分のAPに変更

このくらいで動く。
UARTログをデフォルト速度以外で見たいなら、uartのドライバを入れてuser_main()などで変更しよう。
デフォルトが中途半端な速度なのをなんとかしてくれんだろうか。。。

 

ビルドはできたものの、TCP clientとして動くので、サーバ側を用意しなければならん。
今回はStackoverflowで紹介されていたツールを使ってみよう。

RS232 terminal, serial port terminal, udp terminal, tcp/ip client server – Hercules

image

最初、APの設定を「隔離モード」にしていたので、PC側につながらずにRECONNECTを繰り返していた。

接続できると「Hello!This is a tcp client test」を受け取っている。
あとは、こちらが送信した文字列をエコーバックするだけのようだ。


本体は、ほとんどtcp_client.cに入っている。
しかしtcp_client.cの中には、UDPやらTCP serverやらも混ざっている。。。
tcp clientとしては、一番上からTcpLocalClient()までを使っていて、そこから下は不要のようだ。

じゃあ、ここからsocket()を見ていこうかと思ったら、無い!
PDFの書いてあるTCP clientの説明と違うじゃないか。。。

gitからcloneしたソースをgrepすると、openssl_demoとかmulticast_demoなどでsocket()を使っているようだったが、単純なサンプルには使っていなさそうだ。
だまされたのか。。。

 

よくわからんが、PDFにはコードも載っているし、書き換えてみるか。。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。