Byte Array senden über USB mit AT90USB162

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Byte Array senden über USB mit AT90USB162

      Hallo,

      wie kann ich ein Byte Array anlegen, den ich dann praktisch über die USB sende?
      im folgenden ist das die im Original.

      BASCOM-Quellcode

      1. If Ueintx.txini = 1 Then ' Is_usb_in_ready())
      2. Uedatx = Ausgang1
      3. Uedatx = Ausgang2
      4. Uedatx = Ausgang3
      5. Uedatx = Ausgang4
      6. Uedatx = Ausgang5
      7. Uedatx = Ausgang6
      8. Uedatx = Ausgang7
      9. Uedatx = Ausgang8
      10. Usb_ack_fifocon ' Send data over the USB
      11. End If
      Alles anzeigen



      hier wie ich mir das vorgestellt habe:

      Dim AusgangTemp(4) As Byte
      AusgangTemp(1) = 128
      AusgangTemp(2) = 4
      AusgangTemp(3) = 64
      AusgangTemp(4) = 16

      If Ueintx.txini = 1 Then ' Is_usb_in_ready())
      Uedatx = AusgangTemp (1 To 4) <--- ist das möglich?, wenn ja wie
      Uedatx = Ausgang2
      Uedatx = Ausgang3
      Uedatx = Ausgang4
      Uedatx = Ausgang5
      Uedatx = Ausgang6
      Uedatx = Ausgang7
      Uedatx = Ausgang8
      Usb_ack_fifocon ' Send data over the USB
      End If





      VG
      Katipefendi
    • Also du hast ein Array mit 16 Byte-Werten und lässt die For-Next-Schleife 16 mal durchlaufen.

      BASCOM-Quellcode

      1. Dim Ausgang(16) as Byte, I As Byte
      2. 'Die For-Schleife könntest du zum Füllen nehmen, sofern es geht
      3. For I = 1 To 16
      4. Ausgang(i) = WertX
      5. Next I
      6. For I = 1 To 16
      7. Uedatx = Ausgang(i)
      8. Next I
      Ist ja auch kein Hexenwerk :)
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc schrieb:

      Also du hast ein Array mit 16 Byte-Werten und lässt die For-Next-Schleife 16 mal durchlaufen.

      BASCOM-Quellcode

      1. Dim Ausgang(16) as Byte, I As Byte
      2. 'Die For-Schleife könntest du zum Füllen nehmen, sofern es geht
      3. For I = 1 To 16
      4. Ausgang(i) = WertX
      5. Next I
      6. For I = 1 To 16
      7. Uedatx = Ausgang(i)
      8. Next I


      Ist ja auch kein Hexenwerk :)
      Leider klappt das auch nicht.
      Es kommen wieder nur die ersten 8 Werte an.

      Aber wenn ich es so mache mit einem delay dazwichen, dann kommen nur die letzten 8 Werte an.
      Und ohne delay dazwischen kommen nur die ersten8 Werte an. a_67_e210de67 a_67_e210de67 a_67_e210de67


      Uedatx = Wert1
      Uedatx = Wert2
      Uedatx = Wert3
      Uedatx = Wert4
      Uedatx = Deviceadresse
      Uedatx = Devicetype
      Uedatx = 1
      Uedatx = Wert8

      Usb_ack_fifocon

      Waitms 10

      Uedatx = Wert1
      Uedatx = Wert2
      Uedatx = Wert3
      Uedatx = Wert4
      Uedatx = Deviceadresse
      Uedatx = Devicetype
      Uedatx = 2
      Uedatx = Wert8

      Usb_ack_fifocon
    • Und wenn du es mal so probierst:

      BASCOM-Quellcode

      1. For I = 1 To 8
      2. Uedatx = Ausgang(i)
      3. Next I
      4. Usb_ack_fifocon
      5. Waitms 10
      6. For I = 9 To 16
      7. Uedatx = Ausgang(i)
      8. Next I
      9. Usb_ack_fifocon
      10. Waitms 10
      Alles anzeigen
      Kann es sein, dass nach einander nur 8 Byte gesendet werden können?
      Vielleicht muss aber auch noch ein Buffer vergrößert werden. Ich kenne ja leider diese USB-Lib nicht und was da noch alles eingestellt werden kann/muss.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc schrieb:

      Kann es sein, dass nach einander nur 8 Byte gesendet werden können?
      durch aus möglich.


      djmsc schrieb:

      Vielleicht muss aber auch noch ein Buffer vergrößert werden. Ich kenne ja leider diese USB-Lib nicht und was da noch alles eingestellt werden kann/muss.
      ja, die LIB ist schon recht komplex, also ich blicke da garnet.

      Geh jetzt schlafen, kann net mehr, der Kopf kocht schon :)
    • Aus der Hilfe zur USB Add On:
      Finally, you will find in the report data the length of the end points specified : Data &H75 , &H08
      You need to adjust these values when you want to send/receive more data.
      Klingt sehr danach, dass man die Werte ändern muss, wenn mehr Daten geschickt werden sollen.
      Musst du mal schauen, wo die stehen.
    • Hi,

      bedeutet es, das ich nur hier die Werte ändern muss?

      BASCOM-Quellcode

      1. Usb_hid_report:
      2. Data &H06 , &HFF , &HFF ' 04|2 , Usage Page (vendordefined?)
      3. Data &H09 , &H01 ' 08|1 , Usage (vendordefined
      4. Data &HA1 , &H01 ' A0|1 , Collection (Application)
      5. ' // IN report
      6. Data &H09 , &H02 ' 08|1 , Usage (vendordefined)
      7. Data &H09 , &H03 ' 08|1 , Usage (vendordefined)
      8. Data &H15 , &H00 ' 14|1 , Logical Minimum(0 for signed byte?)
      9. Data &H26 , &HFF , &H00 ' 24|1 , Logical Maximum(255 for signed byte?)
      10. Data &H75 , &H08 ' 74|1 , Report Size(8) = field size in bits = 1 byte
      11. Data &H95 , Length_of_report_in ' 94|1:ReportCount(size) = repeat count of previous item
      12. Data &H81 , &H02 ' 80|1: IN report (Data,Variable, Absolute)
      13. ' // OUT report
      14. Data &H09 , &H04 ' 08|1 , Usage (vendordefined)
      15. Data &H09 , &H05 ' 08|1 , Usage (vendordefined)
      16. Data &H15 , &H00 ' 14|1 , Logical Minimum(0 for signed byte?)
      17. Data &H26 , &HFF , &H00 ' 24|1 , Logical Maximum(255 for signed byte?)
      18. Data &H75 , &H08 ' 74|1 , Report Size(8) = field size in bits = 1 byte
      19. Data &H95 , Length_of_report_out ' 94|1:ReportCount(size) = repeat count of previous item
      20. Data &H91 , &H02 ' 90|1: OUT report (Data,Variable, Absolute)
      21. ' // Feature report
      22. Data &H09 , &H06 ' 08|1 , Usage (vendordefined)
      23. Data &H09 , &H07 ' 08|1 , Usage (vendordefined)
      24. Data &H15 , &H00 ' 14|1 , LogicalMinimum(0 for signed byte)
      25. Data &H26 , &HFF , &H00 ' 24|1 , Logical Maximum(255 for signed byte)
      26. Data &H75 , &H08 ' 74|1 , Report Size(8) =field size in bits = 1 byte
      27. Data &H95 , &H04 ' 94|1:ReportCount
      28. Data &HB1 , &H02 ' B0|1: Feature report
      29. Data &HC0
      30. ' C0|0 , End Collection
      Alles anzeigen
      oder auch diese Constante

      Const Ep_in_length_1 = 8
      Const Ep_out_length = 8
    • So, ich habe es gelöst, geändert habe ich auch die Datei USBinc da die Constante für den 16byte gefehlt hat.

      Da die Beispieldatei nur bis 8Byte groß ist, müssen
      alle output Variablen um 8Byte vergrößert werden.

      Gesendet habe ich dann:
      Uedatx = Wert1
      Uedatx = Wert2
      Uedatx = Wert3
      Uedatx = Wert4
      Uedatx = Deviceadresse
      Uedatx = Devicetype
      Uedatx = 1
      Uedatx = Wert8

      Uedatx = Wert1
      Uedatx = Wert2
      Uedatx = Wert3
      Uedatx = Wert4
      Uedatx = Deviceadresse
      Uedatx = Devicetype
      Uedatx = 2
      Uedatx = Wert8

      Usb_ack_fifocon
    • hero schrieb:

      Aus der Hilfe zur USB Add On:
      Finally, you will find in the report data the length of the end points specified : Data &H75 , &H08
      You need to adjust these values when you want to send/receive more data.
      Klingt sehr danach, dass man die Werte ändern muss, wenn mehr Daten geschickt werden sollen.
      Musst du mal schauen, wo die stehen.
      Deine Hilfe hat mich wirklich weitergebracht, danke nochmal