Renesas Community
Renesas Community
  • User
    Join or sign in
  • Site
  • Search Community
  • User
  • Renesas Engineering Community
  • FAQ
  • HELP
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-LYCHEE 小ネタか:GR-LYCHEE同士のTCP Socket通信
  • Forums
  • Files
  • がじぇっとるねさす ゆーざー会 - Wiki
  • Tags
  • More
  • Cancel
  • New

 

 GR-SAKURA

 GR-KURUMI

 GR-COTTON

 GR-CITRUS

 GR-PEACH

 GR-KAEDE

 GR-ADZUKI

 GR-LYCHEE

 GR-ROSE

 GR-MANGO(*)

 SNShield

 Web Compiler

 IDE for GR

 TOPPERS関連

 女子美コラボ

 その他

 ※プロデューサミーティング中

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • State Not Answered
  • Replies 6 replies
  • Subscribers 438 subscribers
  • Views 3044 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • 5Vトレラント
  • binファイル
  • BLE
  • DisplayApp
  • e2studio
  • error
  • ESP32
  • GR-LYCHEE
  • GR-PEACH
  • html
  • includeに関しては、C言語のヘッダファイルの意味合いを理解すれば、どういうことなのか?がわかるんじゃないか?と思いますよ。
  • OpenCV
  • pwm
  • WebCamera
  • webコンパイラ
  • カメラ
  • コンパイラー
  • シリアル
  • ダウンロード
  • ツールチェン
  • ファームウェア
  • 基板サイズ
  • 解凍
Related

小ネタか:GR-LYCHEE同士のTCP Socket通信

Okamiya Yuuki
Okamiya Yuuki over 4 years ago

がじぇるね岡宮です。

 

GR-LYCHEEの一方をサーバー(AP)、もう一方をクライアント(STA)にするサンプルです。#define I_AM_SERVERを有効にするとサーバー、コメントアウトするとクライアントです。固定IPでの通信です。

単にクライアントが送信し続けるだけのサンプルです。私はネットワークに詳しくないので、Mbedのサンプルを色々見たのですが、なかなか機器間での通信が見当たりませんでした。ソケット関連の正しい扱い方を知らないため、色々突っ込みどころあると思いますが、コメントあれば宜しくお願い致します。

 

#include <Arduino.h>
#include "TCPSocket.h"

#define I_AM_SERVER
#include <ESP32InterfaceAP.h>
#ifdef I_AM_SERVER
#define IP_ADDRESS ("192.168.0.2") /* IP address */
#define SUBNET_MASK ("255.255.255.0") /* Subnet mask */
#define DEFAULT_GATEWAY ("192.168.0.3") /* Default gateway */
#define WLAN_SSID ("GR-LYCHEE") /* SSID */
#define WLAN_PSK ("oooooooo") /* PSK(Pre-Shared Key) */
#define WLAN_SECURITY NSAPI_SECURITY_WPA_WPA2

//ESP32InterfaceAP wifi;
ESP32InterfaceAP wifi(P5_3, P3_14, P7_1, P0_1);
TCPSocket client;
TCPServer server;

void setup(){
Serial.begin(9600);
Serial.println("AP starts");

wifi.set_dhcp(false);
wifi.set_network(IP_ADDRESS, SUBNET_MASK, DEFAULT_GATEWAY);
wifi.set_credentials(WLAN_SSID, WLAN_PSK, WLAN_SECURITY);
wifi.connect();
const char *ip = wifi.get_ip_address();
Serial.println(ip);

server.open(&wifi);
server.bind(80);
server.listen();
Serial.println("Wait for new connection...");
while(server.accept(&client) != 0);

}

void loop(){
char p;
int ret;
ret = client.recv(&p, 1);
if(ret > 0){
Serial.print(p);
}
}

#else
#include <ESP32Interface.h>

#define IP_ADDRESS ("192.168.0.4") /* IP address */
#define SUBNET_MASK ("255.255.255.0") /* Subnet mask */
#define DEFAULT_GATEWAY ("192.168.0.5") /* Default gateway */
#define WLAN_SSID ("GR-LYCHEE") /* SSID */
#define WLAN_PSK ("oooooooo") /* PSK(Pre-Shared Key) */
#define WLAN_SECURITY NSAPI_SECURITY_WPA_WPA2

#define IP_SERVER ("192.168.0.2")
ESP32Interface wifi;
//ESP32Interface wifi(P5_3, P3_14, P7_1, P0_1);
TCPSocket client;

void setup(){
Serial.begin(9600);
Serial.println("STA starts");

wifi.set_dhcp(false);
wifi.set_network(IP_ADDRESS, SUBNET_MASK, DEFAULT_GATEWAY);
wifi.set_credentials(WLAN_SSID, WLAN_PSK, WLAN_SECURITY);
wifi.connect();
const char *ip = wifi.get_ip_address();
Serial.println(ip);

client.open(&wifi);
if(client.connect(IP_SERVER, 80) != 0){
Serial.println("Error connection");
} else {
Serial.println("Connected");
}


}

