vs2005串口控件问题

emp 2008-07-22 01:51:53
vs2005串口控件如何判断下面这个写函数把数据发送完毕,并且在主界面显示数据发送完毕
private byte[] bytes ;
serialPort.Write(bytes, 0, bytes.Length);
串口控件本身能判断自己发送完毕吗
...全文
101 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
leixueqiyi 2008-07-22
  • 打赏
  • 举报
回复
自己判断发送缓冲
51Crack 2008-07-22
  • 打赏
  • 举报
回复
下句 显示发送完毕 就行了!
gaoqi9902 2008-07-22
  • 打赏
  • 举报
回复
最简单的方法:
private byte[] bytes ;
serialPort.Write(bytes, 0, bytes.Length);
MessageBox.Show("消息发送完成");
SerialPort.Write()方法执行完成后会自动执行MessageBox.Show()方法的。

另外一种方法是使用多线程技术:

在winForm的界面上放置一个串口控件,一个按钮控件和一个标签控件,后台代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace SerialPortDemo
{
public delegate void UpdateInfoDelegate(string info);

public partial class Form1 : Form
{


public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(SendData));
th.Start();
}


private void SendData()
{
UpdateInfoDelegate ud = new UpdateInfoDelegate(UpdateInfo);

this.BeginInvoke(ud,"正在发送"); // 异步调用

byte[] SendDatas = new byte[8];
serialPort1.Open();
serialPort1.Write(SendDatas, 0, SendDatas.Length);
Thread.Sleep(2000); // 主线程终端2秒
serialPort1.Close();


this.BeginInvoke(ud, "发送完成"); // 异步调用
}

private void UpdateInfo( string info)
{
label1.Text = info;
}
} // end class

} // end namespace

110,534

社区成员

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

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

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