C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: 時間指定での表示のさせ方で困りごと


(過去ログ 139 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■81994 / inTopicNo.1)  時間指定での表示のさせ方で困りごと
  
□投稿者/ はーまん (1回)-(2016/11/28(Mon) 08:46:56)

分類:[VB.NET/VB2005 以降] 

初めまして VB初心者です
教えてください

現在、会社の業務でVB2013を使いプログラムを組んでるのですが
どうも表示がうまくいかなく、色々試しても
できないので、教えてください

     ただいまの時刻 10:00
状況  輸送会社名  便名  便番号 定刻









このような表示なのですが■はGroupBoxの枠だけ使用

トラックが来ると、GPSで受信して受信サーバーに文字列が飛びます
その文字列が こんどこのダイヤ表に飛んできます
ダイヤ表には  Textboxでソケット通信を受け取り
受け取った文字をGroupBox内にあるLabelにコールバックして
その文字を指令として、表示を動作させています。

到着時⇒待機中⇒音声を流しアナウンス
作業中⇒作業中
発着時⇒完了

のようにチカチカ表示させています
最初の6便は問題なくいけたんですが

11:20以降になると
タイマーで6項目の輸送会社、便名などを変更指示して
表示を変えると

文字列を受け取っても音声しか流れません
なぜか文字が表示されません
ここで困っています・・・・

ちょっとわかりづらいですが
多分間違っているコードを貼りますので指南ください
'★★★Form1 ロード★★★
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'日付、時刻の指示
Timer1.Start()


'最初の切り替わり
Timer_first.Start()
'午後便の表示
Timer_gogo.Start()
'最後の便表示
Timersaigo.Start()
'プログラムを自動で終了の指示
Timerstop.Start()

'1段目をVBAへ時間指定表示
Private Sub Timer_first_Tick(sender As Object, e As EventArgs) Handles Timer_first.Tick
VBA便の表示切り替え

Dim dt1 As Date = Now
Dim hm1 As Integer = dt1.Hour * 100 + dt1.Minute

If 1145 <= hm1 AndAlso hm1 < 1640 Then
'1段目
Label40.Text = "待ち"
Label40.Visible = False
Label38.Text = ""
Label10.Text = "VB運輸"
Label9.Text = "VB陸運集配便"
Label11.Text = "@"
Label8.Text = "11:20 - 11:40"
Label8.Font = New Font("MS UI Gothic", 40, FontStyle.Regular)
GroupBox9.BackColor = Color.DarkBlue
Label40.ForeColor = Color.White

End If
End Sub

'表示を指定するためのメソッド■■
Private Sub TextBoxRcvData_TextChanged(sender As Object, e As EventArgs) Handles TextBoxRcvData.TextChanged
Dim strTemp() As String = Split(TextBoxRcvData.Text, ",")

name1.Text = strTemp(0).Remove(0, 1)
name2.Text = strTemp(0).Remove(0, 1)
name3.Text = strTemp(0).Remove(0, 1)

'★★★★表示指令★★★★

'VB便@
If name1.Text = "VB便@指示640" Then
Label38.Text = "待機中"
Label38.Visible = True

'サウンド再生
My.Computer.Audio.Play( _
"C:\Users\11061.KPSYSTEM\Desktop\工場内納入便モニター 本\加工音声\VB便.wav", AudioPlayMode.Background)

ElseIf name1.Text = "1" Then
Label38.Text = "作業中"
Label38.Visible = True
ElseIf name1.Text = "完了1" Then
Label38.Text = "完了"
Label38.Visible = True


'VB2便@
ElseIf name2.Text = "VB2便" Then
Label40.Text = "待機中"
Label40.Visible = True
'サウンド再生
My.Computer.Audio.Play( _
"C:\Users\11061.KPSYSTEM\Desktop\工場内納入便モニター 本\加工音\VBA.wav", AudioPlayMode.Background)

ElseIf name2.Text = "7" Then
Label40.Text = "作業中"
Label40.Visible = True
ElseIf name2.Text = "完了7" Then
Label40.Text = "完了"
Label40.Visible = True
引用返信 編集キー/
■81995 / inTopicNo.2)  Re[1]: 時間指定での表示のさせ方で困りごと
□投稿者/ Jitta (225回)-(2016/11/28(Mon) 11:12:44)
No81994 (はーまん さん) に返信

あなたがプログラムに初めて触れたのって、いつですか?
ちょっと思い出していただきたいのですが、
小学校で運動会があったと思います。
その時、運動会のプログラムってのをもらいませんでしたか?
あなたが今作ろうとしているプログラムと、
運動会のプログラムを、比較して見てください。
運動会のプログラムは、誰が、何を、どのような順序で行うか、わかりやすく、書いてあったと思います。
あなたが今作ろうとしているプログラムは、どうでしょう?
ここに転記されたものは、関数が閉じてないし、変数が何を表しているのか、わかりにくいです。

