Can someone please assist me, i am trying to get a PIC18F4550 to talk to a VB application.
If i connect the pic the software detects the pic but no data comes through.
I have hard coded the data witch should be sended.
any advice on how to send data back to the PIC would also be appreciated
PIC Code
Code:
DEFINE OSC 48
DEFINE LOADER_USED 1
USBBufferSizeTX con 8 ' input
USBBufferSizeRX con 8 ' output
' the USB buffer...
USBBufferTX Var Byte[USBBufferSizeTX]
USBBufferRX Var Byte[USBBufferSizeRX]
USBBufferCount Var Byte
' ************************************************************
' * main program loop - remember, you must keep the USB *
' * connection alive with a call to USBService every couple *
' * of milliseconds or so... *
' ************************************************************
usbinit ' initialise USB...
ProgramStart:
USBBufferTX[0] = "1"
USBBufferTX[1] = "2"
USBBufferTX[2] = "3"
USBBufferTX[3] = "4"
USBBufferTX[4] = "5"
USBBufferTX[5] = "6"
USBBufferTX[6] = "7"
USBBufferTX[7] = "8"
gosub DoUSBIn
gosub DoUSBOut
goto ProgramStart
' ************************************************************
' * receive data from the USB bus *
' ************************************************************
DoUSBIn:
USBBufferCount = USBBufferSizeRX ' RX buffer size
USBService ' keep connection alive
USBIn 1, USBBufferRX, USBBufferCount, DoUSBIn ' read data, if available
return
' ************************************************************
' * wait for USB interface to attach *
' ************************************************************
DoUSBOut:
USBBufferCount = USBBufferSizeTX ' TX buffer size
USBService ' keep connection alive
USBOut 1, USBBufferTX, USBBufferCount, DoUSBOut ' if bus available, transmit data
return
VB.NET code the form only contains textboxes and i use VB.NET2008
Code:
Option Strict Off
Option Explicit On
Friend Class MainForm
Inherits System.Windows.Forms.Form
' vendor and product IDs
Private Const VendorID As Short = 6017
Private Const ProductID As Short = 2000
' read and write buffers
Private Const BufferInSize As Short = 8
Private Const BufferOutSize As Short = 8
Dim BufferIn(BufferInSize) As Byte
Dim BufferOut(BufferOutSize) As Byte
' ****************************************************************
' when the form loads, connect to the HID controller - pass
' the form window handle so that you can receive notification
' events...
'*****************************************************************
Private Sub MainForm_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
' do not remove!
ConnectToHID(Me.Handle.ToInt32)
End Sub
'*****************************************************************
' disconnect from the HID controller...
'*****************************************************************
Private Sub MainForm_FormClosed(ByVal eventSender As System.Object, ByVal eventArgs As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
DisconnectFromHID()
End Sub
'*****************************************************************
' a HID device has been plugged in...
'*****************************************************************
Public Sub OnPlugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
' ** YOUR CODE HERE **
TextBox1.Text = "plugged"
End If
End Sub
'*****************************************************************
' a HID device has been unplugged...
'*****************************************************************
Public Sub OnUnplugged(ByVal pHandle As Integer)
If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
hidSetReadNotify(hidGetHandle(VendorID, ProductID), False)
TextBox1.Text = "unplugged"
End If
End Sub
'*****************************************************************
' controller changed notification - called
' after ALL HID devices are plugged or unplugged
'*****************************************************************
Public Sub OnChanged()
' get the handle of the device we are interested in, then set
' its read notify flag to true - this ensures you get a read
' notification message when there is some data to read...
Dim pHandle As Integer
pHandle = hidGetHandle(VendorID, ProductID)
hidSetReadNotify(hidGetHandle(VendorID, ProductID), True)
End Sub
'*****************************************************************
' on read event...
'*****************************************************************
Public Sub OnRead(ByVal pHandle As Integer)
' read the data (don't forget, pass the whole array)...
If hidRead(pHandle, BufferIn(0)) Then
' ** YOUR CODE HERE **
' first byte is the report ID, e.g. BufferIn(0)
' the other bytes are the data from the microcontroller...
TextBox2.Text = BufferIn(0)
TextBox3.Text = BufferIn(1)
TextBox4.Text = BufferIn(2)
TextBox5.Text = BufferIn(3)
TextBox6.Text = BufferIn(4)
TextBox7.Text = BufferIn(5)
TextBox8.Text = BufferIn(6)
TextBox9.Text = BufferIn(7)
End If
End Sub
End Class
Bookmarks