2021年8月28日 星期六

苦茶苗長大了

 去年2020霜降時採果並催芽種植

昨天去看看種植的苗,已長多葉;這幾週看看,再來地植了



日月潭-釣魚樂

 疫情緩下來了

日月潭人變多了

連要找個地方釣魚真的很難找



2021年8月23日 星期一

Android adb 控制手機

 Android adb 控制手機

--

ADB Usage Complete / ADB 用法大全

Android adb调试命令集合


Python 通过ADB控制android手机

 1. 首先安装adb,链接如下:adb下载


2. 调试指令:


1. 关闭adb服务:adb kill-server

  2. 启动adb服务  adb start-server

  3. 查询当前运行的所有设备  adb devices

  4. 可能在adb中存在多个虚拟设备运行 可以指定虚拟设备运行  -s 虚拟设备名称

  5. 重启设备 adb reboot  --指定虚拟设备   adb -s 设备名称 reboot

  6. 查看日志  adb logcat  清除日志 adb logcat -c

  7. 进入linux shell下  adb shell 其中常用的linux命令  cd  cat 等等 输入su可以获取超级管理员名称了 要确定是否有哪些命令 进入 system/bin目录 就知道了

8. 传入文件到设备中 adb push 本地文件 远程目录  


  9. 从设备中拷贝文件到本地  adb -s emulator-5556 pull /data/config.ini d:/


  10. 显示当前运行的全部模拟器:

adb devices


  1 安装应用程序:

adb install -r 123.apk


  12. 获取模拟器中的文件:

adb pull


  13. 向模拟器中写文件:

adb push


  14. 进入模拟器的shell模式:

adb shell


  15. 卸载apk包:

adb shell

cd data/app

rm 123.apk

exit

adb uninstall 123.apk

adb install -r 123.apk


  16. 查看adb命令帮助信息:

adb help

  17. 删除系统应用:

adb remount (重新挂载系统分区,使系统分区重新可写)。

adb shell

cd system/app

rm 123.apk


  18. 获取管理员权限:

adb root


  19、复制文件:

复制一个文件或目录到设备:

adb push

如:adb push update.zip /sdcard/

从设备上复制一个文件或目录:

adb pull

如:adb pull /sdcard/update.zip.


  20、取得当前运行设备的实例的列表及每个实例的状态:

adb devices


  21:adb shell input tap

这条命令模拟Android手机在屏幕坐标(X,Y)处进行了点击操作。


   22:adb shell input swipe 


这条命令模拟Android手机从屏幕坐标(X1,Y1)滑动到坐标(X2,Y2)的操作。


  23、uiautomator dump   dump: creates an XML dump of current UI hierarchy 这个命令是用来成成当前界面的UI层次,并用XML格式进行展示 。这样就可以获取各个组件的位置了


   注:如果PC要想同时控制多台Android手机,必须在adb 后面添加-s


  例如:adb -s 13b6e4c4 shell input tap 400 400


  表示对13b6e4c4这台Android手机进行在屏幕上(400,400)坐标位置进行模拟的点击事件。


  24.   能看到设备信息就代表设备已经连接成功了,接下来的命令就是adb install 路径+包名.apk


例如我的安装包放在桌面,那么命令就是adb install C:\Users\hyh\Desktop\XXX.apk


*** adb shell uiautomator dump /mnt/sdcard/window_dump.xml 获得手机当前界面的UI信息,生成window_dump.xml

*** adb shell input text “123” 输入text


举例:


  1、打开cmd,进入到当前文件夹中,输入命令 adb devices 查看当前与电脑连接的设备(前提是,手机打开usb调试模式),可以查看已连接成功的手机。


2、 若手机成功连接,输入命令 adb shell input tap 100 100 , 表示点击屏幕上坐标为(100,100)的点,如果不知道需要点击的点的具体位置的话可以在手机开发者模式中设置。


二. adb 模拟按键:


1. 比如使用 adb shell input keyevent 命令,不同的 keycode 能实现不同的功能,完整的 keycode 列表详见 KeyEvent,摘引部分我觉得有意思的如下:


keycode 含义

3 HOME 键

4 返回键

5 打开拨号应用

6 挂断电话

24 增加音量

25 降低音量

26 电源键

27 拍照(需要在相机应用里)

64 打开浏览器

82 菜单键

