Can I access USB HID on CE embedded from C#?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Jeff Louie

    Can I access USB HID on CE embedded from C#?

    A bit of background. I have been asked to offer an independent
    programming
    study for high school students. I thought it would be really cool to
    challenge
    them with an embedded coding challenge on a embedded windows ce device.
    I have a windows ce embedded device and development system up and
    running. Now I want a practical example of an industrial control.
    Reading
    temperature from a USB device and displaying it in C# _seems_ like a
    doable
    project and very practical. I found a USB temperature probe that
    supports HID
    on ce.



    Below is the read me file. My question is can I call these methods from
    C#? I
    don't even know if C# on windows embedded supports PINVOKE. To put it
    mildly I am a in a bit over my head here. Any answers appreciated.

    Oak USB Sensor HID Driver for Windows CE 5.0
    =============== =============== ==============

    General
    -------
    The Oak USB Sensor HID Driver adds support for ToradexÆ USB Sensors to
    Windows CE 5.0 operations systems. The driver provides a stream
    interface
    which allows using standard file system functions to access the device
    such
    as CreateFile, ReadFile, IOControl, and so on. Treating devices as
    special files
    is common to many operating systems. Serial ports traditionally have
    been
    represented by the COMx: special file names, similarly Oak USB Sensors
    are
    represented by the OAKx: special file names.

    For more information about stream interface drivers please refere to
    MSDN
    documentation:



    Installation
    ------------
    Copy and run the OakHidCE_v1.0.c ab file on your Windows CE 5.0 target
    system and choose an appropriate installation directroy. For persistent
    driver
    installation on ToradexÆ Colibri modules we recommend "\FlashDisk \" as
    install dir.


    Usage
    -----
    - Detect Oak sensor hot plugging by the events: OAK_ATTACH_EVEN T and
    OAK_DETACH_EVEN T
    (use GetEventData() to determine what sensor has been attached or
    detached)

    - Open sensor access: hOakDevice=Crea teFile(L"OAKx:" ,....)

    - Use/access sensor: ReadFile(hOakDe vice,...)
    DeviceIoControl (hOakDevice,IOC TL_OAK_...)

    - Terminate sensor use: CloseHandle(hOa kDevice)


    Supported IOCTLs
    ----------------

    - IOCTL_OAK_GET_I NPUT_REPORT
    - IOCTL_OAK_GET_F EATURE_REPORT
    - IOCTL_OAK_SET_O UTPUT_REPORT
    - IOCTL_OAK_SET_F EATURE_REPORT

    - IOCTL_OAK_GET_I NPUT_REPORT_LEN GTH
    - IOCTL_OAK_GET_O UTPUT_REPORT_LE NGTH
    - IOCTL_OAK_GET_F EATURE_REPORT_L ENGTH

    - IOCTL_OAK_GET_I NPUT_VALUE_COUN T
    - IOCTL_OAK_GET_O UTPUT_VALUE_COU NT

    - IOCTL_OAK_GET_I NPUT_VALUE_CAPS
    - IOCTL_OAK_GET_O UTPUT_VALUE_CAP S

    - IOCTL_OAK_GET_S TRING_MANUFACT
    - IOCTL_OAK_GET_S TRING_PRODUCT
    - IOCTL_OAK_GET_S TRING_SERIAL
    - IOCTL_OAK_GET_S TRING_INDEXED

    - IOCTL_OAK_GET_Q UEUE_SIZE
    - IOCTL_OAK_SET_Q UEUE_SIZE

    - IOCTL_OAK_GET_A CCESS_TIMEOUT
    - IOCTL_OAK_SET_A CCESS_TIMEOUT

    - IOCTL_OAK_GET_P RODUCT_ID


    Regards,
    Jeff

    *** Sent via Developersdex http://www.developersdex.com ***
  • Pavel Minaev

    #2
    Re: Can I access USB HID on CE embedded from C#?

    On Jul 18, 10:26 am, Jeff Louie <anonym...@devd ex.comwrote:
    A bit of background. I have been asked to offer an independent
    programming
    study for high school students. I thought it would be really cool to
    challenge
    them with an embedded coding challenge on a embedded windows ce device.
    I have a windows ce embedded device and development system up and
    running. Now I want a practical example of an industrial control.
    Reading
    temperature from a USB device and displaying it in C# _seems_ like a
    doable
    project and very practical. I found a USB temperature probe that
    supports HID
    on ce.
    >

    >
    Below is the read me file. My question is can I call these methods from
    C#? I
    don't even know if C# on windows embedded supports PINVOKE. To put it
    mildly I am a in a bit over my head here. Any answers appreciated.
    >
    Oak USB Sensor HID Driver for Windows CE 5.0
    =============== =============== ==============
    >
    General
    -------
    The Oak USB Sensor HID Driver adds support for ToradexÆ USB Sensors to
    Windows CE 5.0 operations systems. The driver provides a stream
    interface
    which allows using standard file system functions to access the device
    such
    as CreateFile, ReadFile, IOControl, and so on.

    Yes, you can call them from C# via P/Invoke. I'm not sure what kind of
    Windows you have - is it WinCE or WinNT/XP/Vista Embedded? Anyway,
    either one supports P/Invoke, though CE has some limitations.

    Comment

    • Jeff Louie

      #3
      Re: Can I access USB HID on CE embedded from C#?

      Hi Pavel... Thanks for the quick reply. I am programming WindowsCE
      embedded
      using VisualStudio200 5onXP and transferring/running the programs to a CE
      device over an intranet. With your encouragement I will go ahead and try
      to
      PINVOKE on CE.

      Regards,
      Jeff

      *** Sent via Developersdex http://www.developersdex.com ***

      Comment

      • Jeff Louie

        #4
        Re: Can I access USB HID on CE embedded from C#?

        This compiled and executed on a ce device. Deployment, execution and
        debugging also worked over an intranet!

        public class SomeClass
        {
        private uint OldCnt;
        public SomeClass()
        {
        OldCnt = 0;
        }
        [DllImport ("coredll.dl l")]
        private static extern uint GetTickCount ();

        public uint TicksSinceLast (){
        uint ticks = GetTickCount();
        uint diff = ticks - OldCnt;
        OldCnt = ticks;
        return diff;
        }
        }

        public partial class Form1 : Form
        {
        private SomeClass sc = new SomeClass();
        public Form1()
        {
        InitializeCompo nent();
        }

        private void button1_Click(o bject sender, EventArgs e)
        {
        textBox1.Text = "Hello World "+sc.TicksSince Last();

        }

        Regards,
        Jeff

        *** Sent via Developersdex http://www.developersdex.com ***

        Comment

        Working...