目的
スキャンした文字列を取得します。
テキストボックスに入力する場合
単にテキストボックスに入力したいだけなら、テキストボックスにフォーカスを当てて、スキャンすれば文字列が自動で入力されるかと思います。スキャン文字列の前後に意図しない文字が含まれる場合、ターミナルの設定で、接頭語(プレフィックス)、接尾語(サフィックス)に何も割り当てていないか確認してみてください。
バックグラウンドで処理したい場合
今回は、接頭語に0x02(STX: テキスト開始)、接尾語に0x03(ETX: テキスト終了)などを付加して、0x02~0x03までの文字列を取り出してくる方法を取りました。
using System; using System.Data; using System.Drawings; using System.Windows.Forms; using MySql.Data.Client; class EntryPoint { [STAThread] public static void Main( string[] arg ) { Application.Run( new Top() ); } } class Top : Form { private ComboBox m_combobox; private TextBox m_textbox; private Button m_button; private bool m_reading; private string m_scan; public Top() { m_combobox = new ComboBox(); m_combobox.Location = new Point( 20, 20 ); m_combobox.Size = new Size( 200, 20 ); m_combobox.Add( "ComboBox 1" ); m_combobox.Add( "ComboBox 2" ); m_combobox.Add( "ComboBox 3" ); m_combobox.SelectedIndex = 0; m_textbox = new Textbox(); m_textbox.Location = new Point( 20, 60 ); m_textbox.Size = new Size( 200, 20 ); m_button = new Textbox(); m_button.Location = new Point( 20, 100 ); m_button.Size = new Size( 200, 20 ); m_button.Text = "Close" m_button.Click += new EventHandler( on_click_button ); Controls.Add( m_combobox ); Controls.Add( m_textbox ); Controls.Add( m_button ); m_reading = false; m_scan = ""; KeyPreview = true; KeyPress += new KeyPressEventHandler( on_key_press ); } private void on_click_button( object s, EventArgs e ) { Application.Exit(); } private void on_key_press( object s, KeyPressEventArgs e ) { switch ((int)e.KeyChar) { case 0x02: m_textbox.ReadOnly = true; m_reading = true; break; case 0x03: MessageBox.Show( m_scan ); m_scan = ""; m_textbox.ReadOnly = false; m_reading = false; break; default: if (m_reading) m_scan += e.KeyChar; break; } }
最終更新日: 2019/06/14