2014年2月15日土曜日

久しぶりにAndroidプログラミングserial monitor(5) threadから描画

その4はこちら

その3でFT232RLが載ったUSB serial基板をopen()することには成功しました.がっ、serialから受信したデータをread()すると空文字(ゼロ)になってしまって困っていまして、未だ解決してません.
USB serialのsampleアプリによるとread()をするのは別スレッドでやっていますので、わたしの知識レベルを超えているのですがスレッドを立ててそっちでread()してみようと思いました.

ところが、androidには別スレッドから描画できないという制約があるそうです.そういうのをシングルスレッドOSというらしい.なのでスレッドでread()したデータをその場でサクッとtablet画面に表示できません.う~ん、痒いところに手が届かないよぅ.

どーするのだろうと思って調べたら、handle.post()というのを使うとできるらしい.別スレッドではなくて自スレッドから描画するようになるらしいのですが、知識不足でよく理解できてません.ともあれ、以下のコードで0.5秒間隔でスレッドが起動され、画面にsystem時刻が表示されることは確認できました.知識を補うためにこの本をamazonで注文しましたが、役に立つかどうか...雪が降ってたので本屋に行く気が起きませんでした.
下記のコードはこの手順で動かせると思う.
1)eclipseの新規projectでthread0という名前のprojectを作る
2)srcの下のファイルに以下をコピペ
3)res/layoutの下のファイルを開いて、画面にTextViewを追加しておく
4)tabletをPCに繋ぐ
5)thread0→実行→Androidアプリ で画面に表示がパラパラと出ると思う


人気ブログランキングへ

-------------------------------
package com.example.thread0;

import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;

public class MainActivity extends Activity {
Handler handler = new Handler();
private TextView text;
private ScheduledExecutorService srv;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.textView1);
srv = Executors.newSingleThreadScheduledExecutor();
srv.scheduleAtFixedRate(new Runnable() {
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
text.append(new Date().toString()+"\n");
}
});
}
},  0, 500, TimeUnit.MILLISECONDS);
}
}

9 件のコメント:

  1. 安倍さんの改憲に対する考え、私は最高責任者発言の波紋?
    内閣、法制局を含む、合議制では、無いか?立憲とは、総理の権限と責任は?

    返信削除
  2. R70川名2014年2月17日 12:50

    3/1 週刊現代 ああ「僕らのソニ-」が.....を読んで、
    時代の環境変化と経営陣のcontrolに依って、急激な変化が起こっている様な感じを
    持ちました。私は、リタイヤした時期が良かったので、直接的な心配は有りませんが、
    働き盛りの人、若い社員、その他も含め、いろいろ心配して生活している事が想像出来ます。永続的に良い方向に進む方策は、無いのでしょうか?
    パナ、日立、シャ-プと比べ、コントラストが鮮明に見えます。その違いの原因は何なのでしょうか?

    返信削除
    返信
    1. ソニーOB:佐藤2014年2月17日 17:50

      基本的にはソニーの商品ってエンターテインメント向けであり、趣味の世界なのでなければ無いで困らない商品だからじゃないでしょうか?
      冷蔵庫、洗濯機・・・白物は生活する上での耐久消費財ですから。
      ソニーもキーデバイスはありますが。その昔、テープメディアはソニーでも稼ぎ頭でした。

      削除
    2. わたしもそう思います.ソニーは住宅機器とかないですからね.今夜、ソニーの記事をupします.

      削除
  3. ソニーOB:佐藤2014年2月17日 18:53

    今週(今日発売)の週刊東洋経済はソニーの特集のようです。
    こちらは雪で物流が滞っているので明日か明後日発売の様です。
    割増退職金の月額がさらに減額されたようです。

    返信削除
  4. 私も、たまには、週刊東洋経済を読んでみようと思います。

    返信削除
  5. 冷蔵庫、洗濯機・・・白物家電は、どのくらい経営の安定性に寄与しているのかな?
    無いよりは、販売、売り上げに寄与していると思うけど。
    安定経営には、売り上げの3本の柱なんて聞いた事が、有りますが?

    返信削除
  6. ソニーOB:佐藤2014年2月18日 17:38

    平坂さんは工事担当者のAI&DD総合種お持ちでしたよね。電気通信主任技術者は4科目のうち2科目(システムと専門)が免除になるので受けようかと思っています。
    この前、テキストが無いと伝えましたが、伝送設備の科目って基本情報処理技術者の午前試験のテキストで十分だとは思いませんか?
    どうなんでしょうね。

    返信削除
    返信
    1. AIDDもすでに忘却の彼方に.
      わたしがつかった参考書は、2ヶでした.1)リックテレコム わかるAIDD総合種[技術・理論] 2)リックテレコム AIDD総合種実践問題

      wikiによると試験は3科目で、内容はこんなことになっているそうです.システムと専門が【基礎】と【技術】の免除に相当するならば【法規】だけ受験だとするとすごい楽になりますがどうなんでしょ? わたしは【基礎】の試験は無勉強で解いても合格する自信がありましたので事実上【技術】と【法規】の2科目受験体制でした.範囲が広大なのでそれなりに勉強はかったるかったです.

      【基礎】
      電気工学(電気回路、電子回路、論理回路)の基礎
      電気通信の基礎
      【技術】
      端末設備の技術
      総合デジタル通信の技術
      接続工事の技術
      トラヒック理論
      情報セキュリティの技術
      ネットワークの技術
      【法規】
      電気通信事業法及びこれに基づく命令
      有線電気通信法及びこれに基づく命令
      不正アクセス行為の禁止等に関する法律
      電子署名及び認証業務に関する法律及びこれに基づく命令

      削除