合計 昨日 今日

taketoshi
 
記事: 218
登録日時: 2010年10月30日(土) 14:49
お住まい: 日本国
日記: 日記を見る (210)
日記
- 12月 2017
+ 10月 2017
+ 8月 2017
+ 7月 2017
+ 6月 2017
+ 5月 2017
+ 4月 2017
+ 3月 2017
+ 2月 2017
+ 1月 2017
+ 12月 2016
+ 11月 2016
+ 10月 2016
+ 9月 2016
+ 8月 2016
+ 7月 2016
+ 6月 2016
+ 5月 2016
+ 4月 2016
+ 3月 2016
+ 2月 2016
+ 1月 2016
+ 12月 2015
+ 11月 2015
+ 10月 2015
+ 9月 2015
+ 8月 2015
+ 7月 2015
+ 6月 2015
+ 4月 2015
+ 3月 2015
+ 1月 2015
+ 12月 2014
+ 10月 2014
+ 9月 2014
+ 8月 2014
+ 7月 2014
+ 6月 2014
+ 5月 2014
+ 4月 2014
+ 3月 2014
+ 2月 2014
+ 1月 2014
+ 12月 2013
+ 11月 2013
+ 10月 2013
+ 9月 2013
+ 8月 2013
+ 7月 2013
+ 6月 2013
+ 5月 2013
+ 4月 2013
+ 3月 2013
+ 2月 2013
+ 1月 2013
+ 10月 2012
+ 9月 2012
+ 8月 2012
+ 7月 2012
+ 6月 2012
+ 5月 2012
+ 4月 2012
+ 3月 2012
+ 2月 2012
+ 1月 2012
+ 12月 2011
+ 11月 2011
+ 10月 2011
+ 8月 2011
+ 7月 2011
+ 6月 2011
+ 5月 2011
+ 4月 2011
+ 3月 2011
+ 2月 2011
+ 1月 2011
カテゴリー
フィード
次へ

Linuxすげー、C#で作ったソフトが動くよ!

パーマリンクby taketoshi on 2017年12月10日(日) 11:33

ラズパイ2をお友達で大学の先生をしている方から頂き、使い方の基礎を教えてもらったので
スマートミラーを造るためにラズパイを組み込み仕様にして遊んでいます。

P_20171210_112451.jpg
手前の白い箱がラズパイです
P_20171210_112451.jpg (118.53 KB) 表示数: 4 回


一番驚いたのがC#のソフトウェアがそのままラズパイで動く!すごいよこれ。
LinuxにはMonoDeveloperっていう、Windows版VisualStudioみたいな統合開発環境もある。
このMono上でC#のソフトがそのまま動きます。.net凄いです。

表示のサイズが意図したものと違うのでここを修正すればそのまま使えそう。
そもそもどうやってやるのか解らなかったときに比べると大きな進歩。

ラズパイではカメラモジュールやLED制御が出来るので色々な事が出来そうでワクワクしています。
初めてのLinuxなので解らないことがイッパイですが頑張っています。

SSHでリモート接続してハードウェアを巻き込んだIoT機器を作ってみたい。
添付ファイル
最後に編集したユーザー taketoshi [ 2017年12月10日(日) 11:35 ], 累計 1 回

コメント数: 2 閲覧数: 82

Kinect販売中止、FFFTP開発終了、スマートミラーラズパイ移植とか。

パーマリンクby taketoshi on 2017年10月28日(土) 14:27

Kinectの生産終了のニュースが流れてしまいました。
近未来的なデバイスとしてデビューしましたがとうとう生産終了です。
http://japanese.engadget.com/2017/10/27/kinect/

未知なる可能性を十分に秘めていましたが中々引き出せずに終わってしまいました。
他にも似たようなデバイスはありますが、KinectSDKを触っていた者として少し残念です。


同時にFFFTPの開発が終了だそうです。
http://www.itmedia.co.jp/news/articles/ ... ws112.html

オープンソースなので引き継ぎたい酔狂な方は挙手してくれと募集しております。
私はスキルがとても足りそうにありません。どなたか如何でしょうか。


前々から自治会長をやっているのですが、そのつながりでIT系の大学の先生とお友達になり
「C#で開発したスマートミラープログラムをラズパイに移植しようぜ!」ってことになりました。
あっちは本職ですが、サンデープログラマーの仲間が出来てうれしい限りです。

