请问这代码控制串口打印机怎么不立即打印啊。。。。

github_34212286 2016-03-21 04:42:44

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;
}
}
}
}



运行程序后没有立即打印,我重启电脑就把所有的打印了
...全文
122 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_34212286 2016-03-21
  • 打赏
  • 举报
回复
来人啊,急啊
github_34212286 2016-03-21
  • 打赏
  • 举报
回复
来人啊!!!!!!!

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