none
DeviceIOControl Led RRS feed

Respostas

  • Fiz essa chamada:

        [DllImport("coredll.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern bool DeviceIoControl(IntPtr hDevice, uint dwIoControlCode,
        IntPtr lpInBuffer, uint nInBufferSize,
        IntPtr lpOutBuffer, uint nOutBufferSize,
        uint lpBytesReturned, IntPtr lpOverlapped);
    
        [DllImport("coredll", SetLastError = true)]
        static extern IntPtr CreateFile(String lpFileName, UInt32 dwDesiredAccess, UInt32 dwShareMode, IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition, UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);
    


    Desenvolva!!!
    sexta-feira, 3 de setembro de 2010 14:55

Todas as Respostas

  • OU simplesmente fazer a chamada
    Desenvolva!!!
    sexta-feira, 3 de setembro de 2010 12:03
  • Obrigado a todos. Conseguimos resolver aqui.
    Desenvolva!!!
    sexta-feira, 3 de setembro de 2010 13:12
  • Rodrigo,

    Que bom! Poste a solução para que outras pessoas possam se beneficiar no futuro...

    Obrigado pelo apoio.


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 3 de setembro de 2010 13:13
    Moderador
  • Fiz essa chamada:

        [DllImport("coredll.dll", SetLastError = true, CharSet = CharSet.Auto)]
        static extern bool DeviceIoControl(IntPtr hDevice, uint dwIoControlCode,
        IntPtr lpInBuffer, uint nInBufferSize,
        IntPtr lpOutBuffer, uint nOutBufferSize,
        uint lpBytesReturned, IntPtr lpOverlapped);
    
        [DllImport("coredll", SetLastError = true)]
        static extern IntPtr CreateFile(String lpFileName, UInt32 dwDesiredAccess, UInt32 dwShareMode, IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition, UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);
    


    Desenvolva!!!
    sexta-feira, 3 de setembro de 2010 14:55
  • Prezado Rodrigo,

    Tem como voce postar a rotina que faz a chamada dessas funções estou com dúvida de como manipular as variaveis.

    Desde já fico grato.

    [ ]'s

    quinta-feira, 23 de setembro de 2010 00:24
  • Claro que sim meu amigo.

    O CreateFile fiz assim : IntPtr file = CreateFile("GIO1:", GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, 3, 0, IntPtr.Zero);

    O DeviceIoControl : DeviceIoControl(file, status, IntPtr.Zero, 0, null, 0, 0, IntPtr.Zero);

    Mas veja bem, esse é o meu caso, cada caso deve respeitar os parametros. A variável status recebe o valor do comando desejado.

    Espero que tenha ajudado.

    Saudações... 

    Desenvolva!!!
    quinta-feira, 23 de setembro de 2010 11:56
  • Amigo Rodrigo,

    Me desculpe mas ainda estou com umas duvidas, no caso preciso usar essa API para ler e enviar dados para a porta paralela (LPT2), no caso tenho de enviar bytes 0,1,2 e 3 para ligar/desligar dois reles e receber o byte de status dos pinos de entrada da porta paralela.


    IntPtr file = CreateFile("LPT2", GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, 3, 0, IntPtr.Zero);
    - Como devo fazer a chamada createfile para que possa enviar e receber dados da LPT2 ?
    - Qual os valores de GENERIC_READ e GENERIC_WRITE ?
    - dwShareMode fica 0 mesmo ?

    No DeviceIoControl como deveria ficar a estrutura da chamada e  os valores das variáveis para :
    a- enviar os byte 1
    b- receber o byte dos pinos de entrada

    Muito obrigado pela ajuda, ainda estou tateando nessa solução.

    [ ]´s
    Lécio

    segunda-feira, 27 de setembro de 2010 13:12