• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 哪位大侠给个VB.NET下控制GPIO的方法 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 10349
精华: 0
发帖: 4
金钱: 35 两
威望: 16 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2009-11-01
最后登录: 2010-01-21
楼主  发表于: 2009-11-10 19:12

 哪位大侠给个VB.NET下控制GPIO的方法

我想在VB.NET下做个控制LED灯的程序,按照网上做法进行DeviceIoControl声明时候却显示错误,请问怎么做?如何声明?希望能给个实例,拜谢啦
级别: 新手上路
UID: 6397
精华: 0
发帖: 28
金钱: 245 两
威望: 192 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2009-05-31
最后登录: 2010-06-13
1楼  发表于: 2009-11-10 21:13
你的WinCE系统有加入GPIO驱动没?
级别: 新手上路
UID: 9226
精华: 0
发帖: 22
金钱: 215 两
威望: 106 点
贡献值: 0 点
综合积分: 44 分
注册时间: 2009-09-22
最后登录: 2010-08-08
2楼  发表于: 2009-11-11 08:10
这位兄台是想使用.net调用流驱动吧.我也搞了很久了.不知道怎么办.串口是可以用的.有现成控件.其它的东西就不知道了.看了一下framework里有流驱动的调用.不知道是不是,还没有试过
级别: 新手上路
UID: 10349
精华: 0
发帖: 4
金钱: 35 两
威望: 16 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2009-11-01
最后登录: 2010-01-21
3楼  发表于: 2009-11-11 17:18
是呀,就是想调用流驱动来控制接的LED,开发板的GPIO应该已经添加过了,上面有EVC的测试程序
级别: 新手上路
UID: 12162
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2009-12-30
最后登录: 2010-10-29
4楼  发表于: 2010-01-19 01:01
我也是在找用VB.NET来控制GPIO的方法,有高手可以指点一二吗?

CHEERS
级别: 新手上路
UID: 13079
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2010-01-18
最后登录: 2010-02-12
5楼  发表于: 2010-01-19 14:43
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace LED_CSharp
{
    public partial class Form1 : Form
    {
        const UInt32 OPEN_EXISTING = 3;
        const UInt32 GENERIC_READ = 0x80000000;
        const UInt32 GENERIC_WRITE = 0x40000000;
        const Int32 INVALID_HANDLE_VALUE = -1;

        const UInt32 LED_ON = 0x01;
        const UInt32 LED_OFF = 0x06;

        
        private IntPtr hPort;

        //导入API
        [DllImport("coredll.dll")]
        public static extern IntPtr CreateFile(String lpFileName, UInt32 dwDesiredAccess, UInt32 dwShareMode, IntPtr lpSecurityAttributes, UInt32 dwCreationDisposition, UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);
        [DllImport("coredll.dll")]
        public static extern bool DeviceIoControl(IntPtr hDevice, UInt32 dwIoControlCode, Byte[] lpInBuffer, UInt32 nInBufferSize, Byte[] lpOutBuffer, UInt32 nOutBufferSize, UInt32 lpBytesReturned, IntPtr lpOverlapped);


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //打开LED驱动,获取句柄
            hPort = CreateFile("LED1:", GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
            if (hPort == (IntPtr)INVALID_HANDLE_VALUE)
            {
                MessageBox.Show("Open Led Driver Fail");
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //打开LED灯
            byte[] led1 = new Byte[1];
            led1[0] = 0;
            byte[] pout = new Byte[10];
            //DeviceIoControl(hPort, LED_ON, led1, 0, pout, 10, 0, IntPtr.Zero);
            DeviceIoControl(hPort, LED_ON, led1, 0, pout,0,0,IntPtr.Zero);
        }  

        private void button4_Click(object sender, EventArgs e)
        {
            //关闭LED灯
            byte[] led1 = new Byte[1];
            led1[0] = 0;
            byte[] pout = new Byte[10];
            //DeviceIoControl(hPort, LED_OFF, led1, 0, pout, 10, 0, IntPtr.Zero);
            DeviceIoControl(hPort, LED_OFF, led1, 0, pout,0,0,IntPtr.Zero);
        }
    }
}
级别: 新手上路
UID: 13079
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2010-01-18
最后登录: 2010-02-12
6楼  发表于: 2010-01-19 14:46

 回 5楼(tzechienchu) 的帖子

因為是Copy的Code.
事實上
            byte[] led1 = new Byte[1];
            led1[0] = 0;
            byte[] pout = new Byte[10];
led1,pout應該都不需要
级别: 新手上路
UID: 12162
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2009-12-30
最后登录: 2010-10-29
7楼  发表于: 2010-01-20 16:15
tzechienchu,

好诊贵的讯息呀,在此多谢了。

cheers
级别: 新手上路
UID: 13079
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2010-01-18
最后登录: 2010-02-12
8楼  发表于: 2010-01-20 16:20
.#define IO_CTL_LED_1_ON 0x01
#define IO_CTL_LED_2_ON 0x02
#define IO_CTL_LED_3_ON 0x03
#define IO_CTL_LED_4_ON 0x04
#define IO_CTL_LED_ALL_ON 0x05
#define IO_CTL_LED_1_OFF 0x06
#define IO_CTL_LED_2_OFF 0x07
#define IO_CTL_LED_3_OFF 0x08
#define IO_CTL_LED_4_OFF 0x09
#define IO_CTL_LED_ALL_OFF 0x0a
忘了這些空置碼
你可以在 LEDDriver.cpp 中找到
级别: 新手上路
UID: 13079
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2010-01-18
最后登录: 2010-02-12
9楼  发表于: 2010-01-20 17:31
//Key Reading API 宣告
[DllImport ("coredll.dll")]
        public static extern int ReadFile(IntPtr hDevice,Byte[] lpOutBuffer,UInt32 nNumberOfBytesToRead, UInt32 lpBytesReturned, IntPtr lpOverlapped);

//讀Key的值
        byte[] pout = new Byte[6];
         ReadFile(kPort,pout,6,0, IntPtr.Zero);

based on WinCE 6.0 版
另外如何讀取Key Event還在努力中
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go