Renesas Community
Renesas Community
  • User
    Join or sign in
  • Site
  • Search Community
  • User
  • Renesas Engineering Community
  • FAQ
  • HELP
  • More
  • Cancel
がじぇっとるねさすコミュニティ
がじぇっとるねさすコミュニティ
GR-SAKURA フォーラム Ether 途中で通信できなくなる。
  • 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関連

 女子美コラボ

 その他

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

 作り方使い方資料

 イベント関連

 作品記事

 体験記事

 その他

 

 ライブラリ

 ツール

 その他・過去ファイル

  • Replies 0 replies
  • Subscribers 276 subscribers
  • Views 54 views
  • Users 0 members are here
Options
  • Share
  • More
  • Cancel
Related Tags
  • Ehternet
  • ethernet
  • gr-sakura
  • GR-SAKURA GR-KURUMI I2C
  • gr-sakura rtc
  • GR-SAKURA SDMMC
  • GR-SAKURA 液晶 aitendo
  • I2c
  • lcd
  • mruby
  • sd_card
  • sdmmc
  • SDカード
  • serial
  • SPI
  • udp
  • USB仮想シリアル
  • Windows8 serial com driver
  • がじぇっとルネサス
  • がじぇるね
  • シリアル
  • タイマ割込み
  • ネットワーク
  • ライブラリ
  • 割り込み
Related

Ether 途中で通信できなくなる。

アイン
アイン 2 months ago

GR-SAKURA Ver2.24 Ether通信で、PCからコマンドをもらってOKを返すプログラムですが、

何回か通信しているとPCがOKを受信できてない。GR-SAKURAは送信したつもりのようで、そうなるとpingも通りません。

Clientは止まっても接続状態のままです。

止まったことを検出することもできません。

どこが悪いのか判断できない状態です。

間違い、方法があれば知りたいです。

プログラム

void Task_tcp(void) {

char land[40] ;
int wno;
int bno;

Ethernet.begin(mac, ip, gateway, subnet); // *** not Ethernet connect stop ***
server.begin();

Serial.print("Task tcp start IP ");
Serial.println(Ethernet.localIP());
TcpRcvCnt = 0;

while(1){

// 接続中のクライアントからデータを受信する
EthernetClient client = server.available(); // サーバーに接続されていて、データの読み取りが可能なクライアントを取得する
if (client) { // クライアントの接続状態
while(client.connected()){
if (client.available()) { // 受信データありチェック
rdat = client.read(); // 1バイトの読込み
if(rdat != CR){
land[TcpRcvCnt++] = rdat ;
}
if(rdat == LF){ // デリミタコードチェック
land[TcpRcvCnt] = NUL ;
TcpRcvCnt = 0; // 受信データ格納ポインタをリセット

Serial.println( land );

if(!strncmp(land,"*CLOSE",6)){ // <<< CLOSECommand >>>
delay(2000); // 何故か2秒位待つと長く生きる。
client.print("!OK\n");

bno = land[7] & 0x0f ; // 受信したコマンドで
board_no_set(bno); // I/O出力する。
wno = land[9] & 0x0f ;; // PORT4 と PORTDを使用
sig_rly_set(wno,CLOSE); //
}
} else {
delay(10) ; // 10mS待つ
}
}else{
delay(10) ; // 10mS待つ
}
}
Serial.println();
Serial.println("disconnecting.(2)");
if(!client.connected()){
client.stop(); // サーバーとの接続を終了
}
}
delay(10) ; // 10mS待つ
}
}

  • Reply
  • Cancel
  • Cancel
サイト使用条件
プライバシーポリシー
お問い合わせ
© 2010-2022 Renesas Electronics Corporation. All rights reserved.