コメント数: 0 閲覧数: 316

スマートミラー作ってみた

パーマリンクby taketoshi on 2017年8月25日(金) 00:01

どうも。僕です。

表題の通りスマートミラーを作ってみた。

C#でネットからニュースと天気予報を取得するソフトを作り
マジックミラーの裏にディスプレイをはめ込んで出力してます。

組み読み用のパソコンはスティックPCを使用
http://pcsyosinsya.com/review_dospara_dgstk1.html
(ラズパイの方が向いてそうだなー・・・・)

P1018449.JPG
P1018449.JPG (227.83 KB) 表示数: 28 回


ミラーの中のモニタに情報が浮かび上がり近未来感あふれる仕上がりです。
洗面台に組み込めば忙しい朝でも情報の取得が可能ッ!

改良しながらもう少し遊んでみようかと思っています。


#YuOさんと沖殿。前述の日記でアドバイス頂きありがとうございます。
#一通り目を通させていただきました。レスは後日書かせていただきます。
添付ファイル
最後に編集したユーザー taketoshi [ 2017年8月25日(金) 00:14 ], 累計 1 回

コメント数: 0 閲覧数: 582

電子看板ソフトの部

パーマリンクby taketoshi on 2017年8月20日(日) 16:59

どうも。僕です。

お遊びでC#を用い、組み込み用のサイネージソフトウェアを作っています。
ニュース情報はNHKのRSSを取得し、天気はライブドア提供のWetherHackから取得しています。

汚いけどコードはこんな感じ、エラー処理なんぞも未実装。

コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Globalization;
using System.ServiceModel.Syndication;
using Codeplex.Data;
using System.Xml;
using System.Net;
 
namespace デジタルサイン
{
    public partial class Form : System.Windows.Forms.Form
    {
        public Form()
        {
            InitializeComponent();
        }
 
        private void GetNowTime()
        {
            DateTime dt = DateTime.Now;
            DateTime today = DateTime.Today;
            Hour_label.Text = dt.Hour.ToString();
 
            if (dt.Minute < 10)
            {
                min_label.Text = string.Format("0{0}", dt.Minute.ToString());
            }
            else
            {
                min_label.Text = dt.Minute.ToString();
            }
            day_rabel.Text = today.ToString("MMMM.dd", new CultureInfo("en-US")); ;
            week_label.Text = today.ToString("dddd", new CultureInfo("en-US")); ;
 
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            time_timer.Start();
            tenn_timer.Start();
            NewsTimer.Start();
            GetNowTime();
            GettWeatther(); SetWetherlabel();
            GetNews(); SetNews();
            ResizeWindow();
        }
 
        private void time_timer_Tick(object sender, EventArgs e)
        {
            GetNowTime();
        }
 
        private void tenn_timer_Tick(object sender, EventArgs e)
        {
            tenn.Visible = !tenn.Visible;
        }
 
        private void NewsTimer_Tick(object sender, EventArgs e)
        {
            NewsCountUp(); SetNews();
        }
 
        private void Form_SizeChanged(object sender, EventArgs e)
        {
            ResizeWindow();
        }
    }
}
namespace デジタルサイン
{
    partial class Form
    {
 
        static List<SyndicationItem> newsbase;//ニュース格納配列の宣言
        static int nNowNewsNumber = 0;//表示中のニュース番号
 
        //リストにニュース情報を格納する関数
        static void GetNews()
        {
            const string url = "http://www3.nhk.or.jp/rss/news/cat";
 
            for (int i = 0; i < 6; i++)
            {
                string szRSS = String.Format("{0}{1}.xml", url, i);              
                using (XmlReader rdr = XmlReader.Create(szRSS))
                {
                    SyndicationFeed feed = SyndicationFeed.Load(rdr);
                    newsbase = new List<SyndicationItem>();//ニュース格納配列の実体化
 
                    foreach (SyndicationItem item in feed.Items)//情報の取得
                    {
                        newsbase.Add(item);
                    }
                }
            }
        }
 
        //ニュース番号のインクリメント関数
        public void NewsCountUp()
        {
            if (nNowNewsNumber == newsbase.Count - 1)
            {
                nNowNewsNumber = 0;
            }
            else
            {
                nNowNewsNumber++;
            }
        }
 
