C#向并口设备发送指令以获取并口设备的状态
2016-01-05 15:19
351 查看
using System; using System.Diagnostics; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace ParallelPort { public partial class Form1 : Form { const uint GENERIC_READ = 0x80000000; const uint GENERIC_WRITE = 0x40000000; const uint FILE_ATTRIBUTE_NORMAL = 0x80; #region win32 API [DllImport("kernel32.dll ")] private static extern int CreateFile( string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, uint dwFlagsAndAttributes, int hTemplateFile ); [DllImport("kernel32.dll ")] private static extern bool WriteFile( int hFile, byte[] lpBuffer, int nNumberOfBytesToWrite, ref int lpNumberOfBytesWritten, int lpOverlapped ); [DllImport("kernel32.dll ")] private static extern bool DefineDosDevice( int dwFlags, string lpDeviceName, string lpTargetPath); [DllImport("kernel32.dll ")] private static extern bool CloseHandle( int hObject ); [DllImport("kernel32.dll ")] private static extern bool ReadFile( int hFile, byte[] lpBuffer, int nNumberOfBytesToRead, ref int lpNumberOfBytesRead, int lpOverlapped ); #endregion public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int iHandle = -1; try { int i = 0; //创建实例 DefineDosDevice(0x00000001, "LptPortName",@"\Device\Parallel0"); iHandle = CreateFile(@"\\.\LptPortName",GENERIC_READ | GENERIC_WRITE, 0, 0, 3, FILE_ATTRIBUTE_NORMAL, 0); if (iHandle !=-1) { byte[] mybyte = new byte[3]{ 0x12, 0x14, 0x14 };//要发送的命令(16进制) WriteFile(iHandle, mybyte, mybyte.Length, ref i, 0); byte[] mybyte1 = new byte[3]; string content = String.Empty; int j = 0; ReadFile(iHandle, mybyte1, 3, ref j, 0); if (mybyte1 != null) { foreach(var tempByte in mybyte1) { content += tempByte.ToString(); } } MessageBox.Show(content);//获取的状态值 } else { MessageBox.Show("创建文件失败!"); } } catch(Exception ex) { MessageBox.Show(ex.Message); } finally { if (iHandle > 0) { CloseHandle(iHandle); } } } } }
相关文章推荐
- datatable绑定comboBox显示数据[C#]
- c#截取字符串
- 根据先序、中序、后序中的两者还原二叉树——递归函数和Csharp泛型
- C#中Math.Round()实现中国式四舍五入
- C#static与readonly与const的使用环境
- c#的自定义控件中的属性像Items一样打开一个form的做法
- C# 用OO来实现超市的购买结账
- 【C#】Color颜色对照表
- 最好的C#教程和参考书
- C# 应用程序引用其他目录的dll
- 用C#制作PDF文件全攻略
- 大一用C#编写的斗地主程序
- c# byte[] 转换为 IntPtr几种方法
- c# 中的委托
- C# 作业,简单的学生管理系统(控制台)
- 关于C#扩展方法
- c#中自定义属性
- C#常用帮助类封装,开源项目
- VS2013 C# .net 调试 无法加载符号 断点不命中
- C#多线程之旅(1)——介绍和基本概念