03-11-2011 05:44 AM
Hello,
I'm trying to read the data of my device after the device is interrupted (triggered from external source) in visual basic 2010 .NET 4.0
Imports NationalInstruments.VisaNS Imports Microsoft.VisualBasic Module Module1 Private objUsbSession As UsbSession Dim DeviceNotAvailable As Boolean = True Sub Main() Dim resources() As String = ResourceManager.GetLocalManager().FindResources("?*") Dim device As String For Each device In resources 'first found device is used Dim deviceDetected As Boolean = device.Contains("0xsome value") If deviceDetected Then 'open usb session objUsbSession = CType(ResourceManager.GetLocalManager().Open(device), UsbSession) 'print to let user now wich device is used Console.WriteLine(objUsbSession.LastStatus.ToString) Console.WriteLine(objUsbSession.ResourceName) 'set DeviceNotAvailable because we have found one DeviceNotAvailable = False Exit For End If Next 'check is a device was found If DeviceNotAvailable Then Console.WriteLine("No device detected") Else ' enable the usb interrupt event objUsbSession.EnableEvent(UsbSessionEventType.UsbInterrupt, EventMechanism.Queue) Dim i As Integer = 0 While i < 10 i += 1 ' wait on event to be true objUsbSession.WaitOnEvent(UsbSessionEventType.UsbInterrupt, 5000) 'read data from the device here i need to but it is not present
objUsbSession.GetAttribute????????? End While 'close the session objUsbSession.Dispose() End If 'wait for user to close the application Console.WriteLine("Press any key to exit the application.") Console.ReadKey() End Sub End Module
so everything works but now I must read the data back (the interrupt is seen)
I manage to do it in Labview and VC++and C++
VC++/C++
viGetAttribute(IntHandle, VI_ATTR_USB_RECV_INTR_DATA, databuffer);
to retrieve the data but this command i cant acces it?
can anyone help me to solve this?
best regard
Solved! Go to Solution.
03-11-2011 08:55 AM
Solved it
sorry but the language VB I'm not familiar with.
but the sullution is as follow.
code was:
' wait on event to be true
objUsbSession.WaitOnEvent(UsbSessionEventType.UsbInterrupt, 5000)
'read data from the device
here i need to but it is not present
objUsbSession.GetAttribute?????????
code must be
'databuffer is returned in UsbSessionInterruptEventArgs
Dim ResultData As UsbSessionInterruptEventArgs
'wait on event to be true and return result in ResultData
ResultData = objUsbSession.WaitOnEvent(UsbSessionEventType.UsbInterrupt, 5000)
'result is a string U8 format and is located in ResultData.Buffer
Dim StringDataBuffer As String
Dim enc As New System.Text.UTF8Encoding
StringDataBuffer = enc.GetString(ResultData.DataBuffer)
The data is returned in UsbSessionInterruptEventArgs.Buffer
and is a byte array.
so to show it as a string result U must encode it to UTF8