private void buttonPrienterStat_Click(object sender, EventArgs e) { string reStr = ""; PrinterReStat stat = new PrinterReStat(); bool re = printer.PrinterStat(ref stat, ref reStr); AddLog(reStr); }
public bool PrinterStat(ref PrinterReStat stat, ref string reStr) { if (!isConnected) { reStr = "贴标机未连接"; return(false); } try { string sndStr = "stat\n"; byte[] sndBuf = System.Text.Encoding.GetEncoding(936).GetBytes(sndStr); if (!SendBuf(sndBuf, ref reStr)) { reStr = "发送:" + sndStr + "接收:" + reStr; return(false); } //返回信息,应答超时,001 错误信息,000 OK stat = new PrinterReStat(); bool re = false; if (reStr.Length > 3) { if (reStr.Substring(0, 3) == "000") { re = true; } } else { re = false; } reStr = "发送:" + sndStr + " 接收:" + reStr; return(re); } catch (Exception ex) { reStr = ex.ToString(); return(false); } }
/// <summary> /// 作者:np /// 时间:2014年6月2日 /// 内容:TCP读数据的回调函数 /// </summary> /// <param name="ar"></param> private void TCPReadCallBack(IAsyncResult ar) { try { StateObject state = (StateObject)ar.AsyncState; if ((state.client == null) || (!state.client.Connected)) //主动断开时 { this.isConnected = false; return; } int numberOfBytesRead; NetworkStream netStream = state.client.GetStream(); numberOfBytesRead = netStream.EndRead(ar); state.totalBytesRead += numberOfBytesRead; if (numberOfBytesRead > 0) { byte[] recBytes = new byte[numberOfBytesRead]; Array.Copy(state.buffer, 0, recBytes, 0, numberOfBytesRead); for (int i = 0; i < numberOfBytesRead; i++) { // if(recBytes[i] == 0x0D) if (recBytes[i] == 0x0A) { recvStr = System.Text.Encoding.GetEncoding(936).GetString(saveBuf.ToArray()).Trim(); // recvStr = System.Text.Encoding.UTF8.GetString(saveBuf.ToArray()).Trim(); string[] strArry = recvStr.Split(new string[] { ",", " ", ":", "-", "|" }, StringSplitOptions.RemoveEmptyEntries); if (strArry.Count() > 1) { reStat = new PrinterReStat(); reStat.errCode = strArry[0]; reStat.errInfo = strArry[1]; } break; } else { this.saveBuf.Add(recBytes[i]); } } netStream.BeginRead(state.buffer, 0, StateObject.BufferSize, new AsyncCallback(TCPReadCallBack), state); } else { //被动断开时 netStream.Close(); state.client.Close(); netStream = null; state = null; this.isConnected = false; } } catch (System.Exception ex) { isConnected = false; } }