VB6からカスタマディスプレイVFD2002Eにメッセージを表示する


シリアルポートに接続したカスタマディスプレイVFD2002Eに メッセージを表示する

カスタマディスプレイVFD2002Eは 、PCPOSレジでお客様に商品名や商品単価、値引き、お買い上げ合計金額やつり銭などの情報を表示する小型のディスプレイです。

レジよく見られる青緑色の文字のVFD(蛍光表示管)を用いたカスタマディスプレイです。
パソコンのシリアルインターフェースに接続し、コマンドで文字を表示します。

長めのシリアルケーブルを用い、パソコンと離れた場所へのメッセージ表示を行うことができます。
英数カタカナ文字での表示により、レジ業務以外の用途でも、店頭、工場、病院、学校、待合所、景品交換所などで各種表示に用いることができます。


この例では、プログラム言語としてVB6を用い、シリアルポート(COMポート)に接続した、VFD2002Eにメッセージを表示する基本的な 操作を、具体的なプログラム例とともに解説します。

VB6により簡単なプログラムを用いることでVFD2002Eに自由にメッセージを表示できることがわかります。

現在では、VB6は既に販売終了していますが、VB6によるお問い合わせが多いため、新規に本ページを作成しました。
新たに作成される場合は、現行のVB2008を用いた作成をお勧めしております。(2009/01/05)

参考: VB2008からカスタマディスプレイVFD2002Eにメッセージを表示する

 

プログラムを試す際に、パソコン以外に必要なもの

  • VB6 (Visual Basic6)

  • VFD2002E

 

サンプルプログラムのダウンロード

 

サンプルの説明

添付サンプルではパソコンのシリアルポートにVFD2002Eが接続されていることを想定しています。
本例ではVB6で搭載されているMsCommコンポーネントを使用しています。

MsCommについて

MsCommはSerialPortをコントロールする標準コンポーネントです。
MsCommを使用することで、簡単にシリアルポートの通信を行うことができます。
ツールボックスにMsCommのアイコンが表示されていない場合、プロジェクト-コンポーネントによりツールの割り当てを行ってください。
MsCommアイコン

 

VB6サンプル画面

上記サンプルをVB6から起動することでサンプルの実行ができます。
添付サンプルではパソコンのシリアルポートにVFD2002Eが接続されていることを想定しています。

 

実行例

ボタンには固定メッセージを割り付けてあり、商品売り上げボタンについては、ボタンを押すごとにメッセージがいくつか表示できるようなサンプルとなっています。

サンプル実行でのVFD2002E表示例 半角かなメッセージを表示中

VB6のMsCommは簡単な制御であればそのまま使用できますが、VB6を用いて細かい制御を行う場合、Win32APIのシリアル制御を用いることをお勧めします。
注意点として、MsCommはタイムアウトの制御が直接行うことができません。

VB6では、現在のインターネットからの複数の漢字コード体系が入り混じって使用されることはなかったので、特に漢字コードを意識しなくともUnicode→SJISが自動で行われていたため、漢字を使用するSerial通信もそれほど気にする必要はありませんでした。しかし、VB6でも見えない部分でVB6(Windows)が内部で使用するUnicodeと、ファイルなど外部へ文字データ出力を行う際SJISへの変換などが行われています。

本例はシリアル通信が簡単にできることをわかっていただきたく作成したもので、そのまま何かに利用できるわけではありませんが、これがきっかけでVB6やVFD2002Eを利用したプログラムを作成していただ くきっかけにでもしていただければ幸いです。
 

 

VB6用 VFD2002E表示のサンプルソース

'
'
'
'   本プログラムはVB6で書かれたVFD2002Eのサンプルプログラムです。
'
'

'
'   (C)Copyright by Techno Veins Co.,Ltd.
'   All right reserved. 2009
'

'
'   このプログラムの著作権はテクノベインズが保有します。
'   独自開発プログラムへソースの組込使用については自由に参考利用してかまいません。(費用・登録等不要。)
'   VFD2002E販売の際、商品に添付して配布することはご自由に行ってください。
'
'   直接ソースの全部または一部を販売することは禁止します。
'   ソースの全部または一部を再配布や書籍・Web等への許可なき転載は禁止します。
'
'   本プログラムは参考用であり、すべてのお客様の環境で動作を保証するものではありません。
'

'   多くのメッセージは1行で記述できますが,説明のために分解して使用しています。

'   サンプルでは最低限の処理しかおこなっていません。
'   実運用ではエラー処理や、ハンドシェークなどを考慮してください。
'

Private Sub Form_Load()
    '   COM1選択
    Combo1.ListIndex = 0
End Sub

'
'   本サンプルではComポートの存在/空き自体は確認していません。
'
Private Sub SendVfd(ByVal mesTxt As String)

    On Error GoTo SendVfd_Error

    '   通常はVFD2002Eの受信バッファだけで問題ないが,連続して高速に表示データを
    '   送る場合,文字落ちを防ぐために、DTR制御ハンドシェークモードを指定したほうが良い。
    '   連続して文字列を送信しない用途では、VFD2002Eの受信バッファで足りるのでハンドシェークは不要です。
    If MSComm1.PortOpen Then MSComm1.PortOpen = False
        
        ' COM1 を使用します。
    MSComm1.CommPort = Combo1.ListIndex + 1
    
    ' 9600bps、パリティなし、データ長 8 ビット、およびストップ ビット長 1。
    MSComm1.Settings = "9600,N,8,1"
    
    ' Input プロパティ使用時に、バッファ全体を読み取るように設定します。
    MSComm1.InputLen = 0
    
    '   ポートのオープンクローズは時間を要するため、一般のアプリケーションでは
    '   あらかじめポートをオープンし、終了時にクローズするほうが高速に動作します。
    MSComm1.PortOpen = True
    MSComm1.Output = mesTxt
    MSComm1.PortOpen = False
    
SendVfd_Exit:
    Exit Sub
    
SendVfd_Error:
    MsgBox (Err.Description)
    Resume SendVfd_Exit
End Sub


Private Sub btnExit_Click()
    If MSComm1.PortOpen Then MSComm1.PortOpen = False
    Unload Me
End Sub

'
'   初期化
'
'  VFD2002EのDIPスイッチの設定がカナになっていない場合でも、文字コードセットを初期化するとカタカナが出力できます。
'
Private Sub btnHardwareInit_Click()
    Dim Mes As String
    
    Mes = Chr$(27) & "@"             ' ハード初期化
        
    '   文字コードをセットする。
    Mes = Mes & Chr$(27) & "t" & Chr$(1)   ' 文字コードテーブル
    Mes = Mes & Chr$(27) & "R" & Chr$(8)   ' 国際文字コードセット
    Mes = Mes & "HH"
    SendVfd Mes

End Sub

'
'   VFD2002E画面クリア
'
Private Sub btnCls_Click()
    SendVfd Chr$(&HC)
End Sub

'
'   単純文字列表示例
'
Private Sub btnUriage_Click()
    '   表示用ダミーカウント このボタンは、押すたびに異なるメッセージがサイクルする
      Static MsgCount As Integer
      MsgCount = MsgCount + 1
      MsgCount = MsgCount Mod 3

      '   画面原点移動(&HB)と文字表示(半角40文字 20桁2行分)
      '   表示データをあらかじめ構成しておき、半角40文字として送信する
      '   画面をクリアするよりも、表示原点をホームポジションに移動して画面全てを書き換えたほうが高速に表示できる
      '   ホームポジションを入れなくとも40文字出力により毎回同じ位置に表示するが、
      '   通信エラーなど異常表示により表示がずれることを防ぐために、ホーム(&hB)を行っている

      Select Case MsgCount
          Case 0
              SendVfd Chr$(&HB) & "トマトケチャップ       \120ケイ: 3テン      \12,345"

          Case 1
              SendVfd Chr$(&HB) & "キャベツ           \100ケイ: 1テン       \5,545"

          Case Else
              SendVfd Chr$(&HB) & "マグロブツ       \1,500ケイ: 1テン      \12,545"

        End Select
