hi community,
ich bin froh, euch gefunden zu haben. die beiträge werden immer freundlich beantwortet... freu mich nun ein teil dieses forums zu sein ;)
so - nun komm ich zu meinem problem:
ich möchte meinen cardreader(com1 ) per vb auslesen. und zwar soll das so funktionieren:
im form soll ich angeben, wie oft/wie viele karten ich über den leser ziehe. anschließend soll er die daten auslesen und mich immer auffordern: z.b.: legen sie karte 1/3 ein. die ausgelesenen daten werden immer untereinander in eine textdatei geschreiben. ist so etwas lösbar?
ich hab bereits versucht, die karte auszulesen, ohne erfolg (mit dem hyperterminal funkt es...) ich verwende ms visual studio vb express...)
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
End
End Sub
Dim parity As IO.Ports.Parity
Dim stopbits As IO.Ports.StopBits
Dim port As IO.Ports.SerialPort = New IO.Ports.SerialPort("COM1", 9600, _
parity.Even, 7, stopbits.One)
Dim cardnr As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles MyBase.Load
Dim Buf(0) As Byte
port.Open()
If port.BaseStream.CanRead Then
port.BaseStream.BeginRead(Buf, 0, 1, AddressOf ondatareceived, Buf)
End If
End Sub
Sub ondatareceived(ByVal ar As IAsyncResult)
Dim buf() As Byte = CType(ar.AsyncState, Byte())
ListBox1.Items.Add(buf(0).ToString)
If port.BaseStream.CanRead Then
port.BaseStream.BeginRead(Buf, 0, 1, AddressOf ondatareceived, Buf)
End If
End Sub
End Class mit diesem code läuft das programm und sobald ich meine karte drüber zieh, ist es vorbei...: fehler:
System.InvalidOperationException wurde nicht behandelt.
Message="Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement ListBox1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."
Source="System.Windows.Forms"
StackTrace:
bei System.Windows.Forms.Control.get_Handle()
bei System.Windows.Forms.Control.SendMessage(Int32 msg, Int32 wparam, String lparam)
bei System.Windows.Forms.ListBox.NativeAdd(Object item)
bei System.Windows.Forms.ListBox.ObjectCollection.AddInternal(Object item)
bei System.Windows.Forms.ListBox.ObjectCollection.Add(Object item)
bei rs232_Tester.Form1.ondatareceived(IAsyncResult ar) in C:\Dokumente und Einstellungen\rklausgraber\Eigene Dateien\Visual Studio 2005\Projects\rs232-Tester\rs232-Tester\Form1.vb:Zeile 21.
bei System.IO.Ports.SerialStream.AsyncFSCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOverlapped)
bei System.Threading._IOCompletionCallback.IOCompletionCallback_Context(Object state)
bei System.Threading.ExecutionContext.runTryCode(Object userData)
bei System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP) |