请问这代码控制串口打印机怎么不立即打印啊。。。。
using System;
using System.IO.Ports;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using V9_OUT.Util;
namespace V9_OUT.Devices
{
public sealed class COMBTP : IDevice
{
private static readonly COMBTP instance = new COMBTP();
private SerialPort serialPort;
private string iniFileName;
private string PortName;
private int BaudRate;
private int DataBits;
private StopBits StopBits;
private Parity Parity;
private string Flag;
private string btpCode;
private string STX;
private string ETX;
private string BTPPECFLAG;
private string BTP_PECTABS;
public static COMBTP GetInstance
{
get { return instance; }
}
/// <summary>
/// 构造函数
/// </summary>
private COMBTP()
{
Init();
}
private void Init()
{
try
{
iniFileName = "config\\BTP.ini";
PortName = IniHelper.GetValue("SETTING", "PortName", iniFileName);
BaudRate = Convert.ToInt32(IniHelper.GetValue("SETTING", "BaudRate", iniFileName));
DataBits = Convert.ToInt32(IniHelper.GetValue("SETTING", "DataBits", iniFileName));
StopBits = (StopBits)Convert.ToInt32( IniHelper.GetValue("SETTING", "StopBits", iniFileName));
Parity = (Parity)Convert.ToInt32( IniHelper.GetValue("SETTING", "Parity", iniFileName));
Flag = IniHelper.GetValue("SETTING", "FLAG", iniFileName);
btpCode = IniHelper.GetValue("SETTING", "CODE", iniFileName);
STX = IniHelper.GetValue("SETTING", "STX", iniFileName);
ETX = IniHelper.GetValue("SETTING", "ETX", iniFileName);
serialPort = new SerialPort(PortName, BaudRate, Parity, DataBits, StopBits);
serialPort.WriteTimeout = 500;
serialPort.ReadTimeout = 500;
serialPort.Open();
BTPPECFLAG = IniHelper.GetValue("PECTABS", "FLAG", "N", iniFileName);
StringBuilder sb = new StringBuilder();
if (BTPPECFLAG.Equals("Y"))
{
int BTP_PECTABS_MIN = Convert.ToInt32(IniHelper.GetValue("PECTABS", "min", "0", iniFileName));
int BTP_PECTABS_MAX = Convert.ToInt32(IniHelper.GetValue("PECTABS", "max", "0", iniFileName));
for (int i = BTP_PECTABS_MIN; i <= BTP_PECTABS_MAX; i++)
{
String BTP_PECTABS_TEMP = IniHelper.GetValue("PECTABS", Convert.ToString(i), "", iniFileName);
sb.Append(BTP_PECTABS_TEMP);
}
BTP_PECTABS = sb.ToString();
DoWork(BTP_PECTABS);
}
}
catch (Exception ex)
{
LogHelper.WriteLog(typeof(ATB423), ex);
}
}
/// <summary>
/// 串口接收数据响应函数
/// </summary>
private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
}
catch (Exception ex)
{
LogHelper.WriteLog(typeof(ATB423), ex);
}
}
public string DoWork(string command)
{
serialPort.DiscardInBuffer();
serialPort.DiscardOutBuffer();
string newSTX = STX;
string newETX = ETX;
try
{
if (STX.Length > 0)
{
newSTX = Encoding.ASCII.GetString(new byte[] { Convert.ToByte(STX) });
}
if (ETX.Length > 0)
{
newETX = Encoding.ASCII.GetString(new byte[] { Convert.ToByte(ETX) });
}
string temp = newSTX + command + newETX;
if (!serialPort.IsOpen)
{
serialPort.Open();
}
//serialPort.WriteLine(temp);
//serialPort.Open();
byte[] x = Encoding.GetEncoding("GBK").GetBytes(temp);
serialPort.BaseStream.Write(x, 0, x.Length);
//serialPort.Write(x, 0, x.Length);
serialPort.BaseStream.Flush();
//serialPort.Close();
//serialPort.Dispose();
//serialPort.DiscardInBuffer();
//serialPort.DiscardOutBuffer();
return "true";
}
catch (Exception ex)
{
LogHelper.WriteLog(typeof(COMBTP), ex.StackTrace);
return "false";
}
}
/// <summary>
/// 打开串口
/// </summary>
public bool Start()
{
LogHelper.WriteLog(typeof(COMBTP), "COMBTP没有Start方法");
return true;
}
/// <summary>
/// 关闭串口
/// </summary>
/// <returns></returns>
public bool Close()
{
try
{
if (this.serialPort.IsOpen)
{
this.serialPort.Close();
}
return true;
}
catch (Exception ex)
{
LogHelper.WriteLog(typeof(COMBTP), ex);
return false;
}
}
}
}
运行程序后没有立即打印,我重启电脑就把所有的打印了
...全文
相关推荐
串口控制打印机热敏打印机
通过串口发出命令去控制打印机,对热敏打印机,还有网络打印机
南天PR9打印机串口控制程序的深入解析与实践
南天PR9打印机是一款在金融、电信、邮政和政府等行业广泛应用的高端行式打印机。其特有的高效打印能力、稳定性和可靠性使其在对打印需求较大的行业中具有重要地位。它支持多种打印模式,包含连续纸和单页纸打印,且能适应各种复杂环境,满足不同用户需求。波特率是串口通信中一个非常重要的参数,它定义了每秒传输的符号数,通常用波特(Baud)表示。它是信号的频率,即单位时间内状态改变的次数。在串口通信中,波特率决定了数据传输速率。在选择波特率时,需要考虑通信距离、线路的抗干扰能力和设备的处理速度。
C# 与打印机交互:ESC/POS 指令控制热敏打印机(票据打印与状态监控)
本文介绍了如何使用C#结合ESC/POS指令控制热敏打印机。主要内容包括:1) ESC/POS指令基础,涵盖文本打印、换行、切纸等常用指令;2) C#实现打印机控制,通过SerialPort类建立连接并发送指令打印文本和切纸;3) 打印机状态监控,通过特定指令查询设备状态。文章提供了完整的代码示例,帮助开发者快速实现票据打印和状态监控功能。该方案适用于超市、餐饮等商业场景的热敏打印机控制需求。
C# 监听电子秤,控制条码打印机,串口编程源码
最近做的一个C#获取电子秤重量的程序,同时控制条码打印机打出标签的程序,VS2005开发的,拿出来和大家分享分享,里面有如何监听串口的类
PLC通过串口连接Zebra打印机打印.docx
PLC通过串口连接Zebra打印机打印.docx


