• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

c#串口多线程收发要怎么实现

yhj416606438 2022-05-12 浏览量:904
现在只能实现一个界面和一个串口线程,多个串口线程实现不了
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • Thread thread = null;
                for (int i = 0; i < PortNum; i++)//根据选择的串口号数量创建对应数量的线程
                {
                    thread = new Thread(Text_Run);
                    thread.Name = Convert.ToString(i);
                    thread.IsBackground = true;//将线程转为后台线程
                    thread.Start(comport[i]);//传入串口号

                }


    public static void Run(string serialName )
            {
                SerialPort sp1 = new SerialPort();
                sp1.PortName = serialName;//设置串口名
                sp1.BaudRate = 57600;       //波特率
                sp1.DataBits = 8;       //数据位
                sp1.StopBits = StopBits.One;//停止位
                sp1.Parity = Parity.None; //校验位
     
                sp1.DataReceived += new SerialDataReceivedEventHandler(sp1_DataReceived);//数据接收事件
                sp1.DtrEnable = true;//准备就绪     
                sp1.RtsEnable = true;
                sp1.ReadTimeout = 1000;//设置数据读取超时为1秒
                portcom.Add(sp1);//保存串口实例
                if (sp1.IsOpen == true)//如果打开状态,则先关闭一下
                {
                    sp1.Close();
                }
                sp1.Open();
            }

     private static void sp1_DataReceived(object sender SerialDataReceivedEventArgs e)
            {
                Thread.Sleep(50);
                lock (ojb)
                {
                    SerialPort sp = sender as SerialPort;//获取当前接收数据的串口
     
     
                    if (!sp.IsOpen)//安全措施
                    {
                        return;
                    }
                    int len = sp.BytesToRead;//数据的长度
                    byte[] receivedData = new byte[len];
                    sp.Read(receivedData 0 len);//读取数据
                }
            }


    • 发布于 2022-05-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:1
  • 在界面上显示多个窗口不行么,每个窗口新建一个线程
    • 发布于2022-05-13
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

c#串口多线程收发要怎么实现