Սկիզբ » Ժեշտ » Android + PC + Arduino: Տնային սարքերի կառավարում անդրոիդ օհ -ով սմարթ ֆոնից/պլանշետից: Մաս 3, կլիենտ:

Android + PC + Arduino: Տնային սարքերի կառավարում անդրոիդ օհ -ով սմարթ ֆոնից/պլանշետից: Մաս 3, կլիենտ:

| Նոյեմբեր 9, 2012 | 1 Մեկնաբանություն |


Երկրորդ մասում ներկայացրեցինք սերվերային մասի իրակացանումը, այս մասում կներկայացնենք կլիենտային մասի կոդը: Java լեզվով գրված այս կոդը անմիջապես պետք է աշխատի մեր Android համակարգում, որը կարող է տեղակայված լինել սմարթ-ֆոնում կամ պլանշետում: Այսպիսով սկսեցինք, բացում ենք eclipse -ը գնում ենք File -> New -> Other -> Android -> Android Project

 

Project Name: դաշտում գրում ենք ցանկացած անուն, օրինակ client, տալիս ենք next: Բացվում է մի նոր պատուհան, որտեղ պետք է ընտրենք Android օհ -ի այն տարբերակը, որում պետք է աշխատի կլիենտային կոդը: Իմ հեռախոսում տեղակայված է 2.2 տարբերակը, հետևաբար ես ընտրել եմ Android 2.2 տարբերակը, դուք էլ պետք է ընտրեք ձեր դիվայսում տեղակայված Android -ի տարբերակը:

Դրանից հետո Application Name: դաշտում գրում ենք ցանկացած անուն, օրինակ Client:  Package Name: դաշտում գրում ենք package-ի անունը, որը պետք է բաղկացած լինի երկու կամ ավելի մասերից, իսկ մասերը միմյանցից բաժանվում են կետերով, օրինակ client.project: Եվ տալիս ենք finish և այժմ արդեն պրոյեկտը ստեղված է:

Eclipse– ում ձախ կողմում Package Explorer -ից սեղմում ենք src -ի վրա և բացում ենք դրա լրիվ ենթածառը (սեղմում ենք src -ի ու նրան պատկանող բոլոր ճյուղերից առաջ գտնվող “+” նշանի վրա):  Բացում ենք ClientActivity.java ֆայլը: Այն ամենասկզբում, երբ մենք դեռ ոչինչ չենք փոխել ունի հետևյալ տեսքը.

Այժմ կարող ենք ավելացնել մեր կոդը ClientActivity կլասսի մարմնում:
(/** Called when the activity is first created. */ մեկնաբանությունից առաջ հայտարարում ենք մեր փոփոխականները ):

Ահա կլիենտային մասի ամբողջական կոդը.

package client.project;

import android.app.Activity;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import java.lang.Throwable;

public class ClientActivity extends Activity {
EditText textOut, ip_in;
TextView textIn;
Button button, connect;
String address;
boolean state = true;
/** Called when the activity is first created. */
    @Override    
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        textOut = (EditText)findViewById(R.id.textout);
        button = (Button)findViewById(R.id.send);
        connect = (Button)findViewById(R.id.connect_ip);

        textIn = (TextView)findViewById(R.id.View);
        ip_in = (EditText)findViewById(R.id.ip_in);        

        button.setOnClickListener(buttonSendOnClickListener); 
        connect.setOnClickListener(connectOnClickListener);
    }      

    Button.OnClickListener connectOnClickListener = new Button.OnClickListener()
    {
      	public void onClick(View arg1)
    	{    		
       		if(state == false && textOut.length() == 0)
    			connect.setText("Connect");

    		if(ip_in.getText()!= null)
    		{
    			address = (String) ip_in.getText().toString();    			
    			state = ! state;
    			ip_in.setEnabled(state);    			
    			connect.setText("New connection");    			
    		}    		

    	}; 

    };

    Button.OnClickListener buttonSendOnClickListener = new Button.OnClickListener()
    { 
    	public void onClick(View arg0)    	
    	{
    		Socket socket = null;
    		DataOutputStream dataOutputStream = null;
    		DataInputStream dataInputStream = null;

    		try 
    		{
    			InetAddress ipAddress = InetAddress.getByName(address);
    			socket = new Socket(ipAddress, 11000);    			
    			dataOutputStream = new DataOutputStream(socket.getOutputStream());
    			dataInputStream = new DataInputStream(socket.getInputStream());
    			dataOutputStream.writeUTF(textOut.getText().toString());
    			textIn.setText(dataInputStream.readUTF());
    			textOut.setText("");    	

    		} 
    		catch (UnknownHostException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} 

    		catch (IOException e) 
    		{
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    			e.getMessage();
    		}

    		finally
    		{
    			if (socket != null)
    			{
    				try 
    				{
    					socket.close();
    				} 
    				catch (IOException e) 
    				{
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    			if (dataOutputStream != null)
    			{
    				try 
    				{
    					dataOutputStream.close();
    				} 
    				catch (IOException e) 
    				{
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    			if (dataInputStream != null)
    			{
    				try 
    				{
    					dataInputStream.close();
    				} 
    				catch (IOException e)
    				{
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    };
}

Package Explorer -ից բացում ենք client -> res -> layout -> main.xml ֆայլը Ջնջում ենք նկարում պատկերված ուղղանկյունու մեջ վերցրած հատվածը Դրանից հետո գրում ենք .xml կոդի մի հատված, որը պատասխանատու է մեր փոքրիկ android-application -ի արտաքին տեսքի համար. Բերենք main.xml– ֆայլի ամբողջական տարբերակը.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- Ահա այստեղ փոխարինում ենք ուղղանկյան մեջ նշված կոդը հետևյալ կոդով -->
    <TextView
      android:id="@+id/textIn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />

<!-- Այստեղից հետո ավելացնում ենք կոդի մնացած հատվածը -->
  <EditText
      android:id="@+id/textout"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >

      <requestFocus />
  </EditText>

  <EditText
      android:id="@+id/ip_in"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" />

 <TextView 
	android:id="@+id/View"
 	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:text=""  
     />

 <Button
     android:id="@+id/send"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="Send" />

 <Button
     android:id="@+id/connect_ip"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="Connect" />

 <TableLayout
     android:id="@+id/tableLayout1"
     android:layout_width="match_parent"
     android:layout_height="wrap_content" >

     <TableRow
         android:id="@+id/tableRow1"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >

     </TableRow>

     <TableRow
         android:id="@+id/tableRow2"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
     </TableRow>

     <TableRow
         android:id="@+id/tableRow3"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
     </TableRow>
 </TableLayout>

</LinearLayout>

Package Explorer -ից բացում ենք client – > AndroidManifest.xml ֆայլը ու ավելացնում հետևյալ մեկ տողը.

<uses-permission android:name="android.permission.INTERNET"/>

AndroidManifest.xml ֆայլի ամբողջական տարբերակը.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="client.project"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".ClientActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Այժմ արդեն պրոյեկտը ամբողջապես պատրաստ է, մնում է այն կոմպիլացնել և աշխատեցնել: Դրա համար Eclipse -ում գնում ենք Run -> Run, կամ ուղղակի Ctrl + F11: Մի քիչ սպասում ենք, մինչ Android emulator -ը կբեռնվի, բացում ենք ծրագրերի բաժինը ու 2 անգամ սեղմում մեր կողմից ստեղծված Client ծրագրի վրա.

Մեր ծրագիրը բացվելուց հետո պետք է սկզբից վերևից երկրորդ տեքստային դաշտում մուտքագրել սերվերի IP հասցեն, սեղմել connect և հետո նոր արդեն կարելի կլինի ամենավերևի տեքստային դաշտում հրամաններ գրել և send անել.

Երբ արդեն connect ենք եղել, արդեն կարող ենք հրամաններ ուղարկել սերվերին: Ամենավերևի տեքստային դաշտում գրում ենք հրամանը ու սեղմում send.

 

Ցանկանում եմ հիշեցնել, որ այս հոդվածաշարը նախատեսված է ուսուցողական ` Android + Pc + Arduino  ինտերֆեյսի իրականացման նպատակների համար և այդ պատճառով ծրագրերի արտաքին տեսքին (GUI -ին) մեծ ուշադրություն չի դարձվել. ամեն դեպքում դուք ինքներդ, եթե կցանկանաք, կարող եք բարելավել այն ( GUI -ին):

4– մասում կներկայացնենք Arduino էլեկտրոնային պլատայի ծրագրավորման գործընթացը:
Շարունակելի…

Android + PC + Arduino: Տնային սարքերի կառավարում անդրոիդ օհ -ով սմարթ ֆոնից/պլանշետից: Մաս 3, կլիենտ:, 10.0 out of 10 based on 18 ratings

Նշագրեր: , , , , , ,

Բաժին: Ժեշտ, Խելախոսներ, Ծրագրավորում

Կիսվել , տարածել , պահպանել

VN:F [1.9.20_1166]
Rating: 10.0/10 (18 votes cast)

Մեկնաբանեք

Կհաստատվեն միայն մեսրոպատառ հայերենով գրած մեկնաբանությունները

293