85 播放/暂停

86 停止播放

87 播放下一首

88 播放上一首

122 移动光标到行首或列表顶部

123 移动光标到行末或列表底部

126 恢复播放

127 暂停播放

164 静音

176 打开系统设置

187 切换应用

207 打开联系人

208 打开日历

209 打开音乐

210 打开计算器

220 降低屏幕亮度

221 提高屏幕亮度

223 系统休眠

224 点亮屏幕

231 打开语音助手

276 如果没有 wakelock 则让系统休眠

2. input 命令的一些用法举例


 电源键


 命令:


?


1


adb shell input keyevent 26


执行效果相当于按电源键。


 菜单键


 命令:


?


1


adb shell input keyevent 82


 HOME 键

 命令:


?


1


adb shell input keyevent 3


返回键

命令:


?


1


adb shell input keyevent 4


音量控制

增加音量:


?


1


adb shell input keyevent 24


降低音量:


?


1


adb shell input keyevent 25


静音:


?


1


adb shell input keyevent 164


媒体控制


播放/暂停:


?


1


adb shell input keyevent 85


停止播放:


?


1


adb shell input keyevent 86


播放下一首:


?


1


adb shell input keyevent 87


播放上一首:


?


1


adb shell input keyevent 88


恢复播放:


?


1


adb shell input keyevent 126


暂停播放:


?


1


adb shell input keyevent 127


点亮/熄灭屏幕


可以通过上文讲述过的模拟电源键来切换点亮和熄灭屏幕,但如果明确地想要点亮或者熄灭屏幕,那可以使用如下方法。


点亮屏幕:


?


1


adb shell input keyevent 224


熄灭屏幕:


?


1


adb shell input keyevent 223


三、使用python脚本自动运行cmd 命令


 在adb文件夹下建立一个python文件


?


1


2


import os


os.system('adb shell input tap 100 100');


运行脚本,发现与在命令行输入相同语句有同样的效果。


2、也可以使用subprocess.Popen,最简单使用方式如下,设置shell=True,就不会弹出cmd框


?


1


process = subprocess.Popen('adb shell input tap 14 1402',shell=True)

2021年8月22日 星期日

enter 自動跳到下一個 tabindex

 Private Sub Txt_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Txt.KeyDown

 k = sender.tabindex

 NextControl(k)

End Sub


 Private Sub NextControl(ByVal ctrlTabIndex As Integer)

        For Each ctrl As Control In Me.Controls

            If (ctrl.TabIndex) = (ctrlTabIndex + 1) Then

                ctrl.Focus()

            End If

        Next

 End Sub

ESC/POS: Print QR Code on Receipt

 參考來源

--

QR code has been used widely in the past few years; either for ticketing, purchasing and etc. Since last year, it's usage become trending technology when e-wallet industry emerge. Some of us might have different ways on how to print it on receipt/ticket; send qr code as image and print, or send the data to be convert to qr code and let the printer do the work. This entry will guide you on how to print qr code using receipt printer (Model: Pioneer STEP-5e Receipt Printer) by using ESC/POS command in C#/.NET.


COMMON ESC/POS COMMANDS

ESC a 0 = align left

ESC a 1 = align center

ESC a 2 = align right

ESC E 1 = turn on bold/emphasize mode

ESC E 0 = turn off bold/emphasize mode

ESC d n = feed/extra nth line

GS V 66 = partial cut for receipt

ESC @ = initialize printer


QRCODE ESC/POS COMMANDS

1. Selects QR Code model

