Visual basic6 + 18f4550 usb kontrol

Başlatan ibrahim626, 11 Nisan 2012, 22:49:42

ibrahim626

Öncelikle Herkese merhaba benim bir sorum olacak , ben suan PIC 18F4550 ile usbden led yakmaya çalışıyorum bağlantıyı sorunsuz kurdum işlemci ile haberleşebiliyorum fakat ledleri istediğim gibi yakamıyorum. programda toplamda 16 adet buton var bunlar 8 ledi yakıp söndürmek içindir, benim istediğim çalışma kosulu :
butonlardan basılı olana karsılık o ledi yakmak yani hangi buton yada butonlar basılı ise karsılık gelen ledlerı yakmak
benim programımın çalışması iste şöyle :
1. butona basıyorum portb\'nin 0.ledi yanıyor
2. butona bastığımda ise port.0\'daki lled sönüyor 1.led yanıyor ben bunları birbirinden nasıl kontrol edebilirim ? nasıl bi program yazmalıyım vb\'de henuz biraz acemiyim.



\' vendor and product IDs
Private Const VendorID = 6017
Private Const ProductID = 2000

\' read and write buffers
Private Const BufferInSize = 8
Private Const BufferOutSize = 8
Dim BufferIn(0 To BufferInSize) As Byte
Dim BufferOut(0 To BufferOutSize) As Byte
Dim sayi As Byte

Private Sub Command1_Click()
BufferOut(4) = Val(sayi + 1)
hidWriteEx VendorID, ProductID, BufferOut(0)

End Sub

Private Sub Command2_Click()
BufferOut(4) = Val(sayi + 2)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command3_Click()
BufferOut(4) = Val(sayi + 4)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command4_Click()
BufferOut(4) = Val(sayi + 8)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command5_Click()
BufferOut(4) = Val(sayi + 16)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command6_Click()
BufferOut(4) = Val(sayi + 32)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command7_Click()
BufferOut(4) = Val(sayi + 64)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command8_Click()
BufferOut(4) = Val(sayi + 128)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command9_Click()

End Sub

\' ****************************************************************
\' when the form loads, connect to the HID controller - pass
\' the form window handle so that you can receive notification
\' events...
\'*****************************************************************
Private Sub Form_Load()
   \' do not remove!
   ConnectToHID (Me.hwnd)
End Sub

\'*****************************************************************
\' disconnect from the HID controller...
\'*****************************************************************
Private Sub Form_Unload(Cancel As Integer)
   DisconnectFromHID
End Sub

\'*****************************************************************
\' a HID device has been plugged in...
\'*****************************************************************
Public Sub OnPlugged(ByVal pHandle As Long)
   If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
      \' ** YOUR CODE HERE **
   End If
End Sub

\'*****************************************************************
\' a HID device has been unplugged...
\'*****************************************************************
Public Sub OnUnplugged(ByVal pHandle As Long)
   If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
      \' ** YOUR CODE HERE **
   End If
End Sub

\'*****************************************************************
\' controller changed notification - called
\' after ALL HID devices are plugged or unplugged
\'*****************************************************************
Public Sub OnChanged()
   Dim DeviceHandle As Long
   
   \' 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...
   DeviceHandle = hidGetHandle(VendorID, ProductID)
   hidSetReadNotify DeviceHandle, True
End Sub

\'*****************************************************************
\' on read event...
\'*****************************************************************
Public Sub OnRead(ByVal pHandle As Long)
   
   \' 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 microcontrolller...
   End If
End Sub

\'*****************************************************************
\' this is how you write some data...
\'*****************************************************************
Public Sub WriteSomeData()
   BufferOut(0) = 0   \' first by is always the report ID
   BufferOut(1) = 10  \' first data item, etc etc

   \' write the data (don\'t forget, pass the whole array)...
   hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub
 

ibrahim626


yazici67

@ibrahim626 arkadaşım sorunu nasıl çözdüğüne dair bilgi verirsen aynı sorunu yaşayan arkadaşlar açısından da faydalı olacaktır.Kolay gelsin...

ibrahim626

Evet haklısın yazıcı67 ,benim hatalarım :

bi buffer\'ı direk bi porta yöndendirme oldu ama sonradan farkettim her bir bufferi bir portun 8 bitine yönlendirince istediğim şekilde çalıştı. Örneğin
buffer[1]=portd.0
buffer[2]=portd.1
....
buffer[8]=portd.7 gibi

bu sekilde 8 buffer\'ı tek tek portd\'nin pinlerine yönlendirdim, tabi bu esnada bufferlar PC tarafından 1-2 -3 , PIC tarafından ise 0-1-2 diye baslıyor,suan pcden 8 ledi kontrol edilebiliyor.programın doğru olanı ise

VB

\' vendor and product IDs
Private Const VendorID = 6017
Private Const ProductID = 2000

\' read and write buffers
Private Const BufferInSize = 8
Private Const BufferOutSize = 32
Dim BufferIn(0 To BufferInSize) As Byte
Dim BufferOut(0 To BufferOutSize) As Byte