void loop(){
char sbuffer[] = "KITAKITA\r\n";
nsapi_size_t size = strlen(sbuffer);
nsapi_size_or_error_t r = 0;

while(size) {
r = client.send(sbuffer+r, size);
size -= r;
}
Thread::wait(1000);
}


#endif
  • Reply
  • Cancel
  • Cancel
Parents
  • MSL
    0 MSL over 2 years ago
    mslと申します.連日失礼します.

     wifi関連の勉強が必要となり,GR-LYCHEEを素材にいろいろと試みています.岡宮様ご提供の「GR-LYCHEE同士のTCP Socket通信」を参考にサーバー側のソケット通信プログラムを作成したのですが,動作が途中で止まってしまいます.プログラムは下記の【プログラム】の通りで,クライアント側はTera Term(IPアドレスを指定し,telnetで接続)を使っています.

     実行時のサーバー側のTeraTermのウィンドウ(シリアル通信での内容を表示する)には次の【実行結果】が表示されます.最後の"a"は"accept"のaだと思うのですが,ここでプログラムの動作が止まってしまっているように見えます.クライアント側のTera Termから入力したものがサーバー側のTera Termに表示されることを期待したのですが,なかなか解決に至りません.解決策につきましてご助言を賜れれば幸いです.よろしくお願いいたします.

    【実行結果】
    AP starts
    MAC: 30:ae:a4:30:5b:9c
    IP: 192.168.11.2
    Netmask: 255.255.255.0
    Gateway: 192.168.11.1
    open success
    bind success
    loop
    listen success
    0
    Wait for new connection...
    a ← ここで表示が止まります.

    【プログラム】
    #include <Arduino.h>
    #include "TCPSocket.h"
    #include "ESP32Interface.h"

    #define MBED_CONF_APP_WIFI_SSID "xxxxxx"
    #define MBED_CONF_APP_WIFI_PASSWORD "xxxxxxx"

    ESP32Interface wifi;
    TCPSocket server;

    void setup(){
    Serial.begin(9600);
    Serial.println("AP starts");

    wifi.connect(MBED_CONF_APP_WIFI_SSID, MBED_CONF_APP_WIFI_PASSWORD);

    printf("MAC: %s\r\n", wifi.get_mac_address());
    printf("IP: %s\r\n", wifi.get_ip_address());
    printf("Netmask: %s\r\n", wifi.get_netmask());
    printf("Gateway: %s\r\n", wifi.get_gateway());

    if(NSAPI_ERROR_OK == server.open(&wifi)){
    Serial.println("open success");
    }
    if(NSAPI_ERROR_OK == server.bind(wifi.get_ip_address(), 23)){
    Serial.println("bind success");
    }

    }

    void loop(){
    static int n=0;
    Serial.println("loop");

    if(NSAPI_ERROR_OK == server.listen()){
    Serial.println("listen success");
    Serial.println(n);
    n++;
    }
    Serial.println("Wait for new connection...");

    nsapi_error_t err;
    TCPSocket* client = server.accept(&err);
    if(err == NSAPI_ERROR_OK){
    Serial.println("accept");
    }

    char msg;
    int ret;
    ret = client->recv(&msg,1);
    Serial.println(ret);
    if(ret > 0){
    Serial.print(msg);
    }
    client->close();
    Serial.println("Socket close");
    }
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • Okamiya Yuuki
    0 Okamiya Yuuki over 2 years ago in reply to MSL
    がじぇるね岡宮です。
    ちょっと週末に試して、e2studioのプロジェクトでJ-Linkを使って再現できるか確認します。
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
  • MSL
    0 MSL over 2 years ago in reply to Okamiya Yuuki
    岡宮様


     お世話になっております.お忙しい中恐れ入ります.
    よろしくお願いいたします.

     こちらではIDE for GR1.12を使用しています.
    何かヒントになるかと思い,webコンパイラでmbedの
    テンプレートを利用して(mbedのスタイルに合うよう
    に少しコードは修正)試してみましたが,ほとんど同じ
    結果でした.
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
Reply
  • MSL
    0 MSL over 2 years ago in reply to Okamiya Yuuki
    岡宮様


     お世話になっております.お忙しい中恐れ入ります.
    よろしくお願いいたします.

     こちらではIDE for GR1.12を使用しています.
    何かヒントになるかと思い,webコンパイラでmbedの
    テンプレートを利用して(mbedのスタイルに合うよう
    に少しコードは修正)試してみましたが,ほとんど同じ
    結果でした.
    • Cancel
    • Up 0 Down
    • Reply
    • Verify Answer
    • Cancel
Children
No Data
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.