で、11時20分なんですか?コードには「1145」とあるので、11時45分じゃないですか?

引用返信 編集キー/
■81996 / inTopicNo.3)  Re[2]: 時間指定での表示のさせ方で困りごと
□投稿者/ はーまん (2回)-(2016/11/28(Mon) 11:57:42)
ご返信ありがとうございます。

わかりづらくてすいません
どこを間違えているのかも正直わからず
困り果ててるので、文で流れを説明致します。

@トラックが来たらサーバー受信
A別プログラムにて処理
B別プログラムから文字列を送信

ここからが自分です
C送信された文字列をtextboxに表示
Dtextboxの文字列で動作を処理
E例:VB運輸@待機 来たら
GruopBox内のLabelに”待機中”と表示と同時に
音声を流す
文字はチカチカ動作させている

F
VB運輸@作業 来たら
GruopBox内のLabelに”作業中”と表示
文字はチカチカ動作させている
 
G
VB運輸@完了 来たら
GruopBox内のLabelに”完了”と表示

ここまでは成功しました

H
11:45にタイム制御で6便の文字を変更

Cに戻り同じ処理を繰り返すと
音声しか流れません

ここで困っています
引用返信 編集キー/
■81997 / inTopicNo.4)  Re[3]: 時間指定での表示のさせ方で困りごと
□投稿者/ Jitta (226回)-(2016/11/28(Mon) 14:00:30)
No81996 (はーまん さん) に返信

VB@便とVBA便で、if判定式の文字列が違いますが、大丈夫ですか?
サーバーから送られて来た文字列は TextBoxRcvData に送られてくるんですね?
VB@便とVBA便は、同時に着信するのですか?
splitしていますが、そのことは書かれてないですよ。
また、11時45分に、何をするかも不明確です。
ラベルの表示が変わって、便の対象が変わるだけで、実行することは同じだと思うのですが??

「誰が」「誰に」「何をする」がわかるようにしてください。
プログラムって、他人に物事を頼むのと同じです。
他人がコンピュータなので、コンピュータが解る言語(に変換できる)VBで書いているに過ぎません。
あなた自身が、書いてある通りに行動できないと、コンピュータも行動できません。
引用返信 編集キー/
■81999 / inTopicNo.5)  Re[4]: 時間指定での表示のさせ方で困りごと
□投稿者/ はーまん (3回)-(2016/11/28(Mon) 14:20:17)
No81997 (Jitta さん) に返信

★VB@便とVBA便で、if判定式の文字列が違いますが、大丈夫ですか?

答・・ よく見たら、name1,2なっていますね

★サーバーから送られて来た文字列は TextBoxRcvData に送られてくるんですね?

答・・その通りでございます。

★VB@便とVBA便は、同時に着信するのですか?

答・・違います。 このコード自体前に作ったやつはってしまったので申し訳ないです
朝、昼、夜に違う文字列が来ますが同じLabelを使っています。
'VB便@
If name1.Text = "VB便@指示640" Then
Label38.Text = "待機中"
Label38.Visible = True

'サウンド再生
My.Computer.Audio.Play( _
"C:\Users\11061.KPSYSTEM\Desktop\工場内納入便モニター 本\加工音声\VB便.wav", AudioPlayMode.Background)

ElseIf name1.Text = "1" Then
Label38.Text = "作業中"
Label38.Visible = True
ElseIf name1.Text = "完了1" Then
Label38.Text = "完了"
Label38.Visible = True


'VB2便@
ElseIf name1.Text = "VB2便" Then
Label38.Text = "待機中"
Label38.Visible = True
'サウンド再生
My.Computer.Audio.Play( _
"C:\Users\11061.KPSYSTEM\Desktop\工場内納入便モニター 本\加工音\VBA.wav", AudioPlayMode.Background)

ElseIf name1.Text = "7" Then
Label38.Text = "作業中"
Label38.Visible = True
ElseIf name1.Text = "完了7" Then
Label38.Text = "完了"
Label38.Visible = True

★splitしていますが、そのことは書かれてないですよ。
答・・TextBoxRcvDataに送られてきた文字列をname1.textに送る際にsplitしています
これはTextBoxRcvDataで要らない部分の送信文字列があるので。

★また、11時45分に、何をするかも不明確です。
ラベルの表示が変わって、便の対象が変わるだけで、実行することは同じだと思うのですが??

これが悩んでいる場所です
11:45になるとタイム制御で、メイン画面の 便名や定刻や全て表示変わります
それで11:45分になると、またトラックがきて
サーバー受信して、今のプログラムに受信されるんですが
言われるように実行制御は一緒なので同じように組んでるんですが

音声だけ流れて、Label38.textは表示されません




