さっそく本題なのですが、PCとmbedをネットワークを介して通信させたいと思い
simplesocketを用いたプログラムを組みました。
今回は、PCに自作サーバープログラムを設置し、mbedがクライアントとなって接続する方法です。
流れとしては
mbedがPCに接続要求し接続が確立 → クライアントから文字列送信 → 通信切断
一通りプログラムは動くのですが、mbedからの文字列の送信がうまくいってないようで
サーバーにいつまでたっても文字列が来ません。
ここで、サーバーのプログラムがそもそも間違っていると考えたのですが
Tera Teamというソフトを用いて別のPCからTCP/IP接続を試み文字列の送信を行ったところ、サーバープログラム上で文字列が表示されることを確認しました。
ここには載せてないのですが、接続確立後サーバーから文字を送信 → mbedで受信 → 表示 というプログラムを組んでみたのですが。
どうも受信のほうもうまくいってないようで、どれだけ待ってもサーバーからの文字列が届きません。
ネットワークに問題があるんでしょうか?
- コード: 全て選択
#include "mbed.h"
#include "EthernetNetIf.h"
#include "SimpleSocket.h"
DigitalOut led_1(LED1);
DigitalOut led_2(LED2);
int main()
{
EthernetNetIf eth(
IpAddr(IPアドレス),
IpAddr(サブネットマスク),
IpAddr(ゲートウェイ),
IpAddr(DNS)
);
eth.setup();
ClientSocket socket(接続先IP,ポート);
if(socket.connected()) {
wait(1.0);
socket.printf("Hello");
socket.close();
while(true) {
led_1 = 1;
wait(0.2);
led_1 = 0;
wait(0.2);
}
}
while(true) {
led_2 = 1;
wait(0.2);
led_2 = 0;
wait(0.2);
}
}