Hallo,

hier mal der gesamte Code:

die Sub-Routine "AxPLServer1_DataArrived" wird vom OCX-Objekt ausgel�st, sobald Daten 
vom Barcode-Leseger�t gesendet werden. Auch die dazugeh�renden Parameter werden vom 
OCX-Objekt �bergeben.
Und genau hier m�chte ich eigentlich erreichen, dass wenn die Prozedur bereits in 
Ausf�hrung ist und ein weiteres Ger�t sendet, die Prozedur nochmals starten kann mit 
den dazugeh�renden Parametern.

Gr��e

Oskar


 
------------------------------------

Public Class Form1
    Inherits System.Windows.Forms.Form

    Dim ss_id As Short
    Dim anz_artikel As Short

    'frameID constants
    Const MAIN_MENU As Integer = 10
    Const M_WARENAUSGANG As Integer = 20
    Const M_KASSE As Integer = 210
    Const M_LIEFERSCHEIN As Integer = 220
    Const M_WARENEINGANG As Integer = 30
    Const M_INVENTAR As Integer = 40
    Const M_ABFRAGEN As Integer = 50

    Const BACK_BUT As Integer = 18
    Const TERM_BUT As Integer = 155

    'NEW_FIELD constants
    Const SND_ENTER As Byte = 1
    Const NO_SEND As Byte = 2
    Const SND_ALL As Byte = 4
    Const FLD_LOCK As Byte = 8
    Const FLD_LINE As Byte = 16
    Const FLD_READER As Byte = 32
    Const FLD_CLR As Byte = 64
    Const FLD_ACTIVE As Byte = 128

    'NEW_FIELD_EX constants
    Const SND_ENTER_EX As Byte = 1
    Const NO_SEND_EX As Byte = 2
    Const SND_ALL_EX As Byte = 4
    Const OVR_EX As Byte = 16
    Const FLD_READER_EX As Byte = 32
    Const READER_DEFAULT_EX As Byte = 64
    Const FLD_ACTIVE_EX As Byte = 128



#Region " Vom Windows Form Designer generierter Code "

    Public Sub New()
        MyBase.New()

        ' Dieser Aufruf ist f�r den Windows Form-Designer erforderlich.
        InitializeComponent()

        ' Initialisierungen nach dem Aufruf InitializeComponent() hinzuf�gen

    End Sub

    ' Die Form �berschreibt den L�schvorgang der Basisklasse, um Komponenten zu 
