C# 串口通信 控件使用

Return0623360 2015-04-15 10:00:31
在做串口通信的过程中,导师要求,能将多个子设备分为同一个组,实现统一发送命令。原理如图所示:

有子设备A、B、C与串口进行通信,我们可以分别给A、B、C发送命令,为了能一次统一发送命令,要求把A、B、C划分为一个组,如发送字符串001122,则是给组下面的每个成员发送的001122。
请问使用什么控件可以实现以上功能,用ListView或ListBox可以实现分组吗???

多谢回答,感激不尽!!!
...全文
305 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Return0623360 2015-04-15
  • 打赏
  • 举报
回复
引用 5 楼 wyd1520 的回复:
楼主呀,你应把分楼搞到100分,我就能看到了。我一般只关注100分的贴子, 不过你很幸运。今天我尽然看25分的贴子。。。
为我的幸运点赞哈!也多谢关注与回答。。。
Return0623360 2015-04-15
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
public class Group
    {
        private List<Device> _list = new List<Device>();
        public bool SendMessage(string message)
        {
            foreach (var device in this._list)
            {
                device.SocketSend(message);
            }
            throw new NotImplementedException();
        }
        /// <summary>  
        /// 添加被通知者  
        /// </summary>  
        public void Attach(Device device)
        {
            if (!this._list.Any(d => d.Name == device.Name))
            {
                this._list.Add(device);
            }
        }
        /// <summary>  
        /// 移除被通知者  
        /// </summary>  
        public void Detch(Device device)
        {
            var dv = this._list.FirstOrDefault(d => d.Name == device.Name);
            if (dv != null)
            {
                this._list.Remove(dv);
            }
        }
    }
    public class Device
    {
        /// <summary>
        /// 设备名称
        /// </summary>
        public string Name { get; private set; }
        public Device(string name)
        {
            this.Name = name;
        }
        public bool SocketSend(string message)
        {
            //Socket部分编码
            throw new NotImplementedException();
        }
    }
给你相关的代码…… 然后用起来就是
Group gpA = new Group();
gpA.Attach(new Device("A"));
gpA.Attach(new Device("AA"));
Group gpB = new Group();
gpA.SendMessage("demo");
多谢多谢,万分感激,在程序上给了我一种思路!但我还没到写程序实现的这一步,我现在遇到的问题是如何在界面上选择控件去实现,比如说我知道A、B、C三个设备,那么首先我在某个控件上显示A、B、C三个设备的名称A、B、C,这三个名称能被选中添加到组(前提是先建好一个组名,然后添加进去),最后将显示组名在该控件上,对该组名的操作,既是对三个设备的操作。我打算用C#的listview控件来做,因为listView控件提供以下方法: 1, 增加单行显示; 2, 获取选定行内容; 4, 清除选定行; 5, 清除全部; 6, 轮询列表数据。 但不知道listview控件能否实现组的划分,或C#中有没有更好的控件来实现我所说的winform设计。 其实这种情况能在很多安卓系统的APP上都有,我现在遇到的首要问题是先选择实现的控件,在去设计程序。。。再次感谢你的回答!
本拉灯 2015-04-15
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
public class Group
    {
        private List<Device> _list = new List<Device>();
        public bool SendMessage(string message)
        {
            foreach (var device in this._list)
            {
                device.SocketSend(message);
            }
            throw new NotImplementedException();
        }
        /// <summary>  
        /// 添加被通知者  
        /// </summary>  
        public void Attach(Device device)
        {
            if (!this._list.Any(d => d.Name == device.Name))
            {
                this._list.Add(device);
            }
        }
        /// <summary>  
        /// 移除被通知者  
        /// </summary>  
        public void Detch(Device device)
        {
            var dv = this._list.FirstOrDefault(d => d.Name == device.Name);
            if (dv != null)
            {
                this._list.Remove(dv);
            }
        }
    }
    public class Device
    {
        /// <summary>
        /// 设备名称
        /// </summary>
        public string Name { get; private set; }
        public Device(string name)
        {
            this.Name = name;
        }
        public bool SocketSend(string message)
        {
            //Socket部分编码
            throw new NotImplementedException();
        }
    }
给你相关的代码…… 然后用起来就是
Group gpA = new Group();
gpA.Attach(new Device("A"));
gpA.Attach(new Device("AA"));
Group gpB = new Group();
gpA.SendMessage("demo");
嗯,你这做法是对的。 可以搞
本拉灯 2015-04-15
  • 打赏
  • 举报
