テクノベインズ株式会社

 

ホーム > SmaSvrシリーズ > SmaSvr用途別システム構成

 

 

アプリケーションはどこに置きますか?

SmaSvr用途別システム構成のご紹介

SmaSvr/MicroSmaSvrはどちらも周辺機器を制御するためのサーバですが、お客様の用途によってどちらを選択するべきか異なります。ここでは、お客様のアプリケーションをどこに置くかという選択肢を軸にして以下3通りの構成およびサンプルプログラムをご紹介いたします。

① スマート端末にアプリケーションを置く場合 ⇒ MicroSmaSvr Sock

①はスマート端末内に、iPhoneアプリやAndroidアプリを置く場合の構成です。PCやスマート端末とMicroSmaSvrは同じネットワーク上にあることが前提です。この場合、「MicroSmaSvr Sock」という弊社製品を利用することができます。「MicroSmaSvr Sock」は、スマート端末からMicroSmaSvrへソケット通信でアクセスします。以下はAndroidのJavaプログラムの例です。

// 送// 送信ボタンを押すとMicroSmaSvrに接続されたプリンタに「こんにちは」と印字する例



package com.example.socksample;



import java.io.OutputStream;

import java.net.InetSocketAddress;

import java.net.Socket;

import android.os.Bundle;

import android.app.Activity;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;



public class MainActivity extends Activity {



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        Button button1 = (Button) findViewById(R.id.button1);

        button1.setOnClickListener(new MyOnClickListener());

    }



    public class MyOnClickListener implements OnClickListener {

        public void onClick(View view) {

                Socket sock = null;

                try {

                        //1B 40 初期化

                        //0D 印字復帰

                        //1B 52 08 国際文字の選択

                        //1B 74 01 文字コードテーブルの選択

                        //1C 43 01 JIS指定

                        //0A 印字改行

                        byte[] disp1 = {0x1B, 0x40, 0x0D, 0x1B, 0x52, 0x08, 0x1B, 0x74, 0x01, 0x1C, 0x43, 0x01};

                        byte[] disp2 = "こんにちは".getBytes("Shift_JIS");

                        byte[] disp3 = {0x0A};;


                        byte[] disp = new byte[disp1.length + disp2.length + disp3.length];



                        System.arraycopy(disp1, 0, disp, 0, disp1.length);

                        System.arraycopy(disp2, 0, disp, disp1.length, disp2.length);

                        System.arraycopy(disp3, 0, disp, disp1.length + disp2.length, disp3.length);



                        sock = new Socket();

                        sock.connect(new InetSocketAddress(MicroSmaSvrのIPアドレス, MicroSmaSvrのポート番号));



                        OutputStream out = sock.getOutputStream();



                        if(view.getId() == R.id.button1) {

                            out.write(disp,0,disp.length);

                        }



                } catch (Exception e) {

                        e.printStackTrace();

                }}



                if(sock != null){

                        try {

                            sock.close();

                            sock = null;

                        } catch (Exception e) {

                            e.printStackTrace();

                        }

                }

          }

    }

}

				
※ ソケット通信ではAndroidManifest.xmlファイルに以下のパーミッションを追加して下さい。

<uses-permission android:name="android.permission.INTERNET"/>

				

② 外部サーバにアプリケーションを置く場合 ⇒ MicroSmaSvr Post

②②はお客様のアプリケーションをクラウドなどの外部サーバ上に置く場合の構成です。PCやスマート端末とMicroSmaSvrは同じネットワーク上にあることが前提です。
この場合、「MicroSmaSvr Post」という弊社製品を利用することができます。「MicroSmaSvr Post」はHTMLのフォームのPOST送信を利用して周辺機器を制御する機能です。外部サーバ上にあるお客様のプログラムの一部にJavaScriptで以下のように記述するだけで、MicroSmaSvrから周辺機器を制御できます。
※ 現時点ではクロスサイトスクリプトによる遮断を回避しておりますが、将来においてセキュリティの仕様変更が行われた場合、お客様環境で本機能を使用できなくなる可能性がございます。予めご了承下さい。

// 送信ボタンを押すとMicroSmaSvrに接続されたプリンタに「Hello」と印字する例



<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

<script type="text/JavaScript"><!--

        function MicroSmasvrSubmit() {

            var dNow = new Date();

            var pYear = "" + dNow.getFullYear();

            var pMonth = str2(dNow.getMonth()+1);

            var pDay = str2(dNow.getDate());

            var pHour = str2(dNow.getHours());

            var pMinute = str2(dNow.getMinutes());

            var pSecond = str2(dNow.getSeconds());



            //現在日時をmicroSmaSvrに渡す

            hello.CLK.value = pYear + pMonth + pDay + pHour + pMinute + pSecond;



            //印字文字列作成

            var strData = new String();

            strData = '$PI$ACHello$Ar$Ar$Ar$Ar$Ar$PC';



            //印字文字列をmicroSmaSvrに渡す

            hello.PIPETHRUM.value = strData;



            hello.action = "http://MicroSmaSvrのIPアドレス/index.html";

            hello.submit();

        }



        //2ケタ揃え

        function str2(val){

            if (val < 10)

                return "0" + val;

            else

                return "" + val;

        }