bereinigen.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    ' F�r Windows Form-Designer erforderlich
    Private components As System.ComponentModel.IContainer

    'HINWEIS: Die folgende Prozedur ist f�r den Windows Form-Designer erforderlich
    'Sie kann mit dem Windows Form-Designer modifiziert werden.
    'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
    Friend WithEvents AxPLServer1 As AxPLSERVERLib.AxPLServer
    Friend WithEvents Verbinden As System.Windows.Forms.Button
    Friend WithEvents Trennen As System.Windows.Forms.Button
    Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
    Friend WithEvents Label1 As System.Windows.Forms.Label
    Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
    Friend WithEvents Label2 As System.Windows.Forms.Label
    Friend WithEvents TextBox3 As System.Windows.Forms.TextBox
    Friend WithEvents Label3 As System.Windows.Forms.Label
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Dim resources As System.Resources.ResourceManager = New 
System.Resources.ResourceManager(GetType(Form1))
        Me.AxPLServer1 = New AxPLSERVERLib.AxPLServer
        Me.Verbinden = New System.Windows.Forms.Button
        Me.Trennen = New System.Windows.Forms.Button
        Me.TextBox1 = New System.Windows.Forms.TextBox
        Me.Label1 = New System.Windows.Forms.Label
        Me.TextBox2 = New System.Windows.Forms.TextBox
        Me.Label2 = New System.Windows.Forms.Label
        Me.TextBox3 = New System.Windows.Forms.TextBox
        Me.Label3 = New System.Windows.Forms.Label
        CType(Me.AxPLServer1, System.ComponentModel.ISupportInitialize).BeginInit()
        Me.SuspendLayout()
        '
        'AxPLServer1
        '
        Me.AxPLServer1.Enabled = True
        Me.AxPLServer1.Location = New System.Drawing.Point(16, 16)
        Me.AxPLServer1.Name = "AxPLServer1"
        Me.AxPLServer1.OcxState = CType(resources.GetObject("AxPLServer1.OcxState"), 
System.Windows.Forms.AxHost.State)
        Me.AxPLServer1.Size = New System.Drawing.Size(200, 72)
        Me.AxPLServer1.TabIndex = 0
        '
        'Verbinden
        '
        Me.Verbinden.Location = New System.Drawing.Point(16, 96)
        Me.Verbinden.Name = "Verbinden"
        Me.Verbinden.Size = New System.Drawing.Size(96, 24)
        Me.Verbinden.TabIndex = 1
        Me.Verbinden.Text = "Verbinden"
        '
        'Trennen
        '
        Me.Trennen.Location = New System.Drawing.Point(120, 96)
        Me.Trennen.Name = "Trennen"
        Me.Trennen.Size = New System.Drawing.Size(96, 24)
        Me.Trennen.TabIndex = 2
        Me.Trennen.Text = "Trennen"
        '
        'TextBox1
        '
        Me.TextBox1.Location = New System.Drawing.Point(120, 192)
        Me.TextBox1.Name = "TextBox1"
        Me.TextBox1.Size = New System.Drawing.Size(96, 20)
        Me.TextBox1.TabIndex = 3
        Me.TextBox1.Text = ""
        '
        'Label1
        '
        Me.Label1.Location = New System.Drawing.Point(16, 192)
        Me.Label1.Name = "Label1"
        Me.Label1.Size = New System.Drawing.Size(88, 16)
        Me.Label1.TabIndex = 4
        Me.Label1.Text = "curFormID"
        '
        'TextBox2
        '
        Me.TextBox2.Location = New System.Drawing.Point(16, 160)
        Me.TextBox2.Name = "TextBox2"
        Me.TextBox2.Size = New System.Drawing.Size(51, 20)
        Me.TextBox2.TabIndex = 5
        Me.TextBox2.Text = ""
        '
        'Label2
        '
        Me.Label2.Location = New System.Drawing.Point(16, 136)
        Me.Label2.Name = "Label2"
        Me.Label2.Size = New System.Drawing.Size(43, 16)
        Me.Label2.TabIndex = 6
        Me.Label2.Text = "PLDevice1"
        '
        'TextBox3
        '
        Me.TextBox3.Location = New System.Drawing.Point(80, 160)
        Me.TextBox3.Name = "TextBox3"
        Me.TextBox3.Size = New System.Drawing.Size(51, 20)
        Me.TextBox3.TabIndex = 7
        Me.TextBox3.Text = ""
        '
        'Label3
        '
        Me.Label3.Location = New System.Drawing.Point(80, 136)
        Me.Label3.Name = "Label3"
        Me.Label3.Size = New System.Drawing.Size(51, 16)
        Me.Label3.TabIndex = 8
        Me.Label3.Text = "PLDevice2"
        '
        'Form1
        '
        Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
        Me.ClientSize = New System.Drawing.Size(232, 222)
        Me.Controls.Add(Me.Label3)
        Me.Controls.Add(Me.TextBox3)
        Me.Controls.Add(Me.Label2)
        Me.Controls.Add(Me.TextBox2)
        Me.Controls.Add(Me.Label1)
        Me.Controls.Add(Me.TextBox1)
        Me.Controls.Add(Me.Trennen)
        Me.Controls.Add(Me.Verbinden)
        Me.Controls.Add(Me.AxPLServer1)
        Me.Name = "Form1"
        Me.Text = "Form1"
        CType(Me.AxPLServer1, System.ComponentModel.ISupportInitialize).EndInit()
        Me.ResumeLayout(False)

    End Sub

