Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
べつclassのSubでtextBox1.textを取得したい
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30578#CommentId84338
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
イヨ
 (社会人)
投稿日時
2021/1/14 10:16:01
>下記のようなコードを実行すると、Button1 を押すたびに、
>新しい Form2 が表示される事象を確認できると思います。
なるほどそういうことだったのですね
いっぱいウインドウが押すたびにでてきました!
なんだか昔のpcの固まった時みたいですね( ´∀` )
>それに対して、Shared で宣言された g_Data の場合、
>複数のインスタンスがあったとしても、g_Data 変数は一つしか存在できません。
勉強になります。いろいろ使い道がありそうです。
>何故、このような設計にしてあるのか、作成者にコードの意図を聞いてみたいところですが…
私もいろいろ聞いてみたいのですが、いまは違うところにいらっしゃるようで聞けないのです、、><
今回の件はマストではありませんが、そんな機能があったら便利みたいな感覚でやってます。
書いて頂きましたコードを入れたらSub DataReceived内でg_Dataが書き換わりました。
ありがとうございます。
g_SerialPortは下記のように書いてありSerialPort型でした。
Public Class BarcodeReader
''' <summary>受信データ</summary>
Private Shared g_Data As String = ""
''' <summary>受信データ</summary>
Private Shared g_DataHash As Hashtable = Nothing
''' <summary>シリアルポートオブジェクト</summary>
Private Shared g_SerialPort As SerialPort = Nothing
Public Sub DataReceived()はこのように書き換えました。
もとのこのコードはバーコードスキャンがトリガーとなっているようで
読み取ったデーターをg_Dataにわたしているみたいです。
自分はこのトリガーをForm2 button click に置き換えてg_Dataをtextboxで横から書き換えたら
それに準じたデーターが表示されるとおもいましたが
やっていくうちに結構複雑なのかなと思い始めました。。
Public Sub DataReceived()
'MsgBox(g_Data)
Try
If USE_SCANNER Then
g_Data &= g_SerialPort.ReadExisting()
Else
g_Data = "30013001C0100"
End If
Catch ex As Exception
MessageBox.Show("バーコードの読み込みに失敗しました" & vbCrLf & ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
'受信バッファはクリア
g_Data = ""
Return
End Try
If g_Data.Length <> 8 Then
g_Data = ""
Return
End If
''''データを分解する
ScanDataDisassemble(g_Data)
''イベント通知
RaiseEvent BarcodeReceived(g_Data)
' 受信バッファはクリア
g_Data = ""
Return
End Sub
Public Sub New()
End Sub
Public Sub New(s As String)
g_Data = s
End Sub
End Class
ちなみに AddHandler g_SerialPort.DataReceived, AddressOf DataReceived の
部分は下記の中にかいてありました。
Public Function Open() As Boolean
Dim Result As Boolean = False
Try
If USE_SCANNER Then
g_SerialPort = New SerialPort()
g_SerialPort.PortName = SysValue.ComPortName
'g_SerialPort.Encoding = System.Text.Encoding.GetEncoding("Shift-JIS")
g_SerialPort.Encoding = System.Text.Encoding.GetEncoding("utf-8")
'ポートオープン
g_SerialPort.Open()
'RTS出力 (送信要求)
g_SerialPort.RtsEnable = True
'DTR出力 (端末レディ)
g_SerialPort.DtrEnable = True
'パリティー設定(偶数)
g_SerialPort.Parity = Parity.Even
''データ受信ハンドラ設定
AddHandler g_SerialPort.DataReceived, AddressOf DataReceived
End If
g_DataHash = New Hashtable()
Result = True
Catch ex As Exception
MessageBox.Show("オープンエラー" & vbCrLf & ex.Message, "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error)
Result = False
End Try
Open = Result
End Function