        //ラベルにニュース情報を表示する関数
        public void SetNews()
        {
            newstitle_label.Text = newsbase[nNowNewsNumber].Title.Text;
            newssentence_label.Text = newsbase[nNowNewsNumber].Summary.Text;
        }
 
        public struct watherstruct
        {
            public string date;//日付
            public string telop;//天気情報
            public dynamic todaymax;//最高気温
            public dynamic todaymin;//最低気温
            public dynamic sentence;//天気概要文書
        }
 
        static List<watherstruct> watherbase;//天気情報構造体リストの宣言
        const string NO_VALUE = "--";
 
        //天気情報の取得関数
        static void GettWeatther()
        {
            var url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=130010";
            var req = WebRequest.Create(url);
 
            watherbase = new List<watherstruct>();
 
            using (var res = req.GetResponse())
            using (var s = res.GetResponseStream())
            {
                dynamic json = DynamicJson.Parse(s);
                watherbase = new List<watherstruct>();
                //天気概況文
                var situation = json.description.text;
 
                //ここから天気予報データの取得スタート
                foreach (dynamic g in json.forecasts)
                {
                    watherstruct temp = new watherstruct();
                    temp.date = g.date;
                    temp.telop = g.telop;
                    if (g.temperature.max != null)
                    {
                        temp.todaymax = string.Format("{0}℃", g.temperature.max.celsius);
                    }
                    else
                    {
                        temp.todaymax = string.Format("{0}℃", NO_VALUE);
                    }
                    if (g.temperature.min != null)
                    {
                        temp.todaymin = string.Format("{0}℃", g.temperature.min.celsius);
                    }
                    else
                    {
                        temp.todaymin = string.Format("{0}℃", NO_VALUE);
                    }
                    temp.sentence = json.description.text;
                    watherbase.Add(temp);
                }
            }
        }
 
        //天気情報の表示関数
        void SetWetherlabel()
        {
            wather_label.Text = watherbase[0].telop;
            maxtemplature_label.Text = watherbase[0].todaymax;
            mintemplature_label.Text = watherbase[0].todaymin;
        }
 
        private int width = 0;//ウインドウサイズ横
        private int height = 0;//ウインドウサイズ縦  
       
        //ラベルコントロールのサイズ調整と位置調整関数
        public void ResizeWindow()
        {
            width = this.Size.Width;
            height = this.Size.Height;
            Point pt_hour = new Point(width - 700,44); ;
            Hour_label.Location = pt_hour;
 
            Point pt_min = new Point(width - 350, 44); ;
            min_label.Location = pt_min;
 
            Point pt_tenn = new Point(width - 450, 26); ;
            tenn.Location = pt_tenn;
 
            Point pt_day = new Point(width - 650, 256);
            day_rabel.Location = pt_day;
 
            Point pt_week = new Point(width - 650,405);
            week_label.Location = pt_week;
 
            Size sz_newssize = new Size(width - 200,height - 100);
            newssentence_label.Size = sz_newssize;
 
        }
    }
}


C#でソフトウェアを開発したのは初?かもしれないが
200行ちょっとでネットから情報を拾ってこれるコードが作れるなんて素敵。
同時に今まで使ってたピュアCやWinAPIのマゾさに驚愕。

C#の勉強もそんなにしてないけどCやらC++の基礎ベースがあるからすんなり入ることが出来ました。。

.png
.png (11.44 KB) 表示数: 164 回


次回はこれを予め作っておいたガジェットに組み込みます。
添付ファイル

コメント数: 2 閲覧数: 810

物凄く人が作った物を欲するときがある。

パーマリンクby taketoshi on 2017年8月15日(火) 23:31

普段の生活に追われて頭が回らなくなったとき物凄く人が作った物を欲するときがある。
ゲームではない、小説ではない。それは漫画か映画だ。

夏休みの最後に。家内が「君の名は」をレンタルしてきたので家族全員で観覧しました。
最初は高校生の恋愛モノを観る年齢でもないのだが・・と思っていたのだけど、
意外な展開が待っていて期待より楽しんで見る事が出来ました。
仕事に戻る前に少しリフレッシュできたと思う。

全編を通してどっかで見たことある光の演出・・・と思っていたら
この人ファルコムでイース2エターナルのOPムービー作ってたのね。
これこそ高校生の時ハートを鷲掴みされた思い出があります。

君の名は。オッサンが見ても楽しめました。

コメント数: 2 閲覧数: 743

オンラインデータ

登録ユーザー: なし