skip to main | skip to sidebar

顯示具有 Tcl 標籤的文章。 顯示所有文章
顯示具有 Tcl 標籤的文章。 顯示所有文章

2011年12月1日 星期四

Serial2Keystroke

先前我們提到 Arduino Uno Keyboard 可以讓 Arduino 透過 USB 介面送出按鍵敲擊動作 (keystroke) 給電腦,不過 Arduino Uno Keyboard 目前僅限 Uno 或 Mega 2560 的板子才能使用。假如我們用的是 Duemilanove 或是其它只能走 Serial 通訊的 Arduino 板子,這樣也可以辦得到嗎?答案是可以的。方法是這樣:

基本上這個解法分成兩個部份:

1) 要有一支 Arduino sketch,這支程式負責送字元到 serial port

2) 我們還要一支 Serial-to-Keystroke 的 PC 端工具,這支程式會讀取來自 serial port 上的資料並且負責把資料轉換成 keystrokes

聽起來有點玄嗎?事實上是很簡單的。

下載本文範例及工具

這篇提到的範例跟工具我全部打包好了,你可以點底下的連結下載:

http://goo.gl/itpNS

Hello World

底下是一支很簡單的 Arduino sketch (senda.ino),它會每隔 1 秒鐘送出一個 "Hello World" 字串到 serial port:

請打開 Arduino IDE 把上面這支程式上傳到 Arduino 板子上。

2011年4月14日 星期四

4) 撰寫可以跟 WinLIRC TCP Server 溝通的程式

這篇是給 WinLIRC 進階使用者或開發者看的。

WinLIRC TCP Server

WinLIRC 內部有一個 TCP Server,跑在 port 8765 上,最多同時可以有 16 個 clients 跟它連線。每當成功解出遙控器一個按鈕的紅外線編碼的時候,TCP Server 就會送出一行 ASCII 字串給所有的 clients,字串裏描述被按下的按鈕為何。每行字串以換行字元 ('\n’) 作結尾。例如,client 可能會看到像這樣的字串:

00000000000cc03f 00 play BenQ.cfg

這行表示遙控器被按下按鈕 (play 鈕)。如果遙控器被按下一段時間(連發),client 可能會看到這樣的東西:

00000000000cc03f 01 play BenQ.cfg
00000000000cc03f 02 play BenQ.cfg
00000000000cc03f 03 play BenQ.cfg
00000000000cc03f 04 play BenQ.cfg
00000000000cc03f 05 play BenQ.cfg
00000000000cc03f 06 play BenQ.cfg

資料格式說明如下:

2008年10月20日 星期一

Singleton in SNIT(SNIT's Not Incr Tcl)

在 SNIT 中要怎麼實作 Singleton pattern 呢?可以參考這段程式:

package require snit

snit::type Singleton {
    typevariable _instance {}
    
    typeconstructor {
        set _instance [Singleton %AUTO%]
    }
    
    constructor {args} {
        if {$_instance != {}} {
            error "Singleton can only be accessed through \"getInstance\""
        }
    }
    
    typemethod getInstance {} { 
        return $_instance
    }
}

2008年8月26日 星期二

SNIT(SNIT's Not Incr Tcl)

我寫了一篇 SNIT 筆記,筆記內容大部份是從 Snit FAQSnit User Manual 中整理出來的。電子檔可在這個鏈結中取得:SNIT.pdf

註:SNIT(SNIT's Not Incr Tcl) 是 Tcl 的一套件物件系統,它是採 Component/Delegation (元件/委派)的 Object based model。Snit 所說的 data type 比較像 ada, algol 這類語言裡的 Abstract Data Type。

訂閱: 文章 (Atom)
 

AltStyle によって変換されたページ (->オリジナル) /