USB to VB.NET


Closed Thread
Results 1 to 13 of 13

Thread: USB to VB.NET

Hybrid View

  1. #1

    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

  2. #2
    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

  3. #3
    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

  4. #4

    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 14:22. Reason: Found error

  5. #5

    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

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

    Default

    Andre,

    I created my application using EasyHID. The code is in VB6 and it works fine. If you think that it might help you, I will post the VB6 code here.

    The VB code in your first post has the "plugged", "unplugged", and "OnRead" subroutines, but I don't see the "WriteSomeData" routine that exists in the VB6 version. What program did you use to get this code? Was it HIDMaker?

    Robert

  7. #7
    Join Date
    Oct 2004
    Posts
    448

    Default

    Robert, I would love to see your VB code; like I said earlier, I too managed to send data from the pic to the PC, but the reverse is just not happening.

    Regards,

    Anand

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