site logo
  • Կայքի մասին
  • Ծրագրավորում
  • Ժեշտ
  • Անվտանգություն
  • Հարց ու Պատասխան (ՀուՊ)
Նոյեմբեր 9, 2012  |  By Neutrino In

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


Երկրորդ մասում ներկայացրեցինք սերվերային մասի իրակացանումը, այս մասում կներկայացնենք կլիենտային մասի կոդը: 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
android Arduino C++ Java sockets Wire անդրոիդ Ժեշտ Խելախոսներ Ծրագրավորում
Previous Storyասք չիքենֆութի մասին
Next StoryphpMyAdmin: համառոտ նկարագրություն

Comments: 1 reply added

  1. Pingback:Android + PC + Arduino: Տնային սարքերի կառավարում անդրոիդ օհ -ով սմարթ ֆոնից/պլանշետից: Մաս 4, Arduino -ի ծրագրավորում: : ՀայIT.org

    […] Երրորդ մասում գրեցինք կլիենտային մասը: Այժմ, արդեն հասանք Arduino պլատայի ծրագրավորմանը: Arduino -ի ծրագրավորման լեզուն կոչվում է Processing/Wiring, որը շատ պարզ լեզու է ու ունի C-անման syntax: Շատերը գիտեն, օգտվում են և ծրագրավորում են իրենց Android դիվայսները, էլ չեմ խոսում անձնական օգտագործման համակարգիչների մասին: Բայց երևի թե Հայաստանում քչերը գիտեն, թե ինչ է Arduino էլեկտրոնային պլատֆորմը և ինչի համար է նախատեսված: Համառոտ անդրադառնանք, թե ինչ է այն իրենից ներկայացնում: […]

    Մեկնաբանել

Join in: leave your comment Cancel Reply

(will not be shared)

Որոնում

Նշագրեր

*Nix-եր (18) android (17) C++ (19) C և C++ (27) Excel (10) html (10) Network Administration (16) System Administration (28) Windows 7 (14) Ալգորիթմներ (15) Անվտանգություն (29) ԳՆՈՒ/Լինուքս (16) Թեյնիկներին (57) Ժեշտ (44) Լակոնիկ (21) Լինուքս/Յունիքս հրամաններ (29) Լուսանկարչություն և մշակում (15) Խելախոսներ (19) Ծրագրավորման լեզուներ (16) Ծրագրավորում (64) Ծրագրեր (48) Հայականացում (28) Հումոր (11) Ուսումնական նյութեր (34) Սոցցանցային Հմտություններ (19) Վեբ (25) Վերլուծություն (10) Վորդպրես (21) ՏՏ և փիլիսոփայություն (21) Տվյալների բազաներ (12) Օպերացիոն համակարգեր (27) Օֆիսային ծրագրեր (22) անդրոիդ (16) բաշ (10) ինտերնետ (11) խելախոսներ (13) համացանց (15) հայատառ (10) հայերեն (11) հայերեն ստեղնաշար (11) հայկական սոֆթ (11) ստեղնաշար (10) սքրիփթ (14) վինդոուս (12) տեսանյութ (23)
Copyright ©2017 ThemeFuse. All Rights Reserved