End Sub

Private Sub btnAzukari_Click()
       SendVfd Chr$(&HB) & "ケイ   10テン     \8,500オツリ:          \1,500"
End Sub


ちょっと感想

ずいぶん久しぶりにVB6のプログラムを書いたので、すっかり忘れていました。
最近のVB2008と比べると、やはり古い開発環境であることが否めません。
VB6の開発環境が弱いこともありますが、ちょっとしたことをやりたくとも、該当するクラスがないので、今回は他のサンプルにあるVFD2002Eの操作に関係ない機能をいくつか省略してしまいました。
省略した部分としては、COMポート名の列挙とか、最後のCOM ポート名を記録するなどで、VB6では1から作る必要がありかなり大変な機能です。
ただ、標準で準備されているクラスで結構高いレベルの物が作れててしまうと、他のソフトとの差別化という面では難しくなりますが。

また、VB6時代から問題となっていましたが、MsComm自体に多少問題があるため、弊社ではWin32APIを用いていました。
今回のような短い文字列を時々送信する程度の用途では、MsCommでもほとんど問題はありませんが、大量のデータ通信や、厳密な通信プロトコルを利用するような用途では、MsCommでは難しいと思います。

同じVBと呼ばれていますが、いくつかの点でVB6とそれ以降のVBでは完全に別の言語です。
VB6はX86系用の開発言語(中間コードではありますが)であり、それ以降は.NetFrameworkのCLRという仮想CPU用の開発言語であると考えられます。
純粋に計算だけのプログラムを開発する場合、当然CPUネイティブなコンパイラが一番高速な結果を生みますが、画面表示などを持つ一般的なプログラムでは、画面などの反応速度などGUIの反応や通信、セキュリティなどが重要となってくるので、それらは非常に重い処理で自分ですべて作ることは難しく、結果的に.NetFrameworkでの開発にせざるを得ない状況になっていると思います。
(2009/01/06)
 


参考


参考技術情報

主要販売製品

テクノベインズWebトップ 見積依頼 Webショップ 総合案内    

防塵 ファンレスPC

バーコードスキャナ
[CCDタイプ]

業務用プリンタ
[レシート・ラベルプリンタ]

カスタマディスプレィ

スマホでPOS機器
SmaSvr[スマサバ
]

スマホでチケット印刷
スマサバ・プリント

防塵 コネクタキャップ

バーコードスキャナ
[レーザータイプ]

レジプリンタ サプライ品
[レシート用紙]

業務用キーボード
[プログラマブルキーボード]

ソフト

POS
Facille
[ファシール]

ネットワーク接続 VFD表示機

タッチパネルLCD

キャッシュドロワ

コンバータ

Win7対応状況

 

VB/.Netframework開発関連 参考情報

Visual Basic 2013 [VB2013]による開発情報

VB2013 Expressのインストール

VS2013 Express

無償で開発ができるマイクロソフトの開発言語 Visual Studio Express 2013 のインストール

VB2013からカスタマディスプレイVFD2002Eにメッセージを表示する VB2013 Express SerialPort接続によるカスタマディスプレイVFD2002Eの制御

Visual Basic 2008 [VB2008]による開発情報

VB2008 Expressのインストール

VB2008 Express

無償で開発ができるマイクロソフトの開発言語 VB2008 Expressのインストール

VB2008 と VB2008Expressでのテンプレート比較 VB2008/VB2008 Express プロジェクトテンプレート一覧からによる対応環境の比較
VB2008からカスタマディスプレイVFD2002Eにメッセージを表示する VB2008 Express SerialPort接続によるカスタマディスプレイVFD2002Eの制御
VB2008から大型7セグメントLEDディスプレイ LED841 にメッセージを表示する VB2008 SerialPort接続によるカスタマディスプレイVFD2002Eの制御

