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

最新文章

  1. (AS3)关于arguments
  2. 学习WPF——WPF布局——了解布局容器
  3. WritePrivateProfileString()
  4. 第2章 linux文件系统
  5. [Android]AndroidDesign中ActionBar探究1
  6. MySQLdb模块安装-win环境
  7. unity3d中的http通信 二
  8. display 属性
  9. iOS计算文本高度
  10. ASPxGridView后台获取edit、delete、选择框等按钮。
  11. linux下安装node.js
  12. oracle_恢复流程图
  13. Bower使用教程(限window)
  14. HTTP的学习
  15. 【机器学习笔记之五】用ARIMA模型做需求预测用ARIMA模型做需求预测
  16. Java基础总结--多线程总结1
  17. Dora.Interception,为.NET Core度身打造的AOP框架:全新的版本
  18. python 常见算法
  19. 利用OpenStreetMap(OSM)数据搭建一个地图服务
  20. 如何取消Visual Studio Browser Link

热门文章

  1. python进阶十_正則表達式(一)
  2. spring mvc 和 jstl
  3. Node.js and Forever “exited with code: 0”
  4. iOS开发--in house发布和安装(ipa重新签名)
  5. Winform - 全屏显示
  6. java 基于JDK中的源码总结下String二
  7. 找到程序真正的入口(使用IDE追踪)
  8. socket为send和recv设置超时时间
  9. Poj 3771 hdu 3405
  10. .bash_profile与.bashrc和.profile的区分概念