2016/12/24

[esp8266][rtos]socketでのTCP client

ようやく、ESP8266 + RTOS SDKでsocketを使ったTCP client試作ができた。

hirokuma/esp8266_rtos_tcp_client: TCP client for ESP8266_RTOS_SDK

何に時間がかかったかって、IPアドレスの文字列が間違っているということに気付かなくて1時間以上悩んでいたのだ。
間違っているとconnect()に失敗するのだけど、即座にエラーが返るんじゃなくて、時間がかかって返ってくるのだ。
だから、なんか通信がうまくいっていないんだろうかとか、いろいろな要因を探し回ってしまった。

 

とりあえず動かしてみたいのであれば、include/con_ap.hを自分のAPに変更し、include/tcp_client.hのIPアドレスとポート番号をTCPサーバのものに変更すればよいだろう。
今回も、TCPサーバとしてはWindowsのHerculesを使った。
接続できたらメッセージを飛ばすので、後はサーバからsendすると、そのままエコーバックするだけだ。

 

本体は、ここ。
esp8266_rtos_tcp_client/tcp_client.c at master · hirokuma/esp8266_rtos_tcp_client
受信をrecv()で同期待ちさせることができるのがありがたい。
これで、受信待ちタスクと送信タスクを別々にして、受信したら送信タスクに要求を投げる、という、よくあるsocketプログラミングができそうだ。

0 件のコメント:

コメントを投稿

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

注: コメントを投稿できるのは、このブログのメンバーだけです。