# aardio 范例: 安卓手机扫码配对，无线调试

```aardio
//扫码配对
import win.ui;
/*DSG{{*/
var winform = win.form(text="安卓手机扫码配对，无线调试";right=564;bottom=593;bgcolor=16777215)
winform.add(
button={cls="button";text="连接到 ...";left=299;top=542;right=530;bottom=575;db=1;disabled=1;dr=1;z=5};
edit={cls="edit";left=19;top=411;right=544;bottom=535;db=1;dl=1;dr=1;edge=1;hscroll=1;multiline=1;vscroll=1;z=2};
editPort={cls="edit";left=158;top=546;right=274;bottom=573;db=1;dr=1;edge=1;num=1;z=3};
plus={cls="plus";left=19;top=22;right=544;bottom=400;db=1;dl=1;dr=1;dt=1;repeat="scale";z=1};
static={cls="static";text="请输入连接端口：";left=9;top=550;right=139;bottom=574;align="right";db=1;dr=1;transparent=1;z=4}
)
/*}}*/

/*
adb 文档： http://developer.android.com/tools/help/adb.html
process.adb.startServer 启动 adb 服务端，这个函数实际上会自动调用一次，
adb 需要一个常驻服务端（启动一个 adb.exe 进程），也只能有一个服务进程，多个会工作不正常。
这个扩展库会自动查找之前启动的 adb 服务端，如果找到就直接重用。
进程退出时不会退出常驻服务端（一般无此必要）

每次发送 adb 指令时也会启动一个 adb 客户端，这也是一个 adb.exe 进程。
所有 adb 客户端在执行完成后，或当前进程退出后将会自动关闭（由 process.job.limitKill 实现）。
*/
import process.adb;
winform.button.oncommand = function(id,event){
	
	var str = process.adb.connect(owner.adbInfo.addr + ":" + winform.editPort.text,true);
	if(str){
		winform.msgbox(str)
		
		//执行 shell 命令
		var adb = process.adb.shell("ls"); 
		var out = adb.readAll(); //读取进程输出，adb 是一个 process.popen 对象，请参考该库函数文档。
		winform.edit.print(out);
		
		//上传文件
		//process.adb.push( "/abc.txt","/mnt/sdcard/abc.text" ); 
	} 
	else {
		winform.msgboxErr("连接失败，请输入正确端口")
	}
}

winform.onAdbPair = function(info){
	if(info){
		winform.edit.print("配对成功：",info);
		winform.button.text = "连接到：" + info.addr;
		winform.button.adbInfo = info;
		winform.button.disabled = false;
	}
	
	return true;//返回 false 停止此二维码的自动配对
}

import process.adb.qrCode;
var qrBmp = process.adb.qrCode(winform );
winform.plus.setBackground(qrBmp.copyBitmap(winform.plus.width));

winform.edit.text = /*
手机与电脑连接到同一无线局域网，
然后打开安卓手机 > 设置 > 开发者选项 > 无线调试 > 扫二维码配对
*/
 
winform.show() 
win.loopMessage();
```