20160413_jeffrey - silenceuncrio/diary GitHub Wiki

Index

  • 0830 - Android APP
  • 1005 - trace aaron ไน‹ๅ‰ app
  • 1125 - CGI ๆญ้… APP
  • 1300 - LinkIt menuconfig ๆ‰พไธๅˆฐ cgilib
  • 1350 - ๆบ–ๅ‚™ LinkIt CGI
  • 1405 - Android volleyhttp client library
  • 1705 - HttpURLConnection ้›ฃ็”จ

0830

ๅ›žๆญธๅˆฐๅฏฆ็”จ้ขไพ†็œ‹ Android APP
ๆˆ‘็›ฎๅ‰้œ€่ฆ็š„ๆ˜ฏๅพžๆ‰‹ๆฉŸ็ซฏ็š„ APP ็™ผ้€ http request ็ตฆ LinkIt

็œ‹ไธ€ไธ‹ aaron ไน‹ๅ‰ๅฏซ็š„ Ameba-Rayson-Android-Demo-App

Android Studio ไธ็Ÿฅ้“ๅฆ‚ไฝ• open ่ฉฒๅฐˆๆกˆ

่€่‘—ๆ€งๅญ google ไธ€ไธ‹
aaron ไน‹ๅ‰ๅฏซ็š„็ฎ—ๆ˜ฏ eclipse ๅฐˆๆกˆ
่ฆ็”จ import ็š„ๆ–นๅผๅŒฏๅ…ฅ

ๅŒฏๅ…ฅไน‹ๅพŒ้‚„่ฆๅฎ‰่ฃ็ผบๅฐ‘็š„ๅฅ—ไปถ
ๆžๅฎš
ๅทฒ็ถ“ๅฏไปฅๅœจๆ‰‹ๆฉŸไธŠ้ขๅŸท่กŒ

1005

trace aaron ไน‹ๅ‰ๅฏซ็š„ app ๅง
ๅฐฑๅพž [MainActivity.java] ๅ’Œ [activity_main.xml] ็œ‹่ตท

activity_main.xml

<RelativeLayout>
    ...
    <ToggleButton
        android:id="@+id/toggleMode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textTempeture"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="49dp"
        android:textOff="@string/auto"
        android:textOn="@string/manual" />
    ...
</RelativeLayout>

MainActivity.java

public class MainActivity extends Activity {
    ...
    ToggleButton mMode;
    ...
    protected void controlFan(JSONObject data) {
        // TODO Auto-generated method stub

        Log.i(TAG, "controlFan():" + data.toString());
        PostRequest post = new PostRequest(this, this.mUrl, FAN_PATH, this.mControlFanComplete);
        post.execute(data);
    }
    ...
    private OnClickListener handleModeChange = new OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            JSONObject data = new JSONObject();

            // Manual mode
            if (MainActivity.this.mMode.isChecked()) {
                MainActivity.this.setSpeedState(MainActivity.MODE_MANUAL, MainActivity.SPEED_MID);
                try {
                    data.put("mode", MainActivity.MODE_MANUAL);
                    data.put("speed", MainActivity.SPEED_MID);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            } else {
                MainActivity.this.setSpeedState(MainActivity.MODE_AUTO, MainActivity.SPEED_OFF);
                try {
                    data.put("mode", MainActivity.MODE_AUTO);
                    data.put("speed", MainActivity.SPEED_OFF);
                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            MainActivity.this.controlFan(data);

        }	
    };


    private void init() {
        ...
        this.mMode = (ToggleButton) this.findViewById(R.id.toggleMode);
        ...
        this.mMode.setOnClickListener(this.handleModeChange);
    }
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...        
        this.init();        
        ...
    }
    ...
}

1125

็œ‹ไพ†ๅฏไปฅๅฏซ CGI ไพ†ๆญ้…้€™ๆ”ฏ APP ไพ†็Žฉไธ€ไธ‹

1300

็™ผ็พ LinkIt ็š„ menuconfig ่ฃก้ ญๆ‰พไธๅˆฐ็”จไบ†ๅฅฝไธ€้™ฃๅญ็š„ cgilib
ๆ˜Žๆ˜Ž ไน‹ๅ‰ ๅ‡บ็พๅœจ Libraries ่ฃก้ ญ็š„