Private Sub Command1_Click()
BufferOut(1) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)

End Sub

Private Sub Command10_Click()
BufferOut(2) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command11_Click()
BufferOut(3) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command12_Click()
BufferOut(4) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command13_Click()
BufferOut(5) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command14_Click()
BufferOut(6) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command15_Click()
BufferOut(7) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command16_Click()
BufferOut(8) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command2_Click()
BufferOut(2) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command3_Click()
BufferOut(3) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command4_Click()
BufferOut(4) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command5_Click()
BufferOut(5) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command6_Click()
BufferOut(6) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command7_Click()
BufferOut(7) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command8_Click()
BufferOut(8) = Val(1)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

Private Sub Command9_Click()
BufferOut(1) = Val(0)
hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub

\' ****************************************************************
\' when the form loads, connect to the HID controller - pass
\' the form window handle so that you can receive notification
\' events...
\'*****************************************************************
Private Sub Form_Load()
   \' do not remove!
   ConnectToHID (Me.hwnd)
End Sub

\'*****************************************************************
\' disconnect from the HID controller...
\'*****************************************************************
Private Sub Form_Unload(Cancel As Integer)
   DisconnectFromHID
End Sub

\'*****************************************************************
\' a HID device has been plugged in...
\'*****************************************************************
Public Sub OnPlugged(ByVal pHandle As Long)
   If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
      \' ** YOUR CODE HERE **
   End If
End Sub

\'*****************************************************************
\' a HID device has been unplugged...
\'*****************************************************************
Public Sub OnUnplugged(ByVal pHandle As Long)
   If hidGetVendorID(pHandle) = VendorID And hidGetProductID(pHandle) = ProductID Then
      \' ** YOUR CODE HERE **
   End If
End Sub

\'*****************************************************************
\' controller changed notification - called
\' after ALL HID devices are plugged or unplugged
\'*****************************************************************
Public Sub OnChanged()
   Dim DeviceHandle As Long
   
   \' 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...
   DeviceHandle = hidGetHandle(VendorID, ProductID)
   hidSetReadNotify DeviceHandle, True
End Sub

\'*****************************************************************
\' on read event...
\'*****************************************************************
Public Sub OnRead(ByVal pHandle As Long)
   
   \' 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 microcontrolller...
   End If
End Sub

\'*****************************************************************
\' this is how you write some data...
\'*****************************************************************
Public Sub WriteSomeData()
   BufferOut(0) = 0   \' first by is always the report ID
   BufferOut(1) = 10  \' first data item, etc etc

   \' write the data (don\'t forget, pass the whole array)...
   hidWriteEx VendorID, ProductID, BufferOut(0)
End Sub
 

Private Sub Label1_Click()

End Sub



PROTON TARAFI
\' select MCU and clock speed
Device = 18F4550
XTAL = 48

\' descriptor file, located in \\inc\\usb_18 - a copy
\' is located in the same folder as this file
USB_DESCRIPTOR = \"USBDENEMEDESC.inc\"

\' USB Buffer...
Symbol USBBufferSizeMax = 32
Symbol USBBufferSizeTX  = 8
Symbol USBBufferSizeRX  = 32
Dim    USBBuffer[USBBufferSizeMax] As Byte

Declare LCD_DTPIN  PORTB.0
Declare LCD_RSPIN  PORTB.4
Declare LCD_ENPIN  PORTB.5
Declare LCD_LINES  2

\' some useful flags...
Dim PP0 As Byte SYSTEM        \' USBPOLL status return
Symbol CARRY_FLAG = STATUS.0  \' high if microcontroller does not have control over the buffer
Symbol ATTACHED_STATE = 6     \' is USB attached

TRISB=0
TRISD = %00000000
 
GoSub AttachToUSB
ProgramLoop:

   
   USBOut 1, USBBuffer, USBBufferSizeTX
 
   USBIn 1, USBBuffer, USBBufferSizeRX, ProgramLoop
   PORTD.0 = USBBuffer[0]
   PORTD.1 = USBBuffer[1]
   PORTD.2 = USBBuffer[2]
   PORTD.3 = USBBuffer[3]
   PORTD.4 = USBBuffer[4]
   PORTD.5 = USBBuffer[5]
   PORTD.6 = USBBuffer[6]
   PORTD.7 = USBBuffer[7]
   
   
   GoTo ProgramLoop
 
DoUSBIn:
   USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
   Return

DoUSBOut:   
   USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
   Return

AttachToUSB:
   Repeat
      USBPoll
   Until PP0 = ATTACHED_STATE
   Return

Hızlı Yanıt

Not: Bu konu bir moderatör tarafından onaylanmadan görüntülenmeyecektir.

Adı:
E-Posta:
Doğrulama:
Lütfen bu kutuyu boş bırakın:
IRFP250 Nedir:
kısayollar: göndermek için alt+s veya önizleme yapmak için alt+p'ye basın