USB to VB.NET


Closed Thread
Results 1 to 13 of 13

Thread: USB to VB.NET

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default

    After setting the data in the TX buffer, the first thing you do is ...
    gosub DoUSBIn

    It will sit there until it receives something from the PC, and nothing will be sent.
    The VB program doesn't send anything, so it's stuck in the DoUSBIn subroutine.

    The subroutine can be changed to continue if nothing is received.
    DT

  2. #2
    Join Date
    Oct 2004
    Posts
    448

    Default

    Quote Originally Posted by Darrel Taylor View Post
    It will sit there until it receives something from the PC, and nothing will be sent.
    The VB program doesn't send anything, so it's stuck in the DoUSBIn subroutine.
    Precisely where I am stuck in my misadventures with USB.

    I dont think I have fully understood the syntax and the arguments for USBIN;

    How exactly do you timeout and get out of the subroutine, Darrel?

    "USBIn 1, USBBuffer, USBBufferCount, DoUSBIn"

    Is it by changing the last argument, or is there any other way?

    Anand

  3. #3

    Default

    After looking at some other code this is what i did and it works, now for the next one sending data from the VB application
    Code:
    ' ************************************************************
    ' * receive data from the USB bus                            *
    ' ************************************************************
    DoUSBIn:
       USBBufferCount = USBBufferSizeRX              ' RX buffer size
       USBService                                    ' keep connection alive
       USBIn 1, USBBufferRX, USBBufferCount, Timeout   ' read data, if available
    Timeout:                                            '
       return
        
    ' ************************************************************
    ' * wait for USB interface to attach                         *
    ' ************************************************************
    DoUSBOut:
     WaitPC:
       USBBufferCount = USBBufferSizeTX              ' TX buffer size
       USBService                                    ' keep connection alive
       USBOut 1, USBBufferTX, USBBufferCount, Waitpc ' if bus available, transmit data
       return

  4. #4
    Join Date
    Jan 2009
    Location
    Miami, Florida USA
    Posts
    704

    Default

    Quote Originally Posted by Andre_Pretorius View Post
    After looking at some other code this is what i did and it works, now for the next one sending data from the VB application
    Code:
    ' ************************************************************
    ' * receive data from the USB bus                            *
    ' ************************************************************
    DoUSBIn:
       USBBufferCount = USBBufferSizeRX              ' RX buffer size
       USBService                                    ' keep connection alive
       USBIn 1, USBBufferRX, USBBufferCount, Timeout   ' read data, if available
    Timeout:                                            '
       return
        
    ' ************************************************************
    ' * wait for USB interface to attach                         *
    ' ************************************************************
    DoUSBOut:
     WaitPC:
       USBBufferCount = USBBufferSizeTX              ' TX buffer size
       USBService                                    ' keep connection alive
       USBOut 1, USBBufferTX, USBBufferCount, Waitpc ' if bus available, transmit data
       return
    For DoUSBin that is also what I did to get out of the loop. However, I don't know if that is the best solution. The problem that I found with this approach is that I lost some of the incoming USB data. Somehow, some of the USB data going to the PIC got lost while the PIC was doing something else. I don't know if the incomming data sits in the PIC buffers waiting to be read or not.

    I got the best results by combinning the original DoUSBin routine with the modified one.

    Robert

  5. #5
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959

    Default

    Another easy way is to use USB_ASM_Service.pbp ...
    http://www.picbasic.co.uk/forum/show...8306#post78306

    Then you don't have to worry about adding USBSERVICE or USBINIT, it's handled by the USB interrupts.

    It also tells you when something has been received, so you can gosub to DoUSBin only when needed.

    Code:
    Main:
        IF RX_READY THEN GOSUB DoUSBin
    ; ...
    GOTO Main
    Has a TX_READY too, which tells you when it's ok to send, instead of getting locked up in the DoUSBout routine.

    hth,
    DT

  6. #6

    Default

    Thanks Darrel after looking at your code i changed the code to look like the this, it works fine, i will again post some code if i get the VB code to send some data.
    Code:
    include "USB_ASM_Service.pbp"
    DEFINE LOADER_USED 1
    Define  OSC 48
    
    ' *****************************************************
    bufferRX	Var	Byte[8]
    bufferTX	Var	Byte[8]
    cntRX	Var	Byte
    cntRX = 8	' Specify input buffer size
    cntTX	Var	Byte
    cntTX = 8	' Specify output buffer size
    LED	Var	PORTD.7
    ' ****************************************************
    
    Main:
    	IF Plugged THEN		'indicate conection to PC
    		LED = 1
    	ELSE
    		LED = 0 
    	ENDIF
    
    	IF RX_READY THEN        ; USB data has been rcvd
            RX_READY = 0        ; clear the Ready flag
            USBIN 1, BufferRX, CntRX, Main
        ENDIF
    
    	IF TX_READY THEN         ; USB is Ready to transmit
            TX_READY = 0         ; clear the Ready flag
            USBOUT 1, BufferTX, CntTX, TXfail
          TXfail:
        ENDIF
    
    	bufferTX[0] = 1
    	bufferTX[1] = 2
    	bufferTX[2] = 3
    	bufferTX[3] = 4
    	bufferTX[4] = 5
    	bufferTX[5] = 6
    	bufferTX[6] = 7
    	bufferTX[7] = 8
    
    	Goto Main
    Last edited by Andre_Pretorius; - 26th June 2010 at 15:22. Reason: Found error

  7. #7

    Default

    Hi there, i am back still batteling with the VB.net part of my project, i have tried this code to send data to my pic when i press a button, it does not work, i know this is not a vb forum but mabe someone can give me some advice
    thank you

    Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim pHandle As Integer
            pHandle = hidGetHandle(VendorID, ProductID)
            BufferOut(0) = 1
            BufferOut(1) = 2
            BufferOut(2) = 3
            BufferOut(3) = 4
            BufferOut(4) = 5
            BufferOut(5) = 6
            BufferOut(6) = 7
            BufferOut(7) = 8
            hidWrite(pHandle, BufferOut(0))
        End Sub

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts