使用SerialPort的DataReceived事件问题

WY刘文 WY刘文 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
定义一个类封装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 为空。

这里没办法发附件,哪位大神帮解决下。我可以发工程文件过去。
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
WY刘文
C# 111,128 成员 642,537 内容