VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: hyukio35

c#中消息的问题,如何接收来自多个消息源对消息进行确定?

[复制链接]

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-20 17:36:01 | 显示全部楼层
我以前也遇到和你一样的问题,考虑一下用类的办法来解决吧,实例化一个类,一个类就是一个串口
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-21 14:54:02 | 显示全部楼层
我用的类大家看下
class threadCom
    {
        private string _com;
        private IntPtr _handle;

        public threadCom()
        {

        }

        public threadCom(string com,IntPtr handle)
        {
            this._com = com;
            this._handle = handle;        
        }

        private void openCom()
        {
             operateCom.OpenComm(_com, _handle);
        }

        public void startThread()
        {
            ThreadStart thr_star_fun = new ThreadStart(openCom);
            Thread fthread = new Thread(thr_star_fun);
            fthread.Start();
        }

    }
在主函数中调用
  foreach (string s in avaliableEquipment) 其中s是com1和com2
            {
              threadCom tCom=new threadCom(s,this.Handle);
                tCom.startThread();
            }
但是我还是不能接收到第一个com口的消息,只能收到com2的不知道怎么回事?
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-21 23:18:01 | 显示全部楼层
请大家帮帮忙吧
回复

使用道具 举报

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-22 00:54:01 | 显示全部楼层
你单步执行一下就知道了,com1执行完了com2执行,最后只有com2存在,com2把com1覆盖了
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-22 08:00:01 | 显示全部楼层
那我应该怎么办了?
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-22 10:09:01 | 显示全部楼层
我把程序改成如下还是不行
  threadCom[] tcom = new threadCom[avaliableEquipment.Length];
            int i = 0;

            foreach (string s in avaliableEquipment)
            {
                tcom[i] = new threadCom(s, this.Handle);
              //threadCom tCom=new threadCom(s,this.Handle);
                tcom[i].startThread();
            }
回复

使用道具 举报

0

主题

15

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-1-22 10:27:01 | 显示全部楼层
将对串口的操作比如打开,关闭,发送,接受数据都放在一个类中,每次实例化一个类就相当于产生了一个串口,这样你可以有多个串口同时收发.
C#是面向对象的,用面向对象的思想考虑问题,窗体也是一个类,你可以实例化多个窗体,多个窗体之间的操作并不互相影响对吧,那么你就可以实例化多个串口,彼此之间也不会干扰.
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-22 11:00:01 | 显示全部楼层
能更详细的告诉我下吗?我对此还是不太明白啊
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-22 14:18:01 | 显示全部楼层
我是个刚入门的人,因此希望大家能给比较详细的指点,这里先谢谢了!
回复

使用道具 举报

1

主题

15

帖子

11.00

积分

新手上路

Rank: 1

积分
11.00
 楼主| 发表于 2020-1-25 07:36:02 | 显示全部楼层
请高手们快来吧,兄弟实在是现在没折了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表