主题 : 想用c#在wince5裡寫控制蜂鳴器 复制链接 | 浏览器收藏 | 打印
fri
级别: 新手上路
UID: 11104
精华: 0
发帖: 19
金钱: 100 两
威望: 23 点
综合积分: 38 分
注册时间: 2009-11-27
最后登录: 2010-08-17
楼主  发表于: 2010-02-10 12:03

 想用c#在wince5裡寫控制蜂鳴器


             我現在用使用c#在wince5上寫程式,我想寫個控制蜂鳴器的程式, 我先導入API    [DllImport("coredll.dll")]  

                ,然後用CreateFile開啟檔案,接下來就不知道要怎麼做了  

                   請高手指點一下
fri
级别: 新手上路
UID: 11104
精华: 0
发帖: 19
金钱: 100 两
威望: 23 点
综合积分: 38 分
注册时间: 2009-11-27
最后登录: 2010-08-17
1楼  发表于: 2010-02-15 15:26
已解決
级别: 新手上路
UID: 14608
精华: 0
发帖: 10
金钱: 50 两
威望: 10 点
综合积分: 20 分
注册时间: 2010-02-16
最后登录: 2017-06-26
2楼  发表于: 2010-02-16 22:30
怎么解决的也不说一下 真不厚道
fri
级别: 新手上路
UID: 11104
精华: 0
发帖: 19
金钱: 100 两
威望: 23 点
综合积分: 38 分
注册时间: 2009-11-27
最后登录: 2010-08-17
3楼  发表于: 2010-02-17 00:01
抱歉
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 DeviceApplication1
{
    unsafe 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 PWM_start = 0x02;

        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, UInt32* lpInBuffer, UInt32 nInBufferSize, Byte[] lpOutBuffer, UInt32 nOutBufferSize, UInt32 lpBytesReturned, IntPtr lpOverlapped);

        UInt32 voice = 1000;

        public Form1()
        {
            InitializeComponent();
        }

          private void button1_Click_1(object sender, EventArgs e)
          {

                hPort = CreateFile("PWM1:", GENERIC_READ | GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);

              if (hPort == (IntPtr)INVALID_HANDLE_VALUE)
                {
                    MessageBox.Show("Open PWM Driver Fail");
                }
          }
  
  

    

        private void button4_Click(object sender, EventArgs e)
        {
            Byte[] pout = new Byte[10];

            voice += 10 ;

            if (voice >= 1500)

                voice = 1500;

            textBox1.Text = voice+"";

            fixed (UInt32* p = &voice)
            {
                DeviceIoControl(hPort, PWM_start, p, 4, pout, 0, 0, IntPtr.Zero);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Byte[] pout = new Byte[10];

            voice -= 10;

            if(voice<=500)

                voice =500;

            textBox1.Text = voice + "";

            fixed (UInt32* p = &voice)
            {
                DeviceIoControl(hPort, PWM_start, p, 4, pout, 0, 0, IntPtr.Zero);
            }
        }

  
    }
}
级别: 新手上路
UID: 14009
精华: 0
发帖: 6
金钱: 30 两
威望: 6 点
综合积分: 12 分
注册时间: 2010-02-01
最后登录: 2010-07-21
4楼  发表于: 2010-03-05 13:38
兄弟,能否做一个类贴上来?
fri
级别: 新手上路
UID: 11104
精华: 0
发帖: 19
金钱: 100 两
威望: 23 点
综合积分: 38 分
注册时间: 2009-11-27
最后登录: 2010-08-17
5楼  发表于: 2010-03-16 12:06
抱歉  我不太懂你的意思
级别: 新手上路
UID: 16114
精华: 0
发帖: 13
金钱: 65 两
威望: 13 点
综合积分: 26 分
注册时间: 2010-03-14
最后登录: 2010-09-15
6楼  发表于: 2010-03-18 14:46
楼主有c#控制IO口和AD转换的程序吗?谢谢
级别: 新手上路
UID: 16990
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
综合积分: 6 分
注册时间: 2010-03-24
最后登录: 2017-09-13
7楼  发表于: 2010-04-08 16:32
这个编译的时候有错误:
[DllImport("coredll.dll")]
        public static extern bool DeviceIoControl(IntPtr hDevice, UInt32 dwIoControlCode, UInt32* lpInBuffer, UInt32 nInBufferSize, Byte[] lpOutBuffer, UInt32 nOutBufferSize, UInt32 lpBytesReturned, IntPtr lpOverlapped);
错误 CS0214: 指针和固定大小缓冲区只能在不安全的上下文中使用
fri
级别: 新手上路
UID: 11104
精华: 0
发帖: 19
金钱: 100 两
威望: 23 点
综合积分: 38 分
注册时间: 2009-11-27
最后登录: 2010-08-17
8楼  发表于: 2010-04-28 11:50

 回 7楼(青山) 的帖子

要在定義空間的地方加上 unsafe

例:  unsafe public partial class Form1 : Form