使用SerialPort的DataReceived事件问题

WY刘文 2014-05-31 04:07:05
定义一个类封装SERIALPORT的操作(名称: RWMsgOperate,实例化为rwo):
public delegate void DataReceivedEventHandler(DataReceivedEventArgs e);
public event DataReceivedEventHandler DataReceived;

/// <summary>串口初始化
///
/// </summary>
/// <param name="portname">串口名称</param>
/// <param name="rate">波特率</param>
public RWMsgOperate(string portname, int rate)
{

sPort.PortName = portname;
sPort.BaudRate = rate;
//sPort.Parity = parity;
sPort.DtrEnable = true;
sPort.NewLine = "\r\n";
sPort.ReadTimeout = readTimeOut;
sPort.DataReceived += new SerialDataReceivedEventHandler(sPort_DataReceived);
sPort.ErrorReceived += new SerialErrorReceivedEventHandler(sPort_ErrorReceived);
}

private void sPort_DataReceived(object sender, SerialDataReceivedEventArgs e)//处理监听事件
{
Thread.Sleep(5000);

while (sPort.BytesToRead > 0)
{
int bufferSize = sPort.ReadBufferSize;
byte[] readBuffer = new byte[bufferSize + 1];
int count = sPort.Read(readBuffer, 0, bufferSize);
for (int i = 0; i < count; i++)
{
byteData.Add(readBuffer[i]);

}

}

receiveString += System.Text.Encoding.Default.GetString(byteData.ToArray(), 0, byteData.Count);


//temp = receiveString;
//Thread.Sleep(1000);
if (DataReceived != null)
{
DataReceived(new DataReceivedEventArgs(receiveString));
}


public void Write(string atOrder) //发送at指令并读取返回数据并将解码后数据返回
{

if (!sPort.IsOpen)
{
sPort.Open();
comState = true;

}
//sPort.DataReceived += new SerialDataReceivedEventHandler(sPort_DataReceived);
sPort.Write(atOrder);

}

----------------------------------
在winform中调用类
private void startListing_Click(object sender, EventArgs e)
{


rwo.Write("AT+CMGL=4\r\n");//rwo为
if (this.richTextBox_com4.Text.ToString() == "")
{
this.richTextBox_com4.Text = ">>开始监听COM4……\r";

}

int CNcount = rwo.PduToCn.Count;

MessageBox.Show(CNcount.ToString()+"\r"+"内容:"+rwo.receiveString )

for (int i = 0; i < CNcount; i++)
{
this.richTextBox_com4.AppendText(rwo.PduToCn[i]);
}
}
问题是:receiveString 为空。

这里没办法发附件,哪位大神帮解决下。我可以发工程文件过去。
...全文
170 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,538

社区成员

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

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

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