私はVB.NETプログラムを持っていて、配列を使ってループしていて、どこの瓶が「コンベア」上にあるのか把握しようとしています。このプログラムのポイントは、VB.netとLabelsを使用してコンベアがどのように動作するかを視覚的に示すことです。説明するのは非常に難しいので、ベストを尽くします。限界に達したときに配列を監視してリセットする方法。 VB.net
Bottle_Number(10)Bottle_Position(128)
私は、コンベア上のすべての128回の停止で追跡したい10本のボトルがあります。
私たちは10本のボトルにしか収まらないコンベヤを持っています。私は10本のボトルのそれぞれの位置を追跡する必要があります。ボトル11が来たら、ボトル1が完成し、コンベアから外れることを意味します。したがって、ボトル11はボトル1になるので、ボトル1の位置を0にリセットし、ボトル11(ボトル1ではなく)を追跡しながらボトル2〜9の追跡を続ける必要があります。ボトル12が来たら、それはボトル2になり、ボトル2の位置を「0」にリセットしてすべてのボトルの追跡を続ける必要があります。
ご協力いただければ幸いです。
Public Class frmMain
Dim Product_Position(10) As Integer
Dim Inches_Per_Pulse As Integer
Dim PulseNumber As Integer
Dim Product_Counter As Integer
Dim Product_Location(10) As Integer
Dim Function1 As Integer
Dim Function2 As Integer
Dim Function3 As Integer
Dim Function4 As Integer
Dim Function5 As Integer
Dim Function6 As Integer
Dim Function7 As Integer
Dim Function8 As Integer
Dim Function9 As Integer
Dim Function10 As Integer
Dim Product_in_Tunel As Integer
Dim test As Integer
Dim Roll_OVer As Boolean
Dim Product_Counter_Test As Integer
Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
lblStatus.BackColor = Color.Green
lblStatus.Text = "Conveyor Status: Running"
End Sub
Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click
lblStatus.BackColor = Color.Red
lblStatus.Text = "Conveyor Status: Off"
End Sub
Private replace_next As Integer
Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
If Product_Counter = 10 Then
replace_next += 1
If replace_next > 10 Then
replace_next = 1 ' replace them in turn 1..10, then loop back to 1
Product_Position(replace_next) = 0 ' put initial position here
End If
End If
Product_Counter = Product_Counter + 1
If Product_Counter > 10 Then
Product_Counter = 1
Roll_over = True
End If
'MsgBox(Product_Counter)
'MsgBox(replace_next)
End Sub
Private Sub btnPulse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPulse.Click
Get_Location()
End Sub
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PulseNumber = "0"
Inches_Per_Pulse = "1"
Roll_OVer = False
'MsgBox("Test")
End Sub
Public Sub Get_Location()
'MsgBox(Product_Counter)
If Roll_OVer = True Then
Product_Counter_Test = 10
'MsgBox("i'm stuck here")
End If
If Roll_OVer = False Then
Product_Counter_Test = Product_Counter
End If
'MsgBox(Product_Counter_Test)
'MsgBox("am I here - Yes")
For test = 1 To Product_Counter_Test
'MsgBox("This works")
Product_Position(test) = Product_Position(test) + Inches_Per_Pulse
Next
PulseNumber = PulseNumber + 1
ClearLabels()
lblProduct1Position.Text = Product_Position(1)
lblProduct2Position.Text = Product_Position(2)
lblProduct3Position.Text = Product_Position(3)
lblProduct4Position.Text = Product_Position(4)
lblProduct5Position.Text = Product_Position(5)
lblProduct6Position.Text = Product_Position(6)
lblProduct7Position.Text = Product_Position(7)
lblProduct8Position.Text = Product_Position(8)
lblProduct9Position.Text = Product_Position(9)
lblProduct10Position.Text = Product_Position(10)
End Sub
Public Sub ClearLabels()
lblProduct1Position.Text = ""
lblProduct2Position.Text = ""
lblProduct3Position.Text = ""
lblProduct4Position.Text = ""
lblProduct5Position.Text = ""
lblProduct6Position.Text = ""
lblProduct7Position.Text = ""
lblProduct8Position.Text = ""
lblProduct9Position.Text = ""
lblProduct10Position.Text = ""
End Sub
パルスボタンが実際コンベア、各パルス(ボタンのクリック)を駆動されているものであるコンベアが前進していることを意味:
は、ここに私のコードです。
今すぐプログラムがボトル11になると、リセットされ、「新しい」ボトル(ボトル1)だけが前進します。残っているボトルは、最後に到達するまでインクリメントし続け、同じようにします。ポジションを0にリセットして、再びカウントを開始します。
'Queue(of T)'、 'LinkedList of(T)'、 'List(Of T)'もFIFOコンテナとして機能することができます。小さなクラスラッパーは、厳密なサイズ制限のロジックを実装できます。 Option Strictを有効にする必要があります。 – Plutonix