Sub Process_Globals
Dim manager As UsbManager
Dim HIDstreams As UsbDeviceConnection
Dim outEndpoint, inEndpoint As UsbEndpoint
Dim device As UsbDevice
Dim interface As UsbInterface
Dim MSG_READ, DATA_READ As String
MSG_READ = "Msg-Read" : DATA_READ = "Data-Read"
Dim InRequests, OutRequests As List
Dim VID As Int : VID = 1240
Dim PID As Int : PID = 63
Dim RxPlcBuffer(64) As Byte
Dim TxPlcBuffer(64) As Byte
End Sub
Sub PlcDisconnect
If HIDstreams.IsInitialized Then
HIDstreams.StopListening
OutRequests.Clear
InRequests.Clear
End If
End Sub
Sub FindAdbDevice As Boolean
Dim usbdevices() As UsbDevice
usbdevices = manager.GetDevices
'Iterate over devices and find the correct one
For i = 0 To usbdevices.Length - 1
Dim ud As UsbDevice
ud = usbdevices(i)
'Iterate over interfaces
For a = 0 To ud.InterfaceCount - 1
Dim inter As UsbInterface
inter = ud.GetInterface(a)
If ud.VendorId = VID AND ud.ProductId = PID Then
'found our device and interface
device = ud
interface = inter
'Find correct endpoints
For b = 0 To interface.EndpointCount - 1
Dim endpoint As UsbEndpoint
endpoint = interface.GetEndpoint(b)
' And claim it
If endpoint.Type = manager.USB_ENDPOINT_XFER_INT Then
If endpoint.Direction = manager.USB_DIR_IN Then
inEndpoint = endpoint
Else If endpoint.Direction = manager.USB_DIR_OUT Then
outEndpoint = endpoint
End If
End If
Next
End If
Next
Next
End Sub
Sub CheckPermission
If device.IsInitialized Then
If manager.HasPermission(device) = False Then
manager.RequestPermission(device)
Else
'There is permission. Connect if neccessary.
If HIDstreams.IsInitialized = False Then
MakeConnection
End If
End If
End If
End Sub
Sub MakeConnection
HIDstreams = manager.OpenDevice(device, interface, True)
HIDstreams.StartListening("connection")
End Sub
Sub SendOutRequest(Name As String, Data() As Byte, Length As Int)
Dim request As UsbRequest
request = GetRequest(True)
request.Name = Name
request.Queue(Data, Length)
End Sub
Sub SendInRequest(Name As String, Length As Int)
Dim request As UsbRequest
request = GetRequest(False)
request.Name = Name
request.Queue(RxPlcBuffer, Length)
End Sub
Sub ReleaseRequest(Request As UsbRequest, RequestList As List)
RequestList.Add(Request)
End Sub
Sub GetRequest (Out As Boolean) As UsbRequest
Dim r As UsbRequest
Dim RequestList As List
If Out Then RequestList = OutRequests Else RequestList = InRequests
If RequestList.Size = 0 Then
If Out Then
r.Initialize(HIDstreams, outEndpoint)
Else
r.Initialize(HIDstreams, inEndpoint)
End If
Else
r = RequestList.Get(0)
RequestList.RemoveAt(0)
End If
Return r
End Sub
Sub SendDataToPlc
If HIDstreams.IsInitialized = True Then
' Send test buffer
TxPlcBuffer(0) = 0x80
SendOutRequest("Data", TxPlcBuffer, 64)
End If
End Sub