Function 165: GS ( k pL pH cn fn n1 n2


2. Sets the module size of QR Code

Function 167: GS ( k pL pH cn fn n


3. Selects the error correction level for QR Code

Function 169: GS ( k pL pH cn fn n


4. Stores symbol data in the symbol storage area

Function 180: GS ( k pL pH cn fn m d1,d2...dk


5. Prints QR Code symbol data stored in the system saving region

Function 181: GS ( k pL pH cn fn m


Let's get into the coding part. Hooray! Please note that different receipt printer might use different ESC/POS command as some might use custom ESC/POS commands; such as Star TSP100 Cutter (TSP143). Please refer to the receipt printer manual accordingly. :D


//Convert ASCII/Decimal

string ESC = Convert.ToString((char)27);

string GS = Convert.ToString((char)29);

string center = ESC + "a" + (char)1; //align center

string left = ESC + "a" + (char)0; //align left

string bold_on = ESC + "E" + (char)1; //turn on bold mode

string bold_off = ESC + "E" + (char)0; //turn off bold mode

string cut = ESC + "d" + (char)1 + GS + "V" + (char)66; //add 1 extra line before partial cut

string initp = ESC + (char)64; //initialize printer

string buffer = ""; //store all the data that want to be printed

string QrData = "LianaAliBlogspotMy"; //data to be print in QR code

//Print Text

buffer += center;

buffer += "This text is align center!\n"; //to enter or add newline: \n

buffer += left;

buffer += "This text is align left!\n"; //align left is already set as default if not specified

//Print QRCode

Encoding m_encoding = Encoding.GetEncoding("iso-8859-1"); //set encoding for QRCode

int store_len = (QrData).Length + 3;

byte store_pL = (byte)(store_len % 256);

byte store_pH = (byte)(store_len / 256);

buffer += initp; //initialize printer

buffer += m_encoding.GetString(new byte[] { 29, 40, 107, 4, 0, 49, 65, 50, 0 });

buffer += m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 67, 8 });

buffer += m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 69, 48 });

buffer += m_encoding.GetString(new byte[] { 29, 40, 107, store_pL, store_pH, 49, 80, 48 });

buffer += QrData;

buffer += m_encoding.GetString(new byte[] { 29, 40, 107, 3, 0, 49, 81, 48 });

//Cut Receipt

buffer += cut + initp;

//Send to Printer

RawPrinterHelper.SendStringToPrinter(ConfigurationManager.AppSettings["STEP-5e"], buffer);


There you go. Selamat mencuba! *Yeay!*


2021年8月6日 星期五

苦茶樹-漏摘掉花的苦茶果

 (20210801)有些以前的記錄,就不再追放上來了

就從上週的記錄,正常時間分享了

也是割草,看看歷經努力照顧的苦茶樹也長大了

去年乾旱,真的讓我心痛;苦心照顧的樹,都因缺水;枯死了快40棵

看看漏摘掉花的苦茶果也在長大顆了







2021年8月1日 星期日

苦茶樹-施有機肥料

 (20191214)看小苗有長大,整個動力就出現了;也開始下成本買有機肥來施作

大果開花,真豔麗





苦茶樹-小苗也要開花了

 (20191026)有掛標籤的是小苗要開花了;已開花是大果老樹






苦茶樹-大果花苞

 (20190921)又來割草了,阿爸的大果也長出花苞準備要開花了





苦茶樹-總算長新葉子了

 (20190725)小苗總算有在長大了,已開新葉了




苦茶樹-大果

 (20190608)看著小苗,又看看阿爸留下的大果,又結果大顆了喔




苦茶樹-來看看長大了沒

 (20190518)草才剛割完沒幾週,苦茶樹還是小小棵...





苦茶樹-波爾多液

 (20190511)看了苦茶樹小苗,有的怪怪的;開始查問,說什麼要噴波爾多液,那就買來噴看看




原來農夫好累啊...要除草

(草比苦茶樹高N倍)(20190504) 

看了才地植不久而已,到5月就草比苦茶樹高N倍了

只好開始過點正常農生活了日子了

割草~割滿...盼著小小苦茶樹能快長大阿







苦茶樹小苗地植了

 (20190205)經過一翻的大努力後,總算把400棵的苦茶樹小苗地植

剛好過年(2019/2/5) 帶兒子來看看阿爸種的苦茶樹



苦茶樹-自己研究怎苦茶籽摧芽育苗長葉子了

 天天看,真的長特別慢的;也只能耐心~再耐心的等它長大

(有芽點的照片是蓮霧籽)






苦茶樹-自己研究怎苦茶籽摧芽育苗

 2018年帶回的苦茶籽

因不會處理,剩沒幾粒摧芽成功的;有發芽的就放盆內種看看,順便觀察




假日農夫的啟點(苦茶樹)

前言...

在都市生活了2x年,阿爸留下的田

看了,整塊都被加種咖啡樹;這須要大量人工採收,不符成本

決定將整片咖啡樹全砍除,整理後;改種苦茶樹(也是找好久,看看哪種較有經濟效益)

阿爸留下的苦茶樹(2018/11/17 採果)