20160413_jeffrey - silenceuncrio/diary GitHub Wiki
- 0830 - Android APP
- 1005 - trace aaron ไนๅ app
- 1125 - CGI ๆญ้ APP
- 1300 - LinkIt menuconfig ๆพไธๅฐ cgilib
- 1350 - ๆบๅ LinkIt CGI
- 1405 - Android volleyhttp client library
- 1705 - HttpURLConnection ้ฃ็จ
ๅๆญธๅฐๅฏฆ็จ้ขไพ็ Android APP
ๆ็ฎๅ้่ฆ็ๆฏๅพๆๆฉ็ซฏ็ APP ็ผ้ http request ็ตฆ LinkIt
็ไธไธ aaron ไนๅๅฏซ็ Ameba-Rayson-Android-Demo-App
Android Studio ไธ็ฅ้ๅฆไฝ open ่ฉฒๅฐๆก
่่ๆงๅญ google ไธไธ
aaron ไนๅๅฏซ็็ฎๆฏ eclipse ๅฐๆก
่ฆ็จ import ็ๆนๅผๅฏๅ
ฅ
ๅฏๅ
ฅไนๅพ้่ฆๅฎ่ฃ็ผบๅฐ็ๅฅไปถ
ๆๅฎ
ๅทฒ็ถๅฏไปฅๅจๆๆฉไธ้ขๅท่ก
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();
...
}
...
}
็ไพๅฏไปฅๅฏซ CGI ไพๆญ้ ้ๆฏ APP ไพ็ฉไธไธ
็ผ็พ LinkIt ็ menuconfig ่ฃก้ ญๆพไธๅฐ็จไบๅฅฝไธ้ฃๅญ็ cgilib
ๆๆ ไนๅ ๅบ็พๅจ Libraries ่ฃก้ ญ็
ๅช่ฝๆน็จไนๅ็ฉ้็ cgihtml
ๅฎ็ถฒ่ซๅ่ http://eekim.com/software/cgihtml/
ๅพๅฟซ็ๆบๅๅฅฝไธๅ 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 ๆธฌ่ฉฆๅฆไธ
็ไธไธ [Android] volley๏ผๅฅฝ็จ็http client library
ๆ้ป่ช่ผธไบ
ไผผไนๆฟ aaron ็ code ไพๆนๆฏ่ผๅฟซ
ไธ้้ HttpURLConnection ๆ้บผ้้บผ้ฃ็จๅข?