Sim's blog

電子工作はじめてみました

Netduinoでマルチスレッド(2)

2010-09-01 21:25:54 | Netduino
NetduinoでキャラクタLCDの続きになります。というか、その一つ前のNetduinoでマルチスレッドの続きになります。

Netduinoというよりは、C#の小ネタです。C#には匿名メソッド(anonymous method)という機能があります。

前回のマルチスレッドでは、マルチスレッドで動かすflashというメソッドを作っていました。どうせ1ヶ所からしか呼ばれないし、1回しか使わないメソッドにわざわざ名前をつけるのはめんどくさい、というときに使えるのが匿名メソッドです。具体的にはメソッドの名前を書いているところに、直接メソッドの中身を書けます。

Thread thread = new Thread(flash);
のように書いていたのを
Thread thread = new Thread( delegate(){ メソッドの中身 } );
のように書くことができます。

前回のマルチスレッドの例題を書き直したものになります。
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace ThreadTest2
{
    public class Program
    {
        static OutputPort LED1 = new OutputPort(Pins.ONBOARD_LED, false);
        static OutputPort LED2 = new OutputPort(Pins.GPIO_PIN_D13, false);

        public static void Main()
        {
            // write your code here
            Debug.Print("Hello, Multi-Threading");

            // 今回の新しい部分
            new Thread(delegate()
            {
                // スレッドの本体(並列実行になる)
                while (true)
                {
                    LED1.Write(!LED1.Read());       // LED1反転
                    Thread.Sleep(250);              // 250ミリ秒待つ
                }
            }).Start();

            // 本スレッド側でもLED2をチカチカ
            while (true)
            {
                LED2.Write(!LED2.Read());       // LED2反転
                Thread.Sleep(150);              // 150ミリ秒待つ
            }
        }

    }
}

なんというか、NetduinoじゃなくてもいいC#のお話ですね。
もしかして、これってクロージャっていうものなんでしょうか?

8月31日(火)のつぶやき

2010-09-01 00:00:00 | Twitter
00:51 from Echofon
RT: @ssci: うお。Netduino、予約商品が売り切れ。
00:52 from Echofon
おお、それは楽しみ RT: @jksoft913: 久々にブログを更新しました。「mbedを書く日記」 mbedを題材とした本を執筆中です。
http://bit.ly/cJcvci
00:55 from Echofon
うや、いつのまにか(葵)ちゃんにコールサインが。
08:13 from web
8 + 4 - 6 / 3
Sim0000への問題。8 6 3 4を組み合わせて10を作れ。 http://shindanmaker.com/27613
08:14 from web
(8 + 2 + 6 - 6) ^ 3 Sim0000への問題。 8 6 6 2 3を組み合わせて1000を作れ。 http://shindanmaker.com/28550
09:59 from Echofon
この暑さは何かが壊れているに違いない。修理してくれ。
10:07 from Echofon
うがー、750年も待てないーw RT: @cronos_sv: あー部品発注してるんですが、標準納期750年って回答が来てましてー (ぇ @Sim0000 この暑さは何かが壊れているに違いない。修理してくれ。
13:15 from Echofon
RT: @stastaka: 新しいethernet shieldのschematicが公開された
21:41 from Echofon
今日は東京ドームで野球観戦。ビールは1リットル。
21:45 from Twitpic
千石にあったArduino Mega用のプロトシールドの「白」


21:46 from Twitpic
千石の200円ジャンク。OMRONのでっかいリレーとか、チップLEDがはいってた。


22:17 from Echofon (Re: @OkibiWorksLabo
@OkibiWorksLabo 左手前の白いのはプリンタ用のキャップです。左のはPC用の6pinの電源コネクタです。セメント抵抗はありませんでした。ホットメルトの棒が一本はいってました。黒いのはイーサ用のキャップです。
22:18 from Twitpic
千石ジャンク。タンタルコンデンサがいっぱい


22:19 from Twitpic
千石のジャンク。チップLEDがいっぱい


22:19 from Twitpic
千石のジャンク。OMRONのリレー。結構でかい


22:22 from Twitpic
千石のジャンク。C1740という刻印があるけど、何だろう?


22:24 from Twitpic
千石のジャンク。603 7XEという刻印がある。何だろう?


22:29 from Echofon
おお、ありがとうございます。 RT: @OkibiWorksLabo: @Sim0000

- たぶんROHMの汎用トランジスタ 2SC1740Sです。http://bit.ly/cjto4q
22:40 from Echofon
重ねてありがとうございます。 RT: @OkibiWorksLabo: @Sim0000

- 訂正:2063ではなく2603でした。どっちにしろ怪しいですけど。2chあたりではもうこれで確定でいいだろ的な雰囲気だったようです。
22:40 from Echofon
ええ、結構いい感じでした。残りは少なかったかも。 RT: @morecat_lab: @Sim0000 千石の200円ジャンク袋、やはり買いましたか?私のもだいたい同じ物が入っていました。デカいみの虫クリップが一組入っていた。
23:00 from Echofon (Re: @OkibiWorksLabo
@OkibiWorksLabo チップトランジスタはほんと正体不明ですよね><
23:01 from Echofon
うちは2SC4682というストロボフラッシュ用が1個はいってました。 RT: @OkibiWorksLabo: そういえば2SC2347っていう東芝の高周波トランジスタ(fT(min)=650MHz)が1個だけ入ってた。
23:08 from Echofon
YAHOO知恵袋「トランジスタのE,C,B,の区別の方法を教えていただけますか」http://bit.ly/aaHRze
23:18 from web
そういえば、秋葉駅前のPC屋にdynabook AZが展示してあった。http://dynabook.com/pc/catalog/cloud/100621az/
23:47 from Twitpic
最近の秋月って、シリカゲルがはいってんのね。


by Sim0000 on Twitter