//--></script>

</head>

<body>

<iframe name="pop1" style="display:none;" width="100" height="100"></iframe>

<form name="hello" method="post" target="pop1" Accept-charset="Shift_JIS">

<input type="hidden" name="CLK" value="" >

<input type="hidden" name="PIPETHRUM" value="" >

<input type="hidden" name="CMD" value="POSTHTML">

<input type="submit" onclick="MicroSmasvrSubmit();" value="送信" />

</form>

</body>

</html>



				

③ ローカルサーバにアプリケーションを置く場合 ⇒ SmaSvr

■ SmaSvr RS232の場合

■ SmaSvr イーサネットの場合

③はローカルサーバにアプリケーションを置く場合の構成です。SmaSvr内にアプリケーションを置きます。①②ではMicroSmaSvrが周辺機器の制御のみしていたのに対して、③ではSmaSvrで周辺機器の制御およびアプリケーションの提供もおこないます。
SmaSvrはWi-Fiのアクセスポイントを持っているので、上記の絵はPCやスマート端末からSmaSvrへの接続はSmaSvr標準のWi-Fi機能を利用しています。もちろん①②のように別にAPをたててSmaSvrにアクセスすることも可能です。
③の場合、SmaSvrと周辺機器の接続は、RS232とイーサネットがあります。以下はSmaSvr内のPHPプログラムの例です。SmaSvrの場合はPHPプログラムに直接コマンドを記述します。

[RS232の場合]

// 送信ボタンを押すとSmaSvrに接続されたプリンタに「Hello」と印字する例



<?php

require_once 'serialControl.php';



if(isset($_POST["disp"])) {

        $port = "/dev/ttyS0";

        $baud = "38400";

        $fc = "rts/cts";

        $msg = chr(0x1B) . chr(0x40) . chr(0x0D) //プリンタ初期化・印字復帰

                   . "Hello"

                   . chr(0x0A); //印字改行



        $serial = new serialControl();

        $serial -> setDevice($port);

        $serial -> setBaudRate($baud);

        $serial -> setDatabit(8);

        $serial -> setStopBits(1);

        $serial -> setParity("none");

        $serial -> setFlowControl($fc);

        $serial -> cmdExec();

        $serial -> deviceOpen();

        $serial -> sendMessage($msg);

        $serial -> deviceClose();



}

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

<body>

<form action="" method="post">

<table border="0" cellpadding="10" cellspacing="10">

<tr><td><input type="submit" name="disp" value="送信"/></td></tr>

</table>

</form>

</body>

</html>

				

[イーサネットの場合]

// 送信ボタンを押すとSmaSvrに接続されたプリンタに「Hello」と印字する例



<?php

if(isset($_POST["disp"])) {

    $ip = プリンタのIPアドレス;

    $port = プリンタのポート番号;



    $fp = fsockopen($ip, $port, $errno, $errstr, 30);



    if(!$fp){

        echo "$errstr($errno)<br/>\n";

    }else{

        $msg = chr(0x1B) . chr(0x40) . chr(0x0D) //プリンタ初期化・印字復帰

                   . "Hello"

                   . chr(0x0A); //印字改行



        fwrite($fp, $msg);

        fclose($fp);



    }

}

?>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

</head>

<body>

<form action="" method="post">

<table border="0" cellpadding="10" cellspacing="10">

<tr><td><input type="submit" name="disp" value="送信"/></td></tr>

</table>

</form>

</body>

</html>

				
※※ イーサネットの場合は、SmaSvrのSELinuxの設定を「disabled」に設定して下さい。









 


iOS/Android対応製品

iPad対応タブレットスタンド

iPadを業務で使用可能な高級感のある堅固な作りのスタンドです


フロアスタンドタイプ(IST1250)br>

カウンタートップタイプ(IST0250)


Bluetooth対応
バーコードスキャナ





LAN対応キャッシュドロワ


 


























戻る トップページへ ご注文方法について 更新情報 
  テクノベインズ株式会社 〒113-0034 東京都文京区湯島3丁目31-4 ツナシマ第1ビル2階 電話:03-3832-7460 (平日:09:00-17:30) FAX:03-3832-7430
TTechno Veins Co.,Ltd. Tsunashima Daiichi Bldg 2F, 31-4, Yushima 3, Bunkyou, Tokyo, 1130034, JAPAN. Tel:+81 3-3832-7460 FAX:+81 3-3832-7430  sales@technoveins.co.jp (弊社地図)
Copyright © 1987- Techno Veins Co.,Ltd. All Rights Reserved.