首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

串口打印发送授命没反应

2012-10-17 
串口打印发送指令没反应打开Demo窗体时先初始化SerialPort对象C# codeprivate SerialPort _ComPort new

串口打印发送指令没反应
打开Demo窗体时先初始化SerialPort对象

C# code
private SerialPort _ComPort = new SerialPort();private void InitializeObject(){     InitPortsToList();      //初始化SerialPort对象      this._ComPort.NewLine = "\r\n";      this._ComPort.RtsEnable = true;      this._ComPort.DataReceived += new SerialDataReceivedEventHandler(ComPort_DataReceived);}

然后打开串口COM1
C# code
private void btnConnect_Click(object sender, EventArgs e){     //根据当前串口对象,来判断操作     if (this._ComPort.IsOpen)     {          //打开时点击,则关闭串口          this._ComPort.Close();     }     else     {          //关闭时点击,则设置好端口,波特率后打开          this._ComPort.PortName = this.cmbPort.Text;          this._ComPort.BaudRate = int.Parse(this.cmbBaudrate.Text);          try          {               this._ComPort.Open();          }          catch (Exception ex)          {               //捕获到异常信息,创建一个新的comm对象,之前的不能用了。               this._ComPort = new SerialPort();               this._ComPort.PortName = this.cmbPort.Text; //COM1               this._ComPort.BaudRate = int.Parse(this.cmbBaudrate.Text); //9600               this._ComPort.Open();               //现实异常信息给客户。               MessageBox.Show(ex.Message);           }     }}

打开COM1之后,就发送要打印的内容和打印机的指令给串口
C# code
 List<byte> buffer = new List<byte>(); byte[] tmp = { 10 }; //这里的10是厂家说明书里的命令 16进制是0x0A,10进制是10,表示打印并换行 string content = this.txtContent.Text.Trim(); //这里是打印的内容 byte[] dataContent = Encoding.Default.GetBytes(content); buffer.AddRange(dataContent); buffer.AddRange(tmp); byte[] data = buffer.ToArray(); this._ComPort.Write(data, 0, data.Length); this._ComPort.Close();


最后write之后,打印机没有反应,我没接触过串口编程,不知道到底问题在哪里,请哪位朋友有碰到过类似问题的解答一下,打印机是热敏打印机


[解决办法]
串口参数都设置对了吗
[解决办法]
使用串口调试助手,发送命令查看打印机是否能够正确收到命令工作;
使用串口调试助手,发送命令后查看命令是否正确发送
[解决办法]
看看要不要驱动,装好没有
[解决办法]
我刚做了一个16进制的打印机发送打印内容的时候要发送16进制内容 
每个16进制数据前面加上0x以字节组形式发送

热点排行