serailport数据发送接收?

water_zym 2009-08-14 11:29:29
小弟是个新手,请高手帮忙解答下我的疑惑:

如果我使用com1口进行数据的发送,那在com1口中能取到发送的数据、还是com1口发数据com2口接收数据?

这个问题我一直没有搞明白。
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerwing 2009-08-14
  • 打赏
  • 举报
回复
哪个应该不用注释的,我也不知道你用的上。
那个是串口的。
hero7750 2009-08-14
  • 打赏
  • 举报
回复
串口有一个发送缓冲区和一个接收缓冲区,你要调试的话可以下载一个虚拟串口vspm
water_zym 2009-08-14
  • 打赏
  • 举报
回复
楼上的,我看了你的程序代码,麻烦能给点注释出来吗?
flyerwing 2009-08-14
  • 打赏
  • 举报
回复
public class SPReadEventArgs:EventArgs
{
private string msg = "";
public string Msg
{
get
{
return msg;
}
set
{
msg = value;
}
}
}
public delegate void SPReadedHandler(object sender,SPReadEventArgs e);
public class SerialPortOfMine
{
public SerialPortOfMine()
{
this.Start();
}
private System.IO.Ports.SerialPort sp = new System.IO.Ports.SerialPort();
public System.IO.Ports.SerialPort GetSp
{
get
{
return sp;
}
set
{
sp = value;
}
}
private System.Threading.Thread thd_sp = null;
public System.Threading.Thread GetThd_sp
{
get
{
return thd_sp;
}
set
{
thd_sp = value;
}
}
private bool state_sp = false;
public bool State_sp
{
get
{
return state_sp;
}
set
{
state_sp = value;
}
}
private string encoding_sp = "gb2312";
public string Encoding_sp
{
get
{
return encoding_sp;
}
set
{
encoding_sp = value;
}
}
private bool state = false;
public bool State
{
get
{
return state;
}
}
public void Start()
{
thd_sp = new System.Threading.Thread(new System.Threading.ThreadStart(this.Initialize));
thd_sp.Start();
}
private void Initialize()
{
state = true;
sp.PortName ="com1";
sp.BaudRate = 9600;
sp.DataBits = 8;
sp.StopBits = System.IO.Ports.StopBits.One;
sp.Parity = System.IO.Ports.Parity.None;
sp.ReadTimeout = 6000;
sp.Encoding = System.Text.Encoding.GetEncoding(this.encoding_sp);
try
{
sp.Open();
this.state_sp = true;
while (state)
{
if (sp.IsOpen == false)
{
state = false;
break;
}
else
{
string str = sp.ReadExisting();
System.Threading.Thread.Sleep(300);
if (str.Length > 0)
{
SPReadEventArgs ea = new SPReadEventArgs();
ea.Msg = str ;
SPReceivedData = new SPReadedHandler(this, ea);
}
else
{
SPReadEventArgs ea = new SPReadEventArgs();
ea.Msg = "没有数据也要促发此事件!";
this.SPReceivedData(this, ea);
//SPReceivedData = new SPReadedHandler(this, ea);
}
}
}
}
catch (System.Exception ept)
{
throw new System.Exception("开启串口出现异常:"+ept.Message);
}
finally
{
sp.Close();
this.state_sp = false;
thd_sp.Abort();
}
}
private void Stop()
{
sp.Close();
state_sp = false;
thd_sp.Abort();
}
public event SPReadedHandler SPReceivedData;
}
SerialPortOfMine sp = new SerialPortOfMine();
sp.SPReceivedData += new SPReadedHandler(this.alert);
private void alert(object sender,SPReadEventArgs e)
{
MessageBox.Show(e.Msg);
}
看这个成不?我菜鸟,没地方试。不知道能不能用。
water_zym 2009-08-14
  • 打赏
  • 举报
回复
楼上发的什么东西?

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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