回复
楼主呀,你应把分楼搞到100分,我就能看到了。我一般只关注100分的贴子, 不过你很幸运。今天我尽然看25分的贴子。。。
  • 打赏
  • 举报
回复
public class Group
    {
        private List<Device> _list = new List<Device>();
        public bool SendMessage(string message)
        {
            foreach (var device in this._list)
            {
                device.SocketSend(message);
            }
            throw new NotImplementedException();
        }
        /// <summary>  
        /// 添加被通知者  
        /// </summary>  
        public void Attach(Device device)
        {
            if (!this._list.Any(d => d.Name == device.Name))
            {
                this._list.Add(device);
            }
        }
        /// <summary>  
        /// 移除被通知者  
        /// </summary>  
        public void Detch(Device device)
        {
            var dv = this._list.FirstOrDefault(d => d.Name == device.Name);
            if (dv != null)
            {
                this._list.Remove(dv);
            }
        }
    }
    public class Device
    {
        /// <summary>
        /// 设备名称
        /// </summary>
        public string Name { get; private set; }
        public Device(string name)
        {
            this.Name = name;
        }
        public bool SocketSend(string message)
        {
            //Socket部分编码
            throw new NotImplementedException();
        }
    }
给你相关的代码…… 然后用起来就是
Group gpA = new Group();
gpA.Attach(new Device("A"));
gpA.Attach(new Device("AA"));
Group gpB = new Group();
gpA.SendMessage("demo");
  • 打赏
  • 举报
回复
按组应该不是你这个意思吧,指令发送到组,这样指令和具体设备之间就没有了关系,然后组将指令依次发到各个子设备,很典型的观察者啊
Return0623360 2015-04-15
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
winform + socket的问题让 拉灯同学来回答,我不擅长这个……
好的,希望拉登同学能看到,我忘了邀请他回答问题了。。。
  • 打赏
  • 举报
回复
winform + socket的问题让 拉灯同学来回答,我不擅长这个……
风的期待 2015-04-15
  • 打赏
  • 举报
回复
这个问题网上问的人很多,但是貌似没有啥解决办法,有没有大神啊!
本拉灯 2015-04-15
  • 打赏
  • 举报
回复
引用 7 楼 u012558127 的回复:
[quote=引用 4 楼 starfd 的回复:]
public class Group
    {
        private List<Device> _list = new List<Device>();
        public bool SendMessage(string message)
        {
            foreach (var device in this._list)
            {
                device.SocketSend(message);
            }
            throw new NotImplementedException();
        }
        /// <summary>  
        /// 添加被通知者  
        /// </summary>  
        public void Attach(Device device)
        {
            if (!this._list.Any(d => d.Name == device.Name))
            {
                this._list.Add(device);
            }
        }
        /// <summary>  
        /// 移除被通知者  
        /// </summary>  
        public void Detch(Device device)
        {
            var dv = this._list.FirstOrDefault(d => d.Name == device.Name);
            if (dv != null)
            {
                this._list.Remove(dv);
            }
        }
    }
    public class Device
    {
        /// <summary>
        /// 设备名称
        /// </summary>
        public string Name { get; private set; }
        public Device(string name)
        {
            this.Name = name;
        }
        public bool SocketSend(string message)
        {
            //Socket部分编码
            throw new NotImplementedException();
        }
    }
给你相关的代码…… 然后用起来就是
Group gpA = new Group();
gpA.Attach(new Device("A"));
gpA.Attach(new Device("AA"));
Group gpB = new Group();
gpA.SendMessage("demo");
多谢多谢,万分感激,在程序上给了我一种思路!但我还没到写程序实现的这一步,我现在遇到的问题是如何在界面上选择控件去实现,比如说我知道A、B、C三个设备,那么首先我在某个控件上显示A、B、C三个设备的名称A、B、C,这三个名称能被选中添加到组(前提是先建好一个组名,然后添加进去),最后将显示组名在该控件上,对该组名的操作,既是对三个设备的操作。我打算用C#的listview控件来做,因为listView控件提供以下方法: 1, 增加单行显示; 2, 获取选定行内容; 4, 清除选定行; 5, 清除全部; 6, 轮询列表数据。 但不知道listview控件能否实现组的划分,或C#中有没有更好的控件来实现我所说的winform设计。 其实这种情况能在很多安卓系统的APP上都有,我现在遇到的首要问题是先选择实现的控件,在去设计程序。。。再次感谢你的回答![/quote] 他有组划分的。有个Group分组,你可以到Codeproject找有很多的DEMO

110,566

社区成员

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

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

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