#End Region


    Private Sub AxPLServer1_DataArrived(ByVal sender As System.Object, ByVal e As 
AxPLSERVERLib._DPLServerEvents_DataArrivedEvent) Handles AxPLServer1.DataArrived
        Dim retval As Boolean
        Dim curFormID As Integer
        Dim datastr As String
        Dim PLDevice As Byte

        PLDevice = Me.AxPLServer1.GetExtraID(e.id)

        If PLDevice = 1 Then
            Me.TextBox2.Text = PLDevice
        ElseIf PLDevice = 2 Then
            Me.TextBox3.Text = PLDevice
        Else
            Exit Sub
        End If

        datastr = Me.AxPLServer1.GetData(e.id, 0)
        curFormID = Me.AxPLServer1.GetFormID(e.id)

        If e.frameid = -1 And curFormID <= 0 Then
            F_Hauptmen�(e.id)
            Exit Sub
        End If

        Me.TextBox1.Text = curFormID

        If curFormID = 210 Then
            If Me.AxPLServer1.IsData(e.id, TERM_BUT) Then
                retval = Me.AxPLServer1.ClearCmd(e.id, 1, 140, 150)
                retval = Me.AxPLServer1.FieldCmd(e.id, 47, 128)
                retval = Me.AxPLServer1.PopMessage(e.id, 82, "Anzahl Artikel: " & 
anz_artikel)
                retval = Me.AxPLServer1.Send(e.id, -1)
                anz_artikel = 0
            ElseIf Me.AxPLServer1.IsData(e.id, BACK_BUT) Then
                F_Warenausgang(e.id)
            Else
                DatenKasse(e.id)
            End If
            Exit Sub
        End If

        If (datastr = "F1" And curFormID = MAIN_MENU) Or (Me.AxPLServer1.IsData(e.id, 
45) And curFormID = MAIN_MENU) Then
            F_Warenausgang(e.id)
            Exit Sub
        ElseIf (datastr = "F2" And curFormID = MAIN_MENU) Or 
(Me.AxPLServer1.IsData(e.id, 65) And curFormID = MAIN_MENU) Then
            F_Wareneingang(e.id)
            Exit Sub
        ElseIf (datastr = "F3" And curFormID = MAIN_MENU) Or 
(Me.AxPLServer1.IsData(e.id, 85) And curFormID = MAIN_MENU) Then
            F_Inventar(e.id)
            Exit Sub
        ElseIf (datastr = "F4" And curFormID = MAIN_MENU) Or 
(Me.AxPLServer1.IsData(e.id, 105) And curFormID = MAIN_MENU) Then
            F_Abfragen(e.id)
            Exit Sub
        ElseIf (datastr = "F1" And curFormID = M_WARENAUSGANG) Or 
(Me.AxPLServer1.IsData(e.id, 45) And curFormID = M_WARENAUSGANG) Then
            anz_artikel = 0
            F_Kasse(e.id)
            Exit Sub
        ElseIf (datastr = "F2" And curFormID = M_WARENAUSGANG) Or 