ๅช่ƒฝๆ”น็”จไน‹ๅ‰็Žฉ้Ž็š„ cgihtml

ๅฎ˜็ถฒ่ซ‹ๅƒ่€ƒ http://eekim.com/software/cgihtml/

1350

ๅพˆๅฟซ็š„ๆบ–ๅ‚™ๅฅฝไธ€ๅ€‹ LinkIt ไธŠๅฏไปฅๅทฅไฝœ็š„ CGI

jeffrey@jeffrey-virtual-machine:/mnt/hgfs/share/linkit/cgi$ tree
.
โ”œโ”€โ”€ cgihtml-1.69
โ”‚   โ”œโ”€โ”€ cgi-lib.c
โ”‚   โ”œโ”€โ”€ cgi-lib.h
โ”‚   โ”œโ”€โ”€ cgi-llist.c
โ”‚   โ”œโ”€โ”€ cgi-llist.h
โ”‚   โ”œโ”€โ”€ html-lib.c
โ”‚   โ”œโ”€โ”€ html-lib.h
โ”‚   โ”œโ”€โ”€ Makefile
โ”‚   โ”œโ”€โ”€ string-lib.c
โ”‚   โ””โ”€โ”€ string-lib.h
โ”œโ”€โ”€ cgihtml-1.69.tar.gz
โ”œโ”€โ”€ cgi-lib.h
โ”œโ”€โ”€ cgi-llist.h
โ”œโ”€โ”€ html-lib.h
โ”œโ”€โ”€ Makefile
โ””โ”€โ”€ step_01.c

1 directory, 15 files

cgihtml-1.69/Makefile

CROSS_COMPILE	 = mipsel-openwrt-linux-
CC				 = $(CROSS_COMPILE)gcc
AR				 = $(CROSS_COMPILE)ar
RANLIB 			 = $(CROSS_COMPILE)ranlib

OBJS = string-lib.o cgi-llist.o cgi-lib.o html-lib.o
LIB = cgihtml.a

$(LIB): $(OBJS)
	$(AR) cr $@ $(OBJS)
	$(RANLIB) $@

clean:
	rm -f *.o $(LIB)

Makefile

CROSS_COMPILE	 = mipsel-openwrt-linux-
CC				 = $(CROSS_COMPILE)gcc
AR				 = $(CROSS_COMPILE)ar



TARGET=cgi_step_01.cgi

all: $(TARGET)

cgi_step_01.cgi: step_01.c
	$(CC) -o $@ $< cgihtml-1.69/cgihtml.a

clean:
	rm -f $(TARGET)
	rm -f *~ *.o *.map *.bak

%.o: %.c
	@echo Compile $< ...
	$(CC) -c -o $@ $<

step_01.c

#include <stdio.h>
#include "html-lib.h"
#include "cgi-lib.h"



int main() {
    llist entries;
    int status;

    html_header();
    html_begin("Test CGI");
    h1("CGI Test Program");
    printf("<hr>\n");
    h2("CGI Environment Variables");
    print_cgi_env();
    status = read_cgi_input(&entries);
    printf("<h2>Status = %d</h2>\n",status);
    h2("CGI Entries");
    printf("<p>a: %s</p>", cgi_val(entries,"a"));
    printf("<p>b: %s</p>", cgi_val(entries,"b"));
    printf("<p>c: %s</p>", cgi_val(entries,"c"));
    html_end();
    list_clear(&entries);
    return 0;
}

็ทจๅฅฝ็š„ cgi_step_01.cgi ไธŸๅˆฐ LinkIt ไธŠ
scp cgi_step_01.cgi [email protected]:/www/cgi-bin

ๅฏๅˆฉ็”จ postman ๆธฌ่ฉฆๅฆ‚ไธ‹
image

1405

็œ‹ไธ€ไธ‹ [Android] volley๏ผŒๅฅฝ็”จ็š„http client library

1705

ๆœ‰้ปž่ช่ผธไบ†
ไผผไนŽๆ‹ฟ aaron ็š„ code ไพ†ๆ”นๆฏ”่ผƒๅฟซ
ไธ้Ž้€™ HttpURLConnection ๆ€Ž้บผ้€™้บผ้›ฃ็”จๅ‘ข?

โš ๏ธ **GitHub.com Fallback** โš ๏ธ