111,098
社区成员




private SerialPort com = new SerialPort();
private void Form1_Load(object sender, EventArgs e)
{
com.PortName = "COM8";
com.BaudRate = 115200;
com.DataBits = 8;
com.StopBits = StopBits.One;
com.Parity = Parity.None;
com.ReadTimeout = 3000;
com.WriteTimeout = 3000;
OpenCOM();
}
//按钮事件 关闭串口
private void button7_Click(object sender, EventArgs e)
{
CloseCOM();
}
//按钮事件 打印机打印个字符串 这个指令打印机正常打印
private void button8_Click(object sender, EventArgs e)
{
cmd_PrintStrAndReturn("abc123");
}
//按钮事件 发送查询指令 打印机无返回,且执行过再执行打印也无效,但指令在打印机缓冲中,使用串口助手连接后按序执行
private void button9_Click(object sender, EventArgs e)
{
cmd_GetCJ();
}
// 打开端口
public bool OpenCOM()
{
bool retValue = true;
try
{
if (!com.IsOpen)
{
com.DataReceived += new SerialDataReceivedEventHandler(com_DataReceived);
com.Open();
}
}
catch { retValue = false; }
return retValue;
}
// 接收事件 (具体处理代码包括防死锁及数据处理全删除,只做断点调试)
void com_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] _data = new byte[com.BytesToRead];
com.Read(_data, 0, _data.Length);
}
// 关闭端口
public bool CloseCOM()
{
bool retValue = true;
try
{
if (com.IsOpen) com.Close();
}
catch { retValue = false; }
return retValue;
}
// 发送串口数据
public bool SendData(byte[] bData)
{
bool retValue = true;
try
{
com.Write(bData, 0, bData.Length);
}
catch { retValue = false; }
return retValue;
}
// 获取打印机厂家(此指令打印机串口应该会返回个字符串“_EPSON”)
public bool cmd_GetCJ()
{
byte[] bMsgTrue = new byte[4];
bMsgTrue[0] = 0x1D;
bMsgTrue[1] = 0x49;
bMsgTrue[2] = 0x42;
return SendData(bMsgTrue);
}
// 打印字符串并换行
public bool cmd_PrintStrAndReturn(string _str)
{
try
{
cmd_PrintChinese(_str);
cmd_PrintAndReturn();
return true;
}
catch { return false; }
}
// 打印字符串
public bool cmd_PrintChinese(string _str)
{
try
{
byte[] bytes = Encoding.Default.GetBytes(_str);
SendData(bytes);
return true;
}
catch { return false; }
}
// 打印并换行LF
public bool cmd_PrintAndReturn()
{
byte[] bMsgTrue = new byte[1];
bMsgTrue[0] = 0x0A;
return SendData(bMsgTrue);
}