(Me.AxPLServer1.IsData(e.id, 65) And curFormID = M_WARENAUSGANG) Then
            F_Lieferschein(e.id)
            Exit Sub
        End If

        If Me.AxPLServer1.IsData(e.id, 18) And curFormID = M_WARENAUSGANG Then
            F_Hauptmen�(e.id)
            Exit Sub
        ElseIf Me.AxPLServer1.IsData(e.id, 18) And curFormID = M_KASSE Then
            F_Warenausgang(e.id)
        End If

    End Sub

    Private Sub F_Hauptmen�(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.ClearForm(id)   'PiccoLink-Display wird gel�scht
        retval = Me.AxPLServer1.CtlText(id, 3, "** HAUPTMEN� **")
        retval = Me.AxPLServer1.CtlText(id, 40, "(F1)")
        retval = Me.AxPLServer1.Button(id, 45, "Warenausgang")
        retval = Me.AxPLServer1.CtlText(id, 60, "(F2)")
        'retval = Me.AxPLServer1.Button(id, 65, "Wareneingang")
        retval = Me.AxPLServer1.CtlText(id, 65, "Wareneingang")
        retval = Me.AxPLServer1.CtlText(id, 80, "(F3)")
        'retval = Me.AxPLServer1.Button(id, 85, "Inventar")
        retval = Me.AxPLServer1.CtlText(id, 85, "Inventar")
        retval = Me.AxPLServer1.CtlText(id, 100, "(F4)")
        'retval = Me.AxPLServer1.Button(id, 105, "Abfragen")
        retval = Me.AxPLServer1.CtlText(id, 105, "Abfragen")

        retval = Me.AxPLServer1.SetFormID(id, MAIN_MENU)
        retval = Me.AxPLServer1.Send(id, MAIN_MENU)
    End Sub

    Private Sub F_Warenausgang(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.ClearForm(id)
        retval = Me.AxPLServer1.CtlText(id, 0, "** Warenausgang **")
        retval = Me.AxPLServer1.CtlText(id, 40, "(F1)")
        retval = Me.AxPLServer1.Button(id, 45, "Kasse")
        retval = Me.AxPLServer1.CtlText(id, 60, "(F2)")
        retval = Me.AxPLServer1.Button(id, 65, "Lieferschein")
        retval = Me.AxPLServer1.Button(id, BACK_BUT, Chr(164) + Chr(165))
        retval = Me.AxPLServer1.SetFormID(id, M_WARENAUSGANG)
        retval = Me.AxPLServer1.Send(id, M_WARENAUSGANG)
    End Sub

    Private Sub F_Wareneingang(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.PopMessage(id, 65, "Im Aufbau!")
        retval = Me.AxPLServer1.Send(id, -1)
    End Sub

    Private Sub F_Inventar(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.PopMessage(id, 65, "Im Aufbau!")
        retval = Me.AxPLServer1.Send(id, -1)
    End Sub

    Private Sub F_Abfragen(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.PopMessage(id, 65, "Im Aufbau!")
        retval = Me.AxPLServer1.Send(id, -1)
    End Sub

    Private Sub F_Kasse(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.ClearForm(id)
        retval = Me.AxPLServer1.CtlText(id, 0, "** Kasse **")
        retval = Me.AxPLServer1.CtlText(id, 40, "Menge:")
        'retval = Me.AxPLServer1.NewFieldEx(id, 87, 8, SND_ENTER_EX + SND_ALL_EX + 
OVR_EX)
        retval = Me.AxPLServer1.NewField(id, 47, 8, FLD_LINE + FLD_CLR + FLD_ACTIVE)
        retval = Me.AxPLServer1.CtlText(id, 60, "Artikel:")
        'retval = Me.AxPLServer1.NewFieldEx(id, 60, 13, OVR_EX + FLD_READER_EX + 
READER_DEFAULT_EX + FLD_ACTIVE_EX)
        retval = Me.AxPLServer1.NewField(id, 80, 13, SND_ENTER + SND_ALL + FLD_LINE + 
FLD_READER + FLD_CLR)

        retval = Me.AxPLServer1.Button(id, TERM_BUT, "ENDE")
        retval = Me.AxPLServer1.Button(id, BACK_BUT, Chr(164) + Chr(165))
        retval = Me.AxPLServer1.SetFormID(id, M_KASSE)
        retval = Me.AxPLServer1.Send(id, M_KASSE)
    End Sub

    Private Sub F_Lieferschein(ByVal id As Long)
        Dim retval As Boolean

        retval = Me.AxPLServer1.PopMessage(id, 65, "Im Aufbau!")
        retval = Me.AxPLServer1.Send(id, -1)
    End Sub

    Private Sub DatenKasse(ByVal id As Long)

        Dim retval As Boolean
        Dim Artikel As String
        Dim Menge As Single

        Dim fs As Object

        Dim f, ts

        Try
            Artikel = Me.AxPLServer1.GetData(id, 80)
            Menge = Convert.ToSingle(Me.AxPLServer1.GetData(id, 47))
        Catch Ausnahme As FormatException
            Menge = 0
        Catch Ausnahme As ArgumentException
            Menge = 0
        End Try


        If Artikel <> "" And Menge <> 0 Then
            anz_artikel = anz_artikel + 1
            fs = CreateObject("Scripting.FileSystemObject")
            'On Error GoTo ErrorHandler
            If fs.FileExists("C:\test.dat") = False Then
                fs.CreateTextFile("C:\test.dat") 'Create a file if not exists
            End If

            f = fs.GetFile("C:\test.dat")     'Get file object
            ts = f.OpenAsTextStream(8, 0)

            ts.Write(id & " " & Artikel & " " & Menge & " " & System.DateTime.Now & 
vbCrLf)  'Write to file and add linefeed
            ts.Close()
        End If

        'retval = Me.AxPLServer1.ClearCmd(id, 4, 46, 49)
        'retval = Me.AxPLServer1.ClearCmd(id, 4, 68, 78)
        retval = Me.AxPLServer1.CtlText(id, 140, anz_artikel)
        retval = Me.AxPLServer1.FieldCmd(id, 47, 128)
        retval = Me.AxPLServer1.Ack(id)
        retval = Me.AxPLServer1.Send(id, 1)

    End Sub

    Private Sub Verbinden_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Verbinden.Click
        Dim retval As Short
        retval = Me.AxPLServer1.ConnectToSerialServer("192.168.1.40", 4660)
        If (retval = -1) Then
            MsgBox("Verbindung zum Ethernet-Adapter konnte nicht hergestellt werden")
        Else
            ss_id = retval
        End If
    End Sub

    Private Sub Trennen_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Trennen.Click
        Me.AxPLServer1.DisconnectSerialServer(ss_id)
    End Sub
End Class


-----------------------------------------


_______________________________________________
Vb.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/vb.net

Odpovedet emailem