C# 实现Epson热敏打印机打印 Pos机用
public class EpsopnPrinter
{
//打印文字(端口号 字符)
public static string PrintString(int Port, string val)
{
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();
sp.PortName = "COM" + Port.ToString();
try
{
sp.Open();
}
catch
{
return "端口被占用";
}
List<byte> data = new List<byte>();
string[] lines = val.Split('\n');
for (int i = 0; i < lines.Length; i++)
{
byte[] content = System.Text.Encoding.Default.GetBytes(lines[i].Replace("\r", ""));
byte[] wapbt ={ 0x0a };
data.AddRange(content);
data.AddRange(wapbt);
}
byte[] cutbt={0x1d,0x56,0x42,0x11};
data.AddRange(cutbt);
byte[] databt = data.ToArray();
sp.Write(databt, 0, databt.Length);
sp.Close();
return null;
}
//测试打印机是否接在这个端口
public static bool PrintTest(int Port)
{
System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();
sp.PortName = "COM" + Port.ToString();
sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(sp_DataReceived);
try
{
sp.Open();
}
catch
{
return false;
}
Recived = false;
byte[] testbt={0x1D,0x49,0x01};
sp.Write(testbt, 0, testbt.Length);
System.Threading.Thread.Sleep(100);
sp.Close();
return Recived;
}
static bool Recived = false;
//主要是在从COM端口中接收数据时触发
static void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
Recived = true;
}
}