Visual Basic 2005 [VB2005]による開発情報

VB2005 Expressセットアップ方法の説明

VB2005 Express

無償で開発ができるマイクロソフトの開発言語 VB2005 Expressのインストール

VB2005 はじめての実行 VB2005 / VB2005 Express VB2005での開発

シリアルポートをつかう通信クラス SerialPortについて

VB2005

SerialPortコントロールを使用した開発実例

VB2005からカスタマディスプレイVFD2002Eにメッセージを表示するサンプル VB2005 シリアルポートに接続したカスタマディスプレイLED841にメッセージを表示する

Visual Basic 6 [VB6]による開発情報

VB6からカスタマディスプレイVFD2002Eにメッセージを表示する

  VB6 

MsComm接続によるカスタマディスプレイVFD2002Eの制御 

VBA [Excel2000/2003, Access]による開発情報

VFD2002EをExcelで使用する解説

  VBAによるサンプル 

ExcelのVBAから簡易表示ユーティリティを呼び出し表示を行う例。自己署名によるデジタル署名付きマクロ登録など 

.Netframework開発情報

.Net Framework再頒布パッケージについて .NetFramework .NetFramework再配布パッケージの入手に関する情報

Windows は米国 Microsoft Corporation の米国およびその他の国における登録商標です。Microsoft Corporationのガイドラインに従って画面写真を使用しています。

技術情報Index

シリアル通信関連 参考情報

シリアル開発

シリアルポートをつかう通信クラス SerialPortについて VB2005 SerialPortコントロールを使用した開発実例
VB2008からカスタマディスプレイVFD2002Eにメッセージを表示する VB2008 SerialPort接続によるカスタマディスプレイVFD2002Eの制御
VB2005からカスタマディスプレイVFD2002Eにメッセージを表示するサンプル VB2005 SerialPort接続によるカスタマディスプレイVFD2002Eの制御
VB6からカスタマディスプレイVFD2002Eにメッセージを表示する VB6 MsComm接続によるカスタマディスプレイVFD2002Eの制御 

RS232シリアル情報

接続ケーブル シリアルケーブル シリアル接続ケーブル情報
通信ケーブル情報 シリアルケーブル シリアル接続ケーブル情報
シリアルインターフェース用 クロスケーブル シリアルケーブル シリアル接続ケーブル情報
シリアルインターフェース用 ストレートケーブル シリアルケーブル シリアル接続ケーブル情報
インターリンクケーブル シリアルケーブル シリアル接続ケーブル情報
IN-9FFケーブル資料 シリアルケーブル  
コネクタ資料 シリアルコネクタ シリアルコネクタ信号配置
コネクタ対比表 シリアルコネクタ  
コネクタ留めネジについて( インチネジ - ミリネジ ) シリアルコネクタ  

シリアル接続機器     

VFD2002Eカスタマディスプレィ シリアル接続 VFD表示ディスプレイ
DM-D110カスタマディスプレィ シリアル接続 VFD表示ディスプレイ
4206 - 2次元バーコード対応 高性能エリアイメージャ USBシリアル接続 バーコードスキャナ
TM-T884シリーズ サーマルレシートプリンタ シリアル接続 レシートプリンタ
TM-T90 シリアル接続 レシートプリンタ
TSP100 futurePRNT シリアル接続 レシートプリンタ
TM-L90サーマルラベルプリンタ シリアル接続 ラベルプリンタ
RS232-USB I/Fコンバータ USB232-00 USB接続 シリアルポートを増設するコンバータ
コネクタ防塵用キャップ Dsubコネクタ コネクタ保護キャップ
その他参考

技術情報Index


Last Update : 2014/04/22

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