=波波日志 > 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】
暂时没有评论!
发表留言
百度赞助
同类热门博文
- ·IE里Cookie跨域不能..
- ·去掉隐藏asp.net编译..
- ·解决asp.net验证视图..
- ·找不到System.Web.S..
- ·web服务因URL意外地..
- ·C#2.0中,SerialPor..
- ·用C#编写ActiveX控件..
- ·用C#编写ActiveX控件..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(595)
- 操作系统及应用软件(376)
- JavaScript/Ajax(330)
- SQL及数据库(134)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(92)
- 其他(75)
- 个人日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- 机械重工(26)
- C#设计模式(24)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·asp.net<%--注释--%..
- ·ASP.NET环境配置常见..
- ·asp.net防止图片盗链..
- ·Session.Abandon的使..
- ·asp中缓存cache技术..
- ·C#获取richtextbox滚..
- ·C# 添加,修改,删除 ..
- ·更新、删除DataTabl..
随机博文
