• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
主题 : 发一个VB.NET控制LED的代码 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 15114
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2010-02-28
最后登录: 2011-06-03
楼主  发表于: 2010-03-02 14:06

 发一个VB.NET控制LED的代码

希望对新手有帮助,我也是反复弄了三天才搞清楚,CE5+VB2005+MINI2440下调试通过
'建立一个窗体,放两个按键,分别为Button1 和Button2,把代码自制过去就可以了

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Text
Imports System.Drawing
Imports System.Runtime.InteropServices

Public Class Form1
    Const OPEN_EXISTING = 3
    Const GENERIC_READ = &H80000000
    Const GENERIC_WRITE = &H40000000
    Const INVALID_HANDLE_VALUE = -1
    Const LED_ON = &H1
    Const LED_OFF = &H6
    Const LED_1_ON = &H1
    Const LED_2_ON = &H2
    Const LED_3_ON = &H3
    Const LED_4_ON = &H4
    Const LED_ALL_ON = &H5
    Const LED_1_OFF = &H6
    Const LED_2_OFF = &H7
    Const LED_3_OFF = &H8
    Const LED_4_OFF = &H9
    Const LED_ALL_OFF = &HA
    Private hPort As IntPtr
'在VB中就是Declare比较好用
    Declare Function CreateFile Lib "coredll.dll" Alias "CreateFile" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As IntPtr, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As IntPtr) As IntPtr
    Declare Function DeviceIoControl Lib "coredll.dll" Alias "DeviceIoControl" (ByVal hDevice As System.IntPtr, ByVal dwIoControlCode As Long, ByVal lpInBuffer() As Byte, ByVal nInBufferSize As Long, ByVal lpOutBuffer() As Byte, ByVal nOutBufferSize As Long, ByVal lpBytesReturned As Long, ByVal lpOverlapped As System.IntPtr) As Boolean

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    '点亮LED      
Try
    hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
    Dim led1() As Byte = {0}
    Dim pout(10) As Byte
    DeviceIoControl(hPort, LED_1_ON, led1, 0, pout, 0, 0, IntPtr.Zero)     '在这里修改LED_1_ON就可以对所有的LED进行操作
Catch ex As Exception
    MsgBox("操作LED失败")
   End Try
End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    '关闭LED
    Try
    hPort = CreateFile("LED1:", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
    Dim led1() As Byte = {0}
    Dim pout(10) As Byte
    DeviceIoControl(hPort, LED_1_OFF, led1, 0, pout, 0, 0, IntPtr.Zero)
    Catch ex As Exception
    MsgBox("操作LED失败")
    End Try
   End Sub
end class


级别: 新手上路
UID: 2368
精华: 0
发帖: 48
金钱: 280 两
威望: 89 点
贡献值: 0 点
综合积分: 96 分
注册时间: 2008-11-13
最后登录: 2014-09-26
1楼  发表于: 2010-03-06 18:21
珍贵,试一下,谢谢
级别: 新手上路
UID: 12438
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2010-01-06
最后登录: 2010-04-07
2楼  发表于: 2010-03-10 21:53
收了 先顶下
级别: 新手上路
UID: 15961
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2010-03-12
最后登录: 2010-06-05
3楼  发表于: 2010-03-25 10:28
感謝  測試可用

且寫法較簡單

我正在研究如何用VB控制GPIO

這是很好的參考範例
謝謝
级别: 新手上路
UID: 19974
精华: 0
发帖: 2
金钱: 10 两
威望: 2 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2010-04-25
最后登录: 2010-06-23
4楼  发表于: 2010-05-12 19:33
谢谢,经测试很好用,我正在犯愁IO口的控制,这个代码对我有很大的帮助
zss
级别: 新手上路
UID: 21220
精华: 0
发帖: 4
金钱: 20 两
威望: 4 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2010-05-13
最后登录: 2010-05-17
5楼  发表于: 2010-05-13 12:14
感谢楼主分享~~~
级别: 新手上路
UID: 12406
精华: 0
发帖: 10
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2010-01-06
最后登录: 2011-02-06
6楼  发表于: 2010-07-11 20:52
我想問為甚麼createfile一定要用LED1,我改動了就不可以了.....我看過驅動,沒有甚麼地方定義這個名字啊...
级别: 新手上路
UID: 12406
精华: 0
发帖: 10
金钱: 55 两
威望: 11 点
贡献值: 0 点
综合积分: 20 分
注册时间: 2010-01-06
最后登录: 2011-02-06
7楼  发表于: 2010-07-11 21:57
已經知道答案了....因為reg裡面的prex 已經定義了.....
feimui
级别: 新手上路
UID: 46754
精华: 0
发帖: 14
金钱: 70 两
威望: 14 点
贡献值: 0 点
综合积分: 28 分
注册时间: 2011-05-16
最后登录: 2011-08-23
8楼  发表于: 2011-05-17 17:00
级别: 新手上路
UID: 48992
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2011-06-07
最后登录: 2011-06-07
9楼  发表于: 2011-06-07 18:03

 回 楼主(zdy999) 的帖子

你好!能加你QQ么   这个是我现在最需要的, 你能帮帮我么???
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go