2017年12月3日日曜日

Delphi 10.2 Tokyoから232cが簡単になったのでナダ電子製シリアルプリンタでプリントしてみた。


みなさん、お久しぶりです。



やましょうです。

今日はナダ電子さんの
http://www.nada.co.jp/as289r2/
を使用する方法をご紹介です。


実は11月30日からdelphi では232cコンポーネントが
get itで簡単に使える様になりました。


3/1には申請は出していたのですが、忘れられていた見たいで、
ゆるふぁい#0の雑談で確認しないとという話しになり、
11月中頃になってどうなっているの?と聞いたら。。
まぁいろいろあったらしく早急に対応がとられた模様です。
get itに申請を出して、1ヶ月くらいで返事がなければ再度連絡した方が良いと思います。

さて、それでは232cを使いましょう。これで簡単に232cが。。使えるのさってことで、ツール=>Get itを選択し232cといれます。
delphiのみになっていますがC++ビルダーでも動くと思うけど保証はしない。



  


そしたら、インストールボタン押すだけで使える様になる。  

さて、あとはナダ電子さんのプリンターにUSB接続<=>シリアル変換でつなげます。
ナダ電子さん、ハード的な説明すくなすぎです。
私のはまった点はDC アダプタ5v 1aだとまともに動かず。これでムダに時間を。。。
5V-4AだとOK  3.3vにしてもDC アダプターは5Vを使ってねとかこの当たりの情報は
どこかにまとめるか?
www.nada.co.jp/printer/pdf/MP-150BR-I.pdfな形の仕様書pdfを
www.nada.co.jp/as289r2/support.htmlページにあれば良いなぁと思いました。

接続はこんな感じ
白GND
灰色:PC(TX)




あとは、DELPHI でフォームを新規作成して、WUNI232とボタンをフォーム上に張って
以下コード書くのみ

unit Umain;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, WUni232c;

type
  TForm1 = class(TForm)
    WUni232c1: TWUni232c;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

const

 GsQr : array [0..8] of byte = ( $1D,$78,$4C,$05,BYTE('D'),BYTE('E'),BYTE('L'),BYTE('P'),BYTE('I') );

procedure TForm1.Button1Click(Sender: TObject);
var
Str: UTF8String;
begin
  WUni232c1.BaudRate := 9600;

  if( not WUni232c1.Connect ) then
                                      WUni232c1.Open;

  Str := sLineBreak+sLineBreak+sLineBreak+sLineBreak;
  WUni232c1.Write(Length(Str),@str[1]);
  Str := 'HELLO DELPHI'+sLineBreak;
  WUni232c1.Write(Length(Str),@str[1]);
  WUni232c1.Write(sizeof(GsQr),@GsQr);
  Str := sLineBreak+sLineBreak+sLineBreak+sLineBreak;
  WUni232c1.Write(Length(Str),@str[1]);

end;


procedure TForm1.FormDestroy(Sender: TObject);
begin
  if( WUni232c1.Connect ) then
                                      WUni232c1.Close;
end;

end.

動かすと、

ちゃんとプリントされました。



追加で動画





ということでアドベントカレンダー3日目の記事した。
みなさん
ごきげんよう !!










2017年3月16日木曜日

Led Name Boardをdelphiからコントロールする。

みなさんお久しぶりです。

delphiから Led Name ボードをコントロールしたいと思います。

ちなみにたぶんこれだと思う。
https://www.amazon.com/Koolertron-Programmable-Digital-Scrolling-Message/dp/B00T9FEI4Q/ref=sr_1_2?ie=UTF8&qid=1489621823&sr=8-2&keywords=led%2Bname%2Bboard&th=1




 こんな感じで


こんな奴なのです





そしてPL2303HXですとWINDOWS 10で動かないのでCHIPをPL2303HXDに張り替え。
(windows7とか8なら古いドライバーを使えば問題なしだと思う。)



さて、DELPHI側のソースですが、
http://www.csd.co.jp/uni232c/
に飛んでWUNI232Cコンポーネントを入手します。
これならソース付きで無料ですね。

さて、その次にソースはここから入手


(事前にCOMポートナンバーをTERATerm等で調べておきましょう。)
ポートナンバー変更後
それをコンパイルして動かすこうなります。


ってことでJIMさん
これであそんでみてください。

2017年2月15日水曜日

Delphi でAndriod Thingsを使用してみる。

みなさん
おひさしぶりです。

やましょうです。

先日、日本Androidの会の勉強会に参加しまして、
Android Thingsと組込み用 のアンドロイドのプレビューが発表されている事を知りました。
どうもラップするだけで、ザマリンでも動く様ですので、Delphiからも簡単にアクセスできる筈
と思やってみました。


 1.System イメージの入手先です。
https://developer.android.com/things/preview/download.html

で入手できます。(私はラズパイ3で挑戦です。)

2.イメージの書込みツール入手

https://sourceforge.net/projects/win32diskimager/

3.イメージツールでSDCard 8Gにイメージを書込みます。

その後ラズパイに挿入、Lanケーブルを挿し、hdmi接続

4.ラズパイ電源起動


するとipアドレスが下の方に出てきますので、それをメモりましょう


5.adb コマンドでラズパイと接続します。
私の場合Android Studioも入っているので

C:\Users\me\AppData\Local\Android\sdk\platform-tools>adb connect ip Addresss
connected to  ip Address : 5555って返ってきます。


6.SDKを、Andorido Studioと同じフォルダーにする。

7.Android Things用のブリッジファイルを作る(サンプルファイルをダウンロード)
 Java2Op等で作成。なのですが、面倒なのでファイルをダウンロードしてください。
 

8.サンプルプログラム
 unit Main;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls
  ,Android.Things
  ,Androidapi.JNI.JavaTypes
  ,Androidapi.JNIBridge
  ,Androidapi.JNI.GraphicsContentViewText
  ,Androidapi.Helpers
  ,Androidapi.JNI.App
  ,Androidapi.JNI.Embarcadero;

type
  TForm37 = class(TForm)
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private 宣言 }
     FPortService    :   JPeripheralManagerService;
     FWDGpio : JGPIO;
     RVSGpio : JGPIO;
  public
    { public 宣言 }
  end;

var
  Form37: TForm37;


implementation

{$R *.fmx}


procedure TForm37.FormCreate(Sender: TObject);
begin
    FPortService := TJPeripheralManagerService.Create();
    FwdGpio := FPortService.openGpio(StringToJString('BCM6'));
    RvsGpio := FPortService.openGpio(StringToJString('BCM5'));
    FwdGpio.setDirection( TJGpio.JavaClass.DIRECTION_OUT_INITIALLY_LOW);
    RvsGpio.setDirection( TJGpio.JavaClass.DIRECTION_OUT_INITIALLY_LOW);
end;

procedure TForm37.Timer1Timer(Sender: TObject);
begin
     if  Timer1.Tag = 0 then
     begin
        Timer1.Tag := 1;
        FwdGpio.setValue(FALSE);
        RvsGpio.setValue(TRUE);
     end
     else
     begin
         Timer1.Tag := 0;
         FwdGpio.setValue(TRUE);
         RvsGpio.setValue(FALSE);
     end;
  end;
end.


9.AndroidManifestファイルの編集
         <uses-library android:name="com.google.android.things"/>
を追加したりいろいろする


10.コンパイル実行
(機種選択はiot_rpi3を選択してください。)

 実行すると

こんな感じで交互にLチカとなります。



ソースはここ、SourceFile 


Nゲージを動かす。
 



以上
やましょうでした。