您的位置:首页 > 编程语言 > C#

C#利用pos命令操作网口打印机的方法

2011-01-09 15:57 525 查看
使用POS命令操作网口打印机的好处在于免驱动并且打印速度较快.

方法一使用TcpClient类

关键代码

Int32 port = 9100;
string bigFont =((char)27).ToString() + ((char)33).ToString() + ((char)213).ToString();//放大字体
TcpClient client = new TcpClient();
try
{
client.Connect("172.30.168.100", port);

Byte[] data = System.Text.Encoding.Default.GetBytes(bigFont);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);

data = System.Text.Encoding.Default.GetBytes(bigFont);
stream.Write(data, 0, data.Length);
data = System.Text.Encoding.Default.GetBytes("打印机测试/n");
stream.Write(data, 0, data.Length);
data = System.Text.Encoding.Default.GetBytes("- -/n");
stream.Write(data, 0, data.Length);
data = System.Text.Encoding.Default.GetBytes("- -/n");
stream.Write(data, 0, data.Length);
stream.Close();

}
catch (Exception ex)
{

//如果打印机没开或者异常,在此处增加处理代码,我通常是把异常数据放到一个DataTable中,加个Timer来判断打印机正常就把

//数据发给打印机并从表中移除.

//打印机缺纸或者纸匣打开时,不会出现异常,不用特殊代码判断,数据不会丢失.
}
finally
{
client.Close();
}

//-------------------------------------------------------------------------------------------------------------------------------------------

方法二使用Socket类

Socket sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sendSocket.Connect("172.30.168.100", 9100);

byte[] buffer = Encoding.Default.GetBytes(bigFont);

sendSocket.Send(buffer);
buffer = Encoding.Default.GetBytes("测试打印机/n");
sendSocket.Send(buffer);
sendSocket.Shutdown(SocketShutdown.Both);

}
catch (Exception ex)
{
throw ex;
}
finally
{
sendSocket.Close();
}

这两种方法均可实现免驱网口打印.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: