=波波日志 > Asp.Net/C#/WCF > asp.net 串口操作=
[转]asp.net 串口操作
+展开
-C#
using System.IO.Ports;
namespace autfish
{
public class PortData
{
public event PortDataReceivedEventHandle Received;
public event SerialErrorReceivedEventHandler Error;
public SerialPort port;
public bool ReceiveEventFlag = false; //接收事件是否有效 false表示有效
public PortData(string sPortName, int baudrate, Parity parity)
{
port = new SerialPort(sPortName, baudrate, parity, 8, StopBits.One);
port.RtsEnable = true;
port.ReadTimeout = 3000;
port.DataReceived += new SerialDataReceivedEventHandler(DataReceived);
port.ErrorReceived += new SerialErrorReceivedEventHandler(ErrorEvent);
}
~PortData()
{
Close();
}
public void Open()
{
if (!port.IsOpen)
{
port.Open();
}
}
public void Close()
{
if (port.IsOpen)
{
port.Close();
}
}
//数据发送
public void SendData(byte[] data)
{
if (port.IsOpen)
{
port.Write(data, 0, data.Length);
}
}
public void SendData(byte[] data, int offset, int count)
{
if (port.IsOpen)
{
port.Write(data, offset, count);
}
}
//发送命令
public int SendCommand(byte[] SendData, ref byte[] ReceiveData, int Overtime)
{
if (port.IsOpen)
{
ReceiveEventFlag = true; //关闭接收事件
port.DiscardInBuffer(); //清空接收缓冲区
port.Write(SendData, 0, SendData.Length);
int num = 0, ret = 0;
while (num++ < Overtime)
{
if (port.BytesToRead >= ReceiveData.Length) break;
System.Threading.Thread.Sleep(1);
}
if (port.BytesToRead >= ReceiveData.Length)
ret = port.Read(ReceiveData, 0, ReceiveData.Length);
ReceiveEventFlag = false; //打开事件
return ret;
}
return -1;
}
public void ErrorEvent(object sender, SerialErrorReceivedEventArgs e)
{
if (Error != null) Error(sender, e);
}
//数据接收
public void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//禁止接收事件时直接退出
if (ReceiveEventFlag) return;
byte[] data = new byte[port.BytesToRead];
port.Read(data, 0, data.Length);
if (Received != null) Received(sender, new PortDataReciveEventArgs(data));
}
public bool IsOpen()
{
return port.IsOpen;
}
}
public delegate void PortDataReceivedEventHandle(object sender, PortDataReciveEventArgs e);
public class PortDataReciveEventArgs : EventArgs
{
public PortDataReciveEventArgs()
{
this.data = null;
}
public PortDataReciveEventArgs(byte[] data)
{
this.data = data;
}
private byte[] data;
public byte[] Data
{
get { return data; }
set { data = value; }
}
}
}
(POS机的顾客显示屏)
using System.IO.Ports;
namespace autfish
{
public class Led8N
{
public static void ShowBalance(double balance)
{
PortData pt = new PortData("COM2", 2400, Parity.Even);
byte[] rec = Encoding.UTF8.GetBytes("200.00");
byte[] buf = new byte[4 + rec.Length];
buf[0] = 0x1B;
buf[1] = 0x51;
buf[2] = 0x41;
for (int i = 0; i < rec.Length; i++)
{
buf[i + 3] = rec[i];
}
buf[buf.Length - 1] = 0x0D;
//发送ESC Q A 数字 CR
byte[] chs = new byte[3];
chs[0] = 0x1B;
chs[1] = 0x73;
chs[2] = 0x30;
//发送C L R
try
{
pt.Open();
pt.SendData(chs);
pt.SendData(buf);
}
catch
{
}
finally
{
pt.Close();
}
}
}
}
namespace autfish
{
public class PortData
{
public event PortDataReceivedEventHandle Received;
public event SerialErrorReceivedEventHandler Error;
public SerialPort port;
public bool ReceiveEventFlag = false; //接收事件是否有效 false表示有效
public PortData(string sPortName, int baudrate, Parity parity)
{
port = new SerialPort(sPortName, baudrate, parity, 8, StopBits.One);
port.RtsEnable = true;
port.ReadTimeout = 3000;
port.DataReceived += new SerialDataReceivedEventHandler(DataReceived);
port.ErrorReceived += new SerialErrorReceivedEventHandler(ErrorEvent);
}
~PortData()
{
Close();
}
public void Open()
{
if (!port.IsOpen)
{
port.Open();
}
}
public void Close()
{
if (port.IsOpen)
{
port.Close();
}
}
//数据发送
public void SendData(byte[] data)
{
if (port.IsOpen)
{
port.Write(data, 0, data.Length);
}
}
public void SendData(byte[] data, int offset, int count)
{
if (port.IsOpen)
{
port.Write(data, offset, count);
}
}
//发送命令
public int SendCommand(byte[] SendData, ref byte[] ReceiveData, int Overtime)
{
if (port.IsOpen)
{
ReceiveEventFlag = true; //关闭接收事件
port.DiscardInBuffer(); //清空接收缓冲区
port.Write(SendData, 0, SendData.Length);
int num = 0, ret = 0;
while (num++ < Overtime)
{
if (port.BytesToRead >= ReceiveData.Length) break;
System.Threading.Thread.Sleep(1);
}
if (port.BytesToRead >= ReceiveData.Length)
ret = port.Read(ReceiveData, 0, ReceiveData.Length);
ReceiveEventFlag = false; //打开事件
return ret;
}
return -1;
}
public void ErrorEvent(object sender, SerialErrorReceivedEventArgs e)
{
if (Error != null) Error(sender, e);
}
//数据接收
public void DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//禁止接收事件时直接退出
if (ReceiveEventFlag) return;
byte[] data = new byte[port.BytesToRead];
port.Read(data, 0, data.Length);
if (Received != null) Received(sender, new PortDataReciveEventArgs(data));
}
public bool IsOpen()
{
return port.IsOpen;
}
}
public delegate void PortDataReceivedEventHandle(object sender, PortDataReciveEventArgs e);
public class PortDataReciveEventArgs : EventArgs
{
public PortDataReciveEventArgs()
{
this.data = null;
}
public PortDataReciveEventArgs(byte[] data)
{
this.data = data;
}
private byte[] data;
public byte[] Data
{
get { return data; }
set { data = value; }
}
}
}
(POS机的顾客显示屏)
using System.IO.Ports;
namespace autfish
{
public class Led8N
{
public static void ShowBalance(double balance)
{
PortData pt = new PortData("COM2", 2400, Parity.Even);
byte[] rec = Encoding.UTF8.GetBytes("200.00");
byte[] buf = new byte[4 + rec.Length];
buf[0] = 0x1B;
buf[1] = 0x51;
buf[2] = 0x41;
for (int i = 0; i < rec.Length; i++)
{
buf[i + 3] = rec[i];
}
buf[buf.Length - 1] = 0x0D;
//发送ESC Q A 数字 CR
byte[] chs = new byte[3];
chs[0] = 0x1B;
chs[1] = 0x73;
chs[2] = 0x30;
//发送C L R
try
{
pt.Open();
pt.SendData(chs);
pt.SendData(buf);
}
catch
{
}
finally
{
pt.Close();
}
}
}
}
来源:http://topic.csdn.net/u/20090808/09/8580aac7-d3c1-4777-a77f-f6b374c4d259.html?74361
类别:Asp.Net/C#/WCF 作者:转载 日期:2009-08-08 【评论:0 阅读:】
暂时没有评论!
发表留言
同类热门博文
- ·ashx是什么文件,如何..
- ·如何将QQWry.Dat导出..
- ·根据访问用户IP地址..
- ·用c#如何实现将生成..
- ·C#通讯编程--UDP通讯..
- ·读取邮箱通讯录、MS..
- ·C# 注释如何换行??
- ·如何实现网站访问来..
博格Tag
- flash/flex/fcs/AIR(750)
- Asp.Net/C#/WCF(486)
- JavaScript/Ajax(245)
- 操作系统及应用软件(232)
- SQL及数据库(105)
- 黑客技术(96)
- Asp/VBScript(85)
- 网站排名及优化(84)
- PHP/apache/Perl(75)
- HTML/WML/CSS兼容(66)
- 其他(61)
- 个人日志(44)
- lucence.net/分词技术(33)
- C#设计模式(22)
- 计算机网络(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(10)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!
Powered by showbo,G51人力资讯网,桂ICP备05005887号
Powered by showbo,G51人力资讯网,桂ICP备05005887号
