C# 操作并口类,并口通信
c#已提供了串口通信组件SerialPort,但是C#并没有提供直接的并口通信组件,只好通过调用API来与并口通信
![](/assets/blank.gif)
![](/assets/blank.gif)
2 using System.Runtime.InteropServices;
3 namespace LptPrint_test
4 {
5 /// <summary>
6 /// LPTControl 的摘要说明。
7 /// </summary>
8 public class LPTControl
9 {
10 private string LptStr = "lpt1";
11 public LPTControl(string l_LPT_Str)
12 {
13 //
14 // TODO: 在此处添加构造函数逻辑
15 //
16 LptStr = l_LPT_Str;
17 }
18 [StructLayout(LayoutKind.Sequential)]
19 private struct OVERLAPPED
20 {
21 int Internal;
22 int InternalHigh;
23 int Offset;
24 int OffSetHigh;
25 int hEvent;
26 }
27 [DllImport("kernel32.dll")]
28 private static extern int CreateFile(string lpFileName, uint dwDesiredAccess, int dwShareMode, int lpSecurityAttributes, int dwCreationDisposition, int dwFlagsAndAttributes, int hTemplateFile);
29 [DllImport("kernel32.dll")]
30 private static extern bool WriteFile(int hFile, byte[] lpBuffer, int nNumberOfBytesToWrite, ref int lpNumberOfBytesWritten, ref OVERLAPPED lpOverlapped);
31 [DllImport("kernel32.dll")]
32 private static extern bool CloseHandle(int hObject);
33 private int iHandle;
34 public bool Open()
35 {
36 iHandle = CreateFile(LptStr, 0x40000000, 0, 0, 3, 0, 0);
37 if (iHandle != - 1)
38 {
39 return true;
40 }
41 else
42 {
43 return false;
44 }
45 }
46 public bool Write(String Mystring)
47 {
48 if (iHandle != - 1)
49 {
50 OVERLAPPED x = new OVERLAPPED();
51 int i = 0;
52 byte[] mybyte = System.Text.Encoding.Default.GetBytes(Mystring);
53 bool b = WriteFile(iHandle, mybyte, mybyte.Length, ref i, ref x);
54 return b;
55 }
56 else
57 {
58 throw new Exception("不能连接到打印机!");
59 }
60 }
61 public bool Write(byte[] mybyte)
62 {
63 if (iHandle != - 1)
64 {
65 OVERLAPPED x = new OVERLAPPED();
66 int i = 0;
67 WriteFile(iHandle, mybyte, mybyte.Length, ref i, ref x);
68 return true;
69 }
70 else
71 {
72 throw new Exception("不能连接到打印机!");
73 }
74 }
75 public bool Close()
76 {
77 return CloseHandle(iHandle);
78 }
79 }
80 }
81
82
转载于:https://www.cnblogs.com/kk1230/archive/2009/11/25/1610728.html
C# 操作并口类,并口通信相关推荐
- Qt操作Office的一个实例--口算题生成器制作。
文章目录 Qt操作Office的一个实例--口算题生成器制作. 1.关联QAxObject 2.操作Word文档: 3.设计界面 4.关键代码 效果: Qt操作Office的一个实例–口算题生成器制作 ...
- RS-232串行口连接线 com口连接线 并口链接线 双绞线 交叉线 直连线
通过串口并口共享资源在两台计算机之间进行通信,最好的方法当然是建立局域网.如果没有建立网络, 又想进行联机通信,在距离不太远(比如不超过20米)的情况下,可考虑通过计算机的并 行口或RS-232串行口 ...
- RS-232 RS-485 TTL电平标准 以及串口、COM口、UART口、USB转TTL、USB转串口
串口 即串行通信接口,与之相对应的另一种接口叫并口,并行接口.两者的区别是,传输一个字节(8个位)的数据时,串口是将8个位排好队,逐个地在1条连接线上传输,而并口则将8个位一字排开,分别在8条连接线 ...
- 计算机网络:access口,trunk口与泛洪
在学习计算机网络有关vlan方面的知识时首先接触到了access口,trunk口以及泛洪的概念,这篇博客主要介绍一下我自己的简单理解. 客户端与交换机接口主要学习了两类,一类是access口,一类是t ...
- 在C#中使用SerialPort类实现串口通信 遇到多线程问题
在C#中使用SerialPort类实现串口通信 遇到多线程问题 在C#中使用SerialPort类实现串口通信. 2009年11月01日 星期日 10:03 在.NET work 2.0中提供了Ser ...
- thinkserver rd650管理口地址_路由器WAN口和LAN口有什么区别【区别介绍】
现在一般家庭上网采用ADSL电话线上网的较多,而且家里一般都有好几台电脑,那么如何使几台电脑同时上网呢?这就要用到宽带路由器了,一般情况下宽带路由器上面有好几个网线插口,这些网线插口上有的标有WAN, ...
- 路由器上面的WAN口和LAN口是什么意思
现在一般家庭上网采用ADSL电话线上网的较多,而且家里一般都有好几台电脑,那么如何使几台电脑同时上网呢?这就要用到宽带路由器了,一般情况下宽带路由器上面有好几个网线插口,这些网线插口上有的标有WAN, ...
- OpenWRT 网络配置WAN口和LAN口
转载于:https://blog.csdn.net/u012041204/article/details/53674946 一.基本概念 LAN:Local Area Network 的英文简称,即局 ...
- 路由器lan口和wan口详解
这里讲下一下wan口和lan口的区别,以及他们之间的工作原理. 1.基础知识: WAN是英文Wide Area Network的首字母所写,即代表广域网: LAN则是Local Area Networ ...
最新文章
- PyQt5 技术篇-QTableWidget表格组件的行选择与列选择实例演示,表格组件的双击事件捕获,获取表格选中单元格的值
- OneAPM大讲堂 | 提高JavaScript性能的30个技巧
- python 下的数据结构与算法---6:6大排序算法
- Problem F: 结构体--学生信息排序
- JAVA程序员面试总结,高手整整理加强版
- 装系统可能会出现的问题--无法装在该磁盘,因为格式的原因
- C#线程系列讲座(5):同步技术之Monitor
- Redis 安装配置(一)
- freebsd下fcgi程序例子
- Linux下修改键盘映射
- 开根号的笔算算法图解_用笔算开根号
- android 动态表情包,动态表情包下载免费
- 原创【歌词类】绘流年
- 说一说程序员如何保持平常心
- 计算机制作通知的具体步骤,关于举办2018年镇江市中小学电脑制作活动的通知...
- 10.原码、反码、补码
- 用智能ABC关闭程序
- [HCTF 2018] WarmUp
- Java Web实战开发 | Web项目的创建与运行
- 抽奖随机滚动_仅需2分钟,使用excel制作一个抽奖小工具,再也不用为抽奖发愁了...