C#向并口设备发送指令以获取并口设备的状态

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);#endregionpublic 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);}}}}}

,有勇气并不表示恐惧不存在,而是敢面对恐惧、克服恐惧

C#向并口设备发送指令以获取并口设备的状态

相关文章:

你感兴趣的文章:

标签云: