درخواست راهنمایی در مورد پروژه WifiChat
با سلام
من میخوام گوشی رو به عنوان کلاینت به یک ماژول esp8266 ارتباط بدم و با استفاده از سورس کد استاد، این کدها رو قرار دادم تو پروژم
لطفأ راهنمایی بفرمایید برای اینکه جهت اتصال لازم نباشه برنامه رو ببندم و دوباره باز کنم (لازم نباشه که حتمأ کلاینت بعد از سرور اجرا بشه) و همچنین هر وقت که ارتباط با سرور قطع و وصل میشه، برنامه اوتوماتیک کانکت بشه، چه کار کنم
با تشکر
package ir.thewall.kc.car_remote;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class WifiActivity extends Activity {
private Handler handler = new Handler();
private Button btnA;
private Socket socket;
private DataOutputStream outputStream;
private BufferedReader inputStream;
private boolean searchNetwork() {
Log.i("LOG", "Connecting...");
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(WifiActivity.this, "Connecting...", Toast.LENGTH_SHORT).show();
}
});
try {
socket = new Socket();
socket.connect(new InetSocketAddress("192.168.56.1", 8888));
Log.i("LOG", "Connected!");
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(WifiActivity.this, "Connected!", Toast.LENGTH_SHORT).show();
}
});
Log.i("LOG", "true");
return true;
}
catch (Exception e) {}
Log.i("LOG", "false");
return false;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnA = (Button) findViewById(R.id.btnA);
btnA.setVisibility(View.INVISIBLE);
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
searchNetwork();
try {
outputStream = new DataOutputStream(socket.getOutputStream());
inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
catch (IOException e1) {
Log.i("LOG", "Error: Connection is not stable, exit");
shutdown();
}
while (true) {
try {
String message = inputStream.readLine();
if (message != null) {
Log.i("LOG", "" + message);
}
}
catch (IOException e) {}
}
}
});
btnA.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View V) {
if (outputStream == null) {
return;
}
try {
outputStream.write("A\r\n".getBytes());
}
catch (IOException e) {
e.printStackTrace();
}
}
});
thread.start();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
shutdown();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void shutdown() {
try {
if (socket != null) {
socket.close();
}
}
catch (IOException e) {
e.printStackTrace();
}
System.exit(0);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Settings").setIcon(R.drawable.settings);
menu.add("About").setIcon(R.drawable.about);
return super.onCreateOptionsMenu(menu);
}
}
با سلام
از دوستان و اساتید، کسی تمایل نداره ما رو راهنمایی کنه؟
با تشکر
با سلام
یه مشکل دیگه!
من تو قسمتی که مربوط به دریافت پیام هست این کد رو اضافه کردمif (message == "B") {
check.setImageResource(R.drawable.checkon);
}
تا وقتی حرف B رو دریافت کرد، یه عکس رو عوض کنه ولی متأسفانه کار نمیکنه
البته تو log نشون میده که حرف B رو دریافت کرده ولی عکس رو عوض نمیکنه:
لطفأ راهنمایی بفرمایید
با سپاس while (true) {
try {
String message = inputStream.readLine();
if (message != null) {
Log.i("LOG", "" + message);
if (message == "B") {
check.setImageResource(R.drawable.checkon);
}
}
}
catch (IOException e) {}
}
}
});
با سلام
ممنون از حسن توجه و راهنماییتون
من از کدتون استفاده کردم و وقتی تو امولاتور تست میکنم، صحیح کار میکنه ولی روی گوشی هیچ عکس العملی نشون نمیده،بقیه قسمتها درست هستند ولی وقتی حرف B رو ارسال میکنم کار نمیکنه
با socket protocol هم امتحان کردم تا مطمئن بشم، گوشی کارکتر B رو دریافت میکنه
لطفأ راهنمایی بفرمایید
با سپاس while (true) { }
try {
String message = inputStream.readLine();
if (message != null) {
if (message.equals("B")) {
Log.i("LOG", "Daryaft Shod");
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(WifiActivity.this, "B Daryaft Shod", Toast.LENGTH_SHORT).show();
light.setImageResource(R.drawable.lighton);
}
});
}
}
}
catch (IOException e) {}
با سلام
دوستان و اساتید گرامی لطفأ راهنمایی بفرمایید که چرا این پروژه کار نمیکنه
البته روی امولاتور کار میکنه ولی روی گوشی خیر
با تشکر
http://up.persianscript.ir/uploads2/57ab-wifitest.zip
مشکل جدیدی که به وجود اومده اینه که برای بررسی از switch (message) میخوام استفاده کنم که از message ایراد میگیره و به عنوان راهنمایی پیشنهاد Change project compliance and JRE to 1.7 رو میده که با انتخابش ارور message برداشته میشه ولی کل پروژه ارور میده و تو Console مینویسه
[2017-03-27 08:58:56 - wifitest] Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.
جالبه که همه پروژه ها همینجوری شدن
لطفأ راهنمایی بفرمایید
while (true) {
try {
String message = inputStream.readLine();
if (message != null) {
if (message.equals("A")) {
handler.post(new Runnable() {
@Override
public void run() {
power.setImageResource(R.drawable.poweron);
}
});
break;
}
else if (message.equals("B")) {
handler.post(new Runnable() {
@Override
public void run() {
power.setImageResource(R.drawable.poweroff);
}
});
break;
}
else if (message.equals("C")) {
handler.post(new Runnable() {
@Override
public void run() {
lamp.setImageResource(R.drawable.lampon);
}
});
break;
}
else if (message.equals("D")) {
handler.post(new Runnable() {
@Override
public void run() {
lamp.setImageResource(R.drawable.lampoff);
}
});
break;
}
}
catch (IOException e) {}
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .