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

那里可下载“coredll.dll”?

谢谢了
eclim
级别: 新手上路
UID: 13079
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
贡献值: 0 点
综合积分: 26 分
注册时间: 2010-01-18
最后登录: 2010-02-12
11楼  发表于: 2010-01-28 09:39
coredll.dll 就在WinCE 中 不用下載
fri
级别: 新手上路
UID: 11104
精华: 0
发帖: 19
金钱: 100 两
威望: 23 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2009-11-27
最后登录: 2010-08-17
12楼  发表于: 2010-02-03 12:49
         請問如果我想控制蜂鳴器那因該要怎麼寫      
         我對coredll.dll裡的東西不了解
级别: 新手上路
UID: 12162
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2009-12-30
最后登录: 2010-10-29
13楼  发表于: 2010-03-23 08:00
Hi tzechienchu ,

我以成功用VB.NET控制LED 1,2,3 & 4.  

可是我还不懂怎样读LED or Port 的status.  还有为什么CreateFile 一定要用"LED1:"为filename?  如果换成别的filename将会失败控制GPIO???

chees
ec lim


**************************************************
Module modMain
    Declare Function LoadCursor Lib "coredll.dll" (ByVal zeroValue As Integer, ByVal cursorID As Integer) As Integer

    Declare Function SetCursor Lib "coredll.dll" (ByVal cursorHandle As Integer) As Integer

    Declare Function CreateFile Lib "coredll" ( _
        ByVal lpFileName As String, _
        ByVal dwDesiredAccess As Integer, _
        ByVal dwShareMode As Integer, _
        ByVal lpSecurityAttributes As Integer, _
        ByVal dwCreationDisposition As Integer, _
        ByVal dwFLagsAndAttributes As Integer, _
        ByVal hTemplateFile As Integer) As Integer

    Declare Function DeviceIoControl Lib "coredll.dll" ( _
        ByVal hDevice As Integer, _
        ByVal dwIoControlCode As Integer, _
        ByVal lpInBuffer() As Byte, _
        ByVal nInBufferSize As Integer, _
        ByVal lpOutBuffer() As Byte, _
        ByVal nOutBufferSize As Integer, _
        ByRef lpBytesReturned As Integer, _
        ByVal lpOverlapped As Integer) As Integer

    Public Declare Function ReadFile Lib "Coredll" ( _
        ByVal hFile As Long, _
        ByVal lpBuffer() As Byte, _
        ByVal nNumberOfBytesToRead As Long, _
        ByVal lpNumberOfBytesRead() As Byte, _
        ByVal lpOverlapped As Long) As Long

    Public Declare Function CloseHandle Lib "Coredll" (ByVal hObject As Integer) As Integer

    Public Const OPEN_EXISTING As Integer = 3
    Public Const INVALID_HANDLE_VALUE = -1
    Public Const GENERIC_READ As Integer = &H80000000
    Public Const GENERIC_WRITE As Integer = &H40000000
    Public Const LED_ON = &H1
    Public Const LED_OFF = &H6


    Public Const IO_CTL_LED_1_ON As Integer = &H1
    Public Const IO_CTL_LED_2_ON As Integer = &H2
    Public Const IO_CTL_LED_3_ON As Integer = &H3
    Public Const IO_CTL_LED_4_ON As Integer = &H4
    Public Const IO_CTL_LED_ALL_ON As Integer = &H5

    Public Const IO_CTL_LED_1_OFF As Integer = &H6
    Public Const IO_CTL_LED_2_OFF As Integer = &H7
    Public Const IO_CTL_LED_3_OFF As Integer = &H8
    Public Const IO_CTL_LED_4_OFF As Integer = &H9
    Public Const IO_CTL_LED_ALL_OFF As Integer = &HA

End Module

***************************************************************
Public Class frmMain
    Dim hPort As Integer = -1

    Private Sub btnOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpen.Click
        hPort = CreateFile("LED1:", GENERIC_READ + GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
        If hPort = INVALID_HANDLE_VALUE Then
            MessageBox.Show("Open Led Driver Fail")
        Else
            MessageBox.Show("Open Ok." & hPort.ToString)
        End If
    End Sub

    Private Sub btnOnLed1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOnLed1.Click
        OnLED(1)
    End Sub

    Private Sub btnOffLED1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOffLED1.Click
        OffLED(1)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        CloseHandle(hPort)
    End Sub

    Private Sub btnONLED2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnONLED2.Click
        OnLED(2)
    End Sub

    Private Sub OnLED(ByVal PortNo As Integer)
        Dim IO_CTL_LED_Value As Integer = 0
        Select Case PortNo
            Case 1
                IO_CTL_LED_Value = IO_CTL_LED_1_ON
            Case 2
                IO_CTL_LED_Value = IO_CTL_LED_2_ON

            Case 3
                IO_CTL_LED_Value = IO_CTL_LED_3_ON

            Case 4
                IO_CTL_LED_Value = IO_CTL_LED_4_ON

            Case 5
                IO_CTL_LED_Value = IO_CTL_LED_ALL_ON
        End Select

        Dim byteLED(1) As Byte
        Dim byteOut(10) As Byte
        DeviceIoControl(hPort, IO_CTL_LED_Value, byteLED, 0, byteOut, 0, 0, IntPtr.Zero)
    End Sub

    Private Sub OffLED(ByVal PortNo As Integer)
        Dim IO_CTL_LED_Value As Integer = 0
        Select Case PortNo
            Case 1
                IO_CTL_LED_Value = IO_CTL_LED_1_OFF
            Case 2
                IO_CTL_LED_Value = IO_CTL_LED_2_OFF

            Case 3
                IO_CTL_LED_Value = IO_CTL_LED_3_OFF

            Case 4
                IO_CTL_LED_Value = IO_CTL_LED_4_OFF

            Case 5
                IO_CTL_LED_Value = IO_CTL_LED_ALL_OFF
        End Select

        Dim byteLED(1) As Byte
        Dim byteOut(10) As Byte
        DeviceIoControl(hPort, IO_CTL_LED_Value, byteLED, 0, byteOut, 0, 0, IntPtr.Zero)
    End Sub

    Private Sub btnONLEDALL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnONLEDALL.Click
        OnLED(5)
    End Sub

    Private Sub btnONLED3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnONLED3.Click
        OnLED(3)
    End Sub

    Private Sub btnONLED4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnONLED4.Click
        OnLED(4)
    End Sub

    Private Sub btnOffLED2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOffLED2.Click
        OffLED(2)
    End Sub

    Private Sub btnOffLED3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOffLED3.Click
        OffLED(3)
    End Sub

    Private Sub btnOffLED4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOffLED4.Click
        OffLED(4)
    End Sub

    Private Sub btnOFFALL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOFFALL.Click
        OffLED(5)
    End Sub

    Private Sub btnReadLED1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReadLED1.Click
        '##################################################
        'Please take notes that this routine is not working
        '##################################################
        Dim byteRead(6) As Byte
        Dim byteRead2(6) As Byte

        ReadFile(hPort, byteRead, 6, byteRead2, IntPtr.Zero)

        Me.Label1.Text = ""

        For i As Integer = 0 To byteRead.GetUpperBound(0)
            Me.Label1.Text += byteRead(i).ToString
        Next
    End Sub
End Class
[ 此帖被eclim在2010-03-23 09:18重新编辑 ]
级别: 新手上路
UID: 18393
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2010-04-09
最后登录: 2012-08-02
14楼  发表于: 2010-05-13 20:21
請問一下是否有 I2C的 VB.NET 代碼  
级别: 新手上路
UID: 110779
精华: 0
发帖: 36
金钱: 185 两
威望: 37 点
贡献值: 0 点
综合积分: 72 分
注册时间: 2014-12-04
最后登录: 2015-03-16
15楼  发表于: 2014-12-05 10:57
这个不错,收藏一下!
  • «
  • 1
  • 2
  • »
  • Pages: 2/2     Go