通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索
查看: 1601|回复: 1
打印

远程通信学习 [复制链接]

军衔等级:

  新兵

注册:2020-1-10
跳转到指定楼层
1#
发表于 2020-5-13 14:40:47 |只看该作者 |倒序浏览
1.添加using Sysytem.IO.Ports或者直接往界面里面放入一个serialport控件
2.public  SerialPort serialPort1=new SerialPort ();实例化对象(如果是放控件的方式就不用了)
  private string b;//用来显示接收到的数据
3.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);//定义串口接收事件*/
4.private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
          if (serialPort1.BytesToRead == 0)
            {
                return;
            }
            char[] buffer = new char[serialPort1.BytesToRead];
            serialPort1.Read(buffer, 0, serialPort1.BytesToRead);
            b = new string(buffer); //借用楼上
          this.Invoke(SerialDelegate);//委托机制显示接收到的数据
        }
5.打开串口try
            {
                if (serialPort1.IsOpen == false)
                {
                    serialPort1.Open();
                }
                else
                {
                    serialPort1.Close();
                    serialPort1.Open();
                }
            }
            catch (Exception e)
            {
                //MessageBox.Show("错误:" + e.Message);
                //if (e.Message == "对端口”COM1“的访问被拒绝。")
                    MessageBox .Show ("当前设置的串口不存在或者已经被占用,请重新设置串口并尝试连接");
            }
            if (serialPort1.IsOpen == true)
            {
              serialPort1.DiscardOutBuffer();
            }

6.由于线程安全问题,如果要将接收到的数据显示出来需要使用委托的机制,故:
private delegate void MydelegateShow();//声明一个委托
        private MydelegateShow SerialDelegate;//实例化一个委托对象
同时在窗口构造函数中添加SerialDelegate = new MydelegateShow(UpdateBox);
7.编写UpdateBox代码:
private void UpdateBox()
{
  textBox1.Text+=b;
}
8.发送是主动的,可以按照需求发送就可以
2)Microsoft .Net Remoting系列专题之三:Remoting事件处理全接触
应用Remoting技术的分布式处理程序,通常包括三部分:远程对象、服务端、客户端。因此从事件的方向上看,就应该有三种形式:
1、服务端订阅客户端事件
2、客户端订阅服务端事件
3、客户端订阅客户端事件
服务端订阅客户端事件,即由客户端发送消息,服务端捕捉该消息,然后响应该事件,相当于下级向上级发传真。反过来,客户端订阅服务端事件,则是由服务端发送消息,此时,所有客户端均捕获该消息,激发事件,相当于是一个系统广播。而客户端订阅客户端事件呢?就类似于聊天了。由某个客户端发出消息,其他客户端捕获该消息,激发事件。可惜的是,我并没有找到私聊的解决办法。当客户端发出消息后,只要订阅了该事件的,都会获得该信息。

举报本楼

本帖有 1 个回帖,您需要登录后才能浏览 登录 | 注册
您需要登录后才可以回帖 登录 | 注册 |

手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2024-11-24 21:57 , Processed in 0.209672 second(s), 15 queries , Gzip On.

Copyright © 1999-2023 C114 All Rights Reserved

Discuz Licensed

回顶部