引用返信 編集キー/
■82000 / inTopicNo.6)  Re[5]: 時間指定での表示のさせ方で困りごと
□投稿者/ Jitta (227回)-(2016/11/28(Mon) 14:51:36)
ブレークポイントを置いて実行しました?
なんか、ラベルを変更したけど、タイマーが上書きしていそう。
引用返信 編集キー/
■82001 / inTopicNo.7)  Re[6]: 時間指定での表示のさせ方で困りごと
□投稿者/ はーまん (4回)-(2016/11/28(Mon) 15:00:03)
No82000 (Jitta さん) に返信

やってみました
タイマーのせいかもしれません。。。


一瞬だけ、待機中の動作を行いますが
すぐに戻るため・・・

どうすればいいのでしょうか??


引用返信 編集キー/
■82002 / inTopicNo.8)  Re[7]: 時間指定での表示のさせ方で困りごと
□投稿者/ shu (941回)-(2016/11/28(Mon) 15:16:09)
No82001 (はーまん さん) に返信
> ■No82000 (Jitta さん) に返信
>
> やってみました
> タイマーのせいかもしれません。。。
>
>
> 一瞬だけ、待機中の動作を行いますが
> すぐに戻るため・・・
>
> どうすればいいのでしょうか??
>
>
タイマーを複数使うのは挙動がおかしくなる原因となるので
やめた方がよいと思います。タイマ1つで処理するようにしてみてはどうでしょう?
引用返信 編集キー/
■82003 / inTopicNo.9)  Re[8]: 時間指定での表示のさせ方で困りごと
□投稿者/ はーまん (5回)-(2016/11/28(Mon) 16:27:54)
No82002 (shu さん) に返信

ご回答ありがとうございます。

一度、朝昼夜と別々でTimerを書いていたので
全て一つにしましたが
ダメでした・・


試しにソケット通信で文字列を送信しているんですが
やはり一瞬文字が表示され消える現象です

最初の6便は問題なく表示されます
もしかしたらチカチカ文字のプログラムがおかしいのでしょうか??

一度コードを貼ります

Public Class Form1
'チカチカタイマー用フラグ
Private Flicker As Boolean = False
Private Flicker2 As Boolean = False
Private Flicker3 As Boolean = False
Private Flicker4 As Boolean = False
Private Flicker5 As Boolean = False
Private Flicker6 As Boolean = False
Private Flicker7 As Boolean = False
Private Flicker8 As Boolean = False
Private Flicker9 As Boolean = False
Private Flicker10 As Boolean = False
Private Flicker11 As Boolean = False
Private Flicker12 As Boolean = False


'状況1段目処理(VB@,A便)
Private Sub Timerfric2_Tick(sender As Object, e As EventArgs) Handles Timerfric2.Tick
'待機中の場合
If Label38.Text = "待機中" Then
Label38.Font = New Font("ゴシック", 28, FontStyle.Bold)
Label38.Visible = True

Flicker2 = Not Flicker2
If (Flicker2) Then
Label38.ForeColor = Color.Orange
Else
Label38.ForeColor = Color.Black
End If


End If

'作業中の場合
If Label38.Text = "作業中" Then
Label38.Font = New Font("ゴシック", 28, FontStyle.Bold)

Label38.Visible = True

Flicker3 = Not Flicker3
If (Flicker3) Then
Label38.ForeColor = Color.GreenYellow
Else
Label38.ForeColor = Color.Black
End If
End If


'完了の場合
If Label38.Text = "完了" Then
Label38.Font = New Font("MS ゴシック", 36, FontStyle.Bold)

Label38.Visible = True

GroupBox9.BackColor = Color.Gainsboro
Label38.ForeColor = Color.White
End If

2段目以降も同じように書いています。
ご確認をよろしくお願い致します。

引用返信 編集キー/
■82004 / inTopicNo.10)  Re[9]: 時間指定での表示のさせ方で困りごと
□投稿者/ Jitta (228回)-(2016/11/28(Mon) 16:51:31)
No82003 (はーまん さん) に返信>

プログラムは、あなたが思った通りに動くわけではありません。
あなたが書いた通りに動きます。
あなたは、自分が何を命じたか、コードからたどることをしましたか?

Timer_first ですが、どの様に設定していますか?
11時45分頃に Tick が実行されて、if ブロックに入ってラベルが変わります。
次に Timer_first_Tick が実行されるのは、いつですか?
実際に実行して、ステップ実行して、期待と実際がどう違うか、確認してください。

#そろそろiPhoneから疲れた
引用返信 編集キー/
■82008 / inTopicNo.11)  Re[10]: 時間指定での表示のさせ方で困りごと
□投稿者/ はーまん (6回)-(2016/11/29(Tue) 13:19:49)
No82004 (Jitta さん) に返信

ステップ実行し、もう一度見直したら
要因がわかって

書き直したらできました!!

皆様の助言のおかげで、自力で直せました
見直す大事さを教えて頂き感謝します

ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -