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
最初、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 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。