- 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);
- }
- }
- }
- }
- }
复制代码
|