- 修正快速鍵不能使用的問題
- 修正全形輸入的 bug
- 改善設定介面
成立 PCMan Facebook 專頁
之前常被許多網友要求加 Facebook,但是數量過多難以管理,大部分也都不認識,無法一一加入,所以成立 PCMan FB 專頁。未來長篇的文章還是會放 Blog 上,而平常的小動態會放在 FB。
另外,現在也可以使用 http://blog.pcman.im/ 來連到本網站
另外,現在也可以使用 http://blog.pcman.im/ 來連到本網站
2016年2月26日 星期五
2016年2月11日 星期四
PIME 輸入法平台 + 新酷音輸入法 v0.08
新酷音輸入法 Windows 版 v0.08 又來了
下載: https://github.com/EasyIME/PIME/releases/download/v0.08/PIME-0.08-setup.exe
本次修正:
本次最重要的修改,其實是程式碼註解的全面中文化。以往開發自由軟體的習慣,為了和跨國的不同開發者合作,文件和程式碼及註解都是全英文。但考量注音類的中文輸入法是台灣特有,沒有跨國合作開發的需求,反而是應該幫助本國開發者理解程式,所以花了一天重整,加上大量的中文註解,讓有興趣動手改良的朋友容易研究。
只要用文字編輯器打開 C:\Program Files (x86)\PIME\server\input_methods\chewing\chewing_ime.py 這個檔案,就可以閱讀 Python 撰寫的程式碼,甚至動手修改。
節錄其中一小段程式碼:
可以發現,真的很好閱讀。主要處理輸入的部份在 filterKeyDown() 和 onKeyDown() 兩個函數內,如果是熟悉 Python 的開發者,搭配中文註解很容易就能讀懂。
本軟體還在開發中,難免會有些 bugs。如果你是會寫 python 的使用者,不妨點開程式碼,或許馬上就會發現有能協助修正的地方。
自己動手修改並除錯程式的方法:
關於程式的架構,這裡有完整的 Hacking guide 有介紹:
https://github.com/EasyIME/PIME/blob/master/HACKING.txt
有興趣參與開發或研究的朋友,歡迎閱讀!
下載: https://github.com/EasyIME/PIME/releases/download/v0.08/PIME-0.08-setup.exe
本次修正:
- 無法正確設定選字按鍵
- 修正 Windows 8/10 app 內無法使用
- 改善安裝程式,協助安裝 VC++ 2015 runtime,及改善解安裝流程
- 嘗試改善設定工具無法儲存問題 (不確定有無修好)
- 新酷音模組程式碼註解全面中文化,方便開發者研究
本次最重要的修改,其實是程式碼註解的全面中文化。以往開發自由軟體的習慣,為了和跨國的不同開發者合作,文件和程式碼及註解都是全英文。但考量注音類的中文輸入法是台灣特有,沒有跨國合作開發的需求,反而是應該幫助本國開發者理解程式,所以花了一天重整,加上大量的中文註解,讓有興趣動手改良的朋友容易研究。
只要用文字編輯器打開 C:\Program Files (x86)\PIME\server\input_methods\chewing\chewing_ime.py 這個檔案,就可以閱讀 Python 撰寫的程式碼,甚至動手修改。
節錄其中一小段程式碼:
可以發現,真的很好閱讀。主要處理輸入的部份在 filterKeyDown() 和 onKeyDown() 兩個函數內,如果是熟悉 Python 的開發者,搭配中文註解很容易就能讀懂。
本軟體還在開發中,難免會有些 bugs。如果你是會寫 python 的使用者,不妨點開程式碼,或許馬上就會發現有能協助修正的地方。
自己動手修改並除錯程式的方法:
- Ctrl + Alt + Del 叫出工作管理員,強制關閉 PIMELauncher.exe 和 pythonw.exe 兩個 processes (這是 PIME 的 server 部份)
- 修改 chewing_ime.py 或是其他想修改的 python code
- 手動執行 C:\Program Files (x86)\PIME\server\server.py 這個程式,就能顯示出 python 的終端機視窗,可在裡面看到除錯訊息
- 打開記事本或其他軟體,測試輸入
- 發現錯誤,關掉 server.py,改過之後,再重新啟動 server.p,即可繼續測試 (須先在記事本切換到其他輸入法,再切回來,讓它重新連上 server)
關於程式的架構,這裡有完整的 Hacking guide 有介紹:
https://github.com/EasyIME/PIME/blob/master/HACKING.txt
有興趣參與開發或研究的朋友,歡迎閱讀!
2016年2月9日 星期二
PIME 輸入法架構 + 新酷音輸入法 v0.06 正式釋出
春節假期「一日雙版」紀錄達成,早上出 v0.05,晚上出 v0.06
下載網址:https://github.com/EasyIME/PIME/releases/download/v0.06/PIME-0.06-setup.exe
這個版本,是開發 PIME 平台到現在為止,第一個日常可用的穩定版!
久違的新酷音輸入法 Windows 版本又回來了,歡迎大家下載使用。
基本上已可取代原先 TSF 版的大部分功能,操作上差異不大。
本次改版重點:
1. 中英文全半形切換 bug修正
2. 偵測變更正確重新載入設定
3. IPC 安全性修正
4. 改進安裝程式,更穩固正確
5. 支援語言列圖示
6. 修正部份記憶體沒有正確釋放問題
程式碼主要由 python 和 javascript 寫成,註解很多,容易閱讀
歡迎有興趣的朋友下載研究,加入開發或改進的行列!
下載網址:https://github.com/EasyIME/PIME/releases/download/v0.06/PIME-0.06-setup.exe
這個版本,是開發 PIME 平台到現在為止,第一個日常可用的穩定版!
久違的新酷音輸入法 Windows 版本又回來了,歡迎大家下載使用。
基本上已可取代原先 TSF 版的大部分功能,操作上差異不大。
本次改版重點:
1. 中英文全半形切換 bug修正
2. 偵測變更正確重新載入設定
3. IPC 安全性修正
4. 改進安裝程式,更穩固正確
5. 支援語言列圖示
6. 修正部份記憶體沒有正確釋放問題
程式碼主要由 python 和 javascript 寫成,註解很多,容易閱讀
歡迎有興趣的朋友下載研究,加入開發或改進的行列!
2016年2月7日 星期日
PIME 輸入法架構 + 新酷音輸入法 v0.05
PIME 輸入法安裝程式,預設將會安裝新酷音輸入法的模組。
在此可以下載最新的 PIME v0.05: https://github.com/EasyIME/PIME/releases/download/v0.05/PIME-0.05-setup.exe
本次並內建了新的新酷音輸入法設定工具 。對使用者來說沒有顯著的差別,並沒有新功能 (甚至部份功能還沒完成),但是這個工具完全是使用 HTML + JavaScript 撰寫。(但讀寫設定檔的部份,無法用標準 JavaScript 達成,不得已用了一點微軟特有的 ActiveX 元件搭配)
對使用者來說,這樣的重寫意義不大,畢竟功能沒有改善。但對於開發者來說,這是意義相當重大的改變。過往開發 Windows 輸入法的門檻很高,需要 C++ 和 COM 的技術,還要了解很多低階的系統細節,但藉由 PIME 的包裝,撰寫輸入法模組的開發者,只需要會寫 Python 即可,不需要了解 Windows TSF 底層細節,大大降低一般開發者加入維護的門檻。
設定工具改用 JavaScript 和 HTML 重寫也是一樣的原因,降低開發的門檻。
而改為 server/client 架構可以增進穩定性,也讓除錯和開發變得快速許多。現在看不到顯著的好處,但是對於未來長遠的維護和開發,這樣的架構是大大有利。
新年新氣象,就是要用新架構,開發新軟體!
祝大家新年快樂!
PIME 系統架構介紹:https://github.com/EasyIME/PIME/blob/master/HACKING.txt
開發輸入法模組範例:https://github.com/EasyIME/PIME/tree/master/server/input_methods/meow
(p.s. 吃自己的狗食:本文在 Windows 10 系統下,使用 PIME 版的新酷音撰寫完成。)
2016年2月1日 星期一
PIME Windows 輸入法平台釋出 v0.03
先前曾經有在 COSCUP 2015 演講過我開發的 PIME 輸入法平台,但隨後沉寂了一陣子。這兩天有空,終於重新整理了架構,出了新的版本,並且提供了全新的安裝程式,裝好即可使用。
https://github.com/EasyIME/PIME/releases/download/v0.03/PIME-0.03-setup.exe
有興趣研究細節的朋友,這裡有程式碼:
https://github.com/EasyIME/PIME
還新增了一份 Hacking guide 解說了程式的架構跟目錄結構:
https://github.com/EasyIME/PIME/blob/master/HACKING.txt
PIME 是在 Windows上使用 Python 3 開發 TSF 中文輸入法的平台,目前支援到 Windows 10,並且能支援 Windows app container (Metro mode)。可以讓開發者在不了解系統細節的情況下,單純使用 Python 就能實作支援 Windows 的輸入法模組。
本次重要修改如下:
https://github.com/EasyIME/PIME/releases/download/v0.03/PIME-0.03-setup.exe
理論上,使用 github 上釋出的程式碼可以完全重新編譯整個套件,但因為有不少元件,不但都要放到正確的位置,還要使用指令分別手動註冊輸入法模組,很難全部手動正確設定,強烈建議使用包好的安裝程式,裝好了再把你想修改的檔案換掉即可。
https://github.com/EasyIME/PIME/releases/download/v0.03/PIME-0.03-setup.exe
有興趣研究細節的朋友,這裡有程式碼:
https://github.com/EasyIME/PIME
還新增了一份 Hacking guide 解說了程式的架構跟目錄結構:
https://github.com/EasyIME/PIME/blob/master/HACKING.txt
PIME 是在 Windows上使用 Python 3 開發 TSF 中文輸入法的平台,目前支援到 Windows 10,並且能支援 Windows app container (Metro mode)。可以讓開發者在不了解系統細節的情況下,單純使用 Python 就能實作支援 Windows 的輸入法模組。
本次重要修改如下:
- 安裝程式自帶一份 python 3.5 (32-bit) 環境,不需要使用者手動安裝 python,也不影響系統上已有的其他 python 版本,不須考慮 32/64-bit 混合使用問題。
- 將 Win32 API 相關的操作全部從 python code 中移除,改用 C++ 的模組封裝在 libpipe 內。這有兩個巨大的好處
- 不再需要安裝 pywin32 模組
- 若要移植 PIME 架構到其他語言 (例如 Node.js),可直接用 ffi 載入 libpipe 來處理系統底層的部分,而不用自己撰寫,使得移植變得可能而且相當簡單。
- 改進安裝程式,正確啟動 server,安裝完即可直接開始使用
https://github.com/EasyIME/PIME/releases/download/v0.03/PIME-0.03-setup.exe
理論上,使用 github 上釋出的程式碼可以完全重新編譯整個套件,但因為有不少元件,不但都要放到正確的位置,還要使用指令分別手動註冊輸入法模組,很難全部手動正確設定,強烈建議使用包好的安裝程式,裝好了再把你想修改的檔案換掉即可。
2015年12月19日 星期六
[教學] Raspberry Pi 搭配力量感測器 (force sensing resistor)
前言
Raspberry Pi 是像名片一樣大小的低價電腦 ,搭配各種外接裝置,能做許多應用。最近對這類開發板有興趣,於是我也買了一片 Raspberry Pi 2 來學習使用。原計畫的應用要搭配可感測壓力的 sensor,偵測使用者施壓的力量大小,但過程中遇到許多困難,尤其是類比訊號的 sensor 適合 Arduino 用,但接上 Raspbery Pi 無法直接使用。基於這方面的中文文件較少,逐一摸索克服之後,決定寫一篇教學,分享給有同樣需要的朋友,可以少走一些冤枉路。本文使用的硬體裝置
- Raspberry Pi 2 開發板
- 類比-數位轉換器 (ADC): Microchip MCP3008
- 力量感測 (FSR): Interlink FSR 406
- 麵包板及各種杜邦跳線
| MCP3008 |
| FSR 406 |
詳細實驗過程
類比-數位轉換器 (ADC, analogue to digital converter)
坊間買得到的 sensors,部份是輸出類比訊號 (例如 linear hall effect sensor、溫度感測...等等),而 Raspberry Pi 無法讀取類比訊號 (Arduino 可以),要額外加裝一枚 ADC 晶片,才能讀取。但這是值得的投資,可以在不用買 Arduino 轉板的情況下,讓 RPi 可以玩 Arduino 的類比 sensors。推薦大家用 Microchip MCP3008,因為外國網站的教學幾乎都是這款,資料好找。缺點是電子商場不常賣。拍賣網站可取得,但推薦 RS components 網站訂購,便宜不少還免運費 (缺點是一次一定要買兩顆以上,到貨要一週)
MCP3008 是 10-bit 的 ADC,可以將輸入類比訊號轉成 0 - 1024 之間的數值,透過 SPI 界面 (不是一般 GPIO) 讓 Raspberry Pi 讀取
連接 MCP3008 到 RPi 有兩篇不錯的教學可以參考 (請搭配下列注意事項):
https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi/overview
http://atceiling.blogspot.tw/2014/04/raspberry-pi-mcp3008.html#.VnWKzHYiLmU
有幾點要特別注意的
- 這兩篇適用舊款 Raspberry Pi 一代,若是 RPi2,照著前述教學文件接,是完全不會動的,因為 GPIO 腳位改了。請照新的 RPi2 腳位圖連接,接法相同,但所有 SPI 相關的 pin 位置幾乎都不同。
- Rasbian 系統預設沒開 SPI 界面,需要手動開啟 (可用 raspi-config 工具,在 Advanced 選項裡面開啟 SPI)
- 若 SPI 無法運作,可用 spi-test 程式檢測。需要注意的是,檢測時要用一條母-母跳線,把 SPIO MOSI 和 SPIO MISO 這兩個 pin 直接對接起來。這個動作很容易漏掉,會造成測試失敗。(原理是直接把 SPI 輸出 loop back 回輸入,也就是你送出去的資料會繞一圈送回來又送給自己,所以理論上只要 SPI 有運作,一定收得到資料,故可用來檢測)
力量感測器 (force sensing resistor)
感測的是「力量」而非「壓力」,偵測範圍約 10 g - 10 Kg,在 sensor 上有效區域施力都能偵測,但精度不佳,且無法判斷施力點位置。主要的生產商是 Interlink,型號從 FSR 400-408 有多種尺寸,但一般店面少見大尺寸,款式很少,建議網拍購買較便宜。(本文使用 FSR406)需要特別注意的,是 FSR 406 的連接方式。FSR 尾端的接頭"理論上"直接插上麵包板即可用,但這樣使用容易折彎連接頭造成 FSR 損壞或訊號干擾,建議還是用連接線。不幸的是,一般接 sensor 和麵包板用的杜邦 2.54 mm 跳線母頭,無法接上這款 FSR。經實驗可使用 JST (XH-style) 2.5 mm 的母頭代替,可密合得很好。建議購買這種線,然後在另外一端「自行壓製」杜邦 2.54 mm 的公頭,就可以製作出能從麵包板轉接到 FSR 406 的延長線了。
| XH-style 的 JST 2.5 mm 線,以及其塑膠頭 |
| FSR 406 的尾端接不上一般杜邦 2.54 跳線母頭,我問了三間電子商場,都說沒這種接頭,建議我直接焊接。我不死心,把每一種母頭都拿起來試接,發現 JST 2.5 mm 的正好可以密合,如圖,接得很好。 |
| 自行購買的杜邦 2.54 公端子和塑膠套,準備壓在 JST 2.5 線的另外一端 |
| 把 JST 2.5 mm 的線材,另外一端自行壓上杜邦 2.54 端子,就成了特製的延長線了,可以順利插入到麵包板上。理論上壓製線材,有專用的端子鉗,但是售價太過昂貴,我又很少用。所以最後是使用尖嘴鉗和蠻力土法煉鋼。一樣可以壓緊,也能用,但是形狀較為醜陋,而且我壓壞了一個... |
FSR 連接方式
連接 FSR 可以參考這篇教學,照著接即可,只有幾點要注意- 原教學是把電壓變化的類比訊號,接到 Arduino 的訊號輸入,而我們是要接給 ADC 讀取轉成數位訊號,所以是要改接到 MCP 3008 的 channel (0 - 8 都可以,程式內可以控制要讀哪個 channel)
- FSR 只是一個電阻,本身不發出訊號,但它受到壓力電阻會變小。所以施加電壓,通過的電流大小,就可以反映出所受到的力量 (但不是線性變化)。不過我們不能直接讀電流大小,所以需要額外串聯一個電阻 Rm 做 voltage dividing,來讀取 Rm 兩端的電壓,而這個電壓就是我們給 ADC channel 的訊號輸入。(原理是:當 FSR 受到越大壓力,電阻變小,則通過的電流越大,此時串聯的電阻 Rm 兩端就會有較高的電壓 V = I * Rm 所以我們讀取 ADC,就會讀到比較大的數值了)
- 施加外力大小,和 FSR 的電阻或可以量到的電壓都不是線性關係,請見官方文件有曲線圖
- 串接的電阻不同,會使得能夠測量到的數值範圍改變,雖然教學文件建議 10K歐姆,不一定適合每種應用,需要實驗。
如果還需要 FSR 更完整詳細的資訊,可參考這篇 Integration Guide
程式範例
#!/usr/bin/env python3
import time
import spidev
# Read SPI data from MCP3008, Channel must be an integer 0-7
def ReadADC(spi, ch):
if ((ch > 7) or (ch < 0)):
return -1
adc = spi.xfer2([1,(8+ch)<<4,0])
data = ((adc[1]&3)<<8) + adc[2]
return data
if __name__ == "__main__":
spi = spidev.SpiDev()
spi.open(0,0)
try:
while True:
value = ReadADC(spi, 0)
print("ADC", value, float(value)*100/1024, "%")
time.sleep(0.1)
except KeyboardInterrupt:
pass
spi.close()
省錢小撇步
使用麵包板時,經常需要用跳線連接。市售跳線盒很方便,有多種長度彩色的短線可用。或也可用杜邦公-公跳線取代,但跳線盒一個通常要 80 - 150 元不等,而杜邦跳線現成的一包十條約 65元,長度通常太長,很難使用。推薦可以買單芯線替代,用剪刀就能輕易剪出所需長度,再兩端剝皮,可做麵包板跳線,三公尺才約台幣 10 元,非常划算又好用。(剝皮用剪刀輕輕的就可以剝,小心一些並不需要專用鉗子)
| 把公-公跳線都換成單芯線,清爽很多,才花不到十元。缺點是我只買了一種顏色。後來我把接地的那幾條用奇異筆塗成黑色,就不會搞錯了... =.= 其實應該要買白色的,這樣需要什麼顏色的線就自己塗色就好了 XDD |
以上是本次實驗的經驗分享,希望對有在玩 RPi + FSR 的朋友有幫助。
2015年9月21日 星期一
成立 PCMan Facebook 專頁
之前常被許多網路上的朋友要求加 Facebook,但是數量過多難以管理
加上大部分我幾乎都不認識,實在無法一一過濾加入,所以決定成立 PCMan FB 專頁
未來長篇的文章還是會放 Blog 上,而平常的小動態會放在 FB
有興趣的朋友歡迎追蹤 https://www.facebook.com/pcman.im
上面的內容沒有固定的主題,就一般 FB 會放的東西 XD
加上大部分我幾乎都不認識,實在無法一一過濾加入,所以決定成立 PCMan FB 專頁
未來長篇的文章還是會放 Blog 上,而平常的小動態會放在 FB
有興趣的朋友歡迎追蹤 https://www.facebook.com/pcman.im
上面的內容沒有固定的主題,就一般 FB 會放的東西 XD
訂閱:
文章 (Atom)

