weixin_44537069 2022-09-05 21:57 采纳率: 0%
浏览 88
已结题

多窗体共用一个串口接收事件应该如何编写

目前做一个上位机软件,主窗体FrmMain的pannel控件加载两个子窗体FrmCOM和FrmMotor,两个在子窗体共用一个主窗体的串口。两个子窗体通过按键切换。
主窗体(FrmMain):
public static SerialPort serialportcom = new SerialPort();
子窗体都分别创建了接收数据事件:
子窗体FrmCOM:
FrmMain.serialportcom.DataReceived += new SerialDataReceivedEventHandler(serialportcom_DataReceived1);
public void serialportcom_DataReceived1(object sender, SerialDataReceivedEventArgs e)
子窗体FrmMotor:
FrmMain.serialportcom.DataReceived += new SerialDataReceivedEventHandler(serialportcom_DataReceived2);
public void serialportcom_DataReceived2(object sender, SerialDataReceivedEventArgs e)
感觉两个接收事件产生冲突,无论哪个子窗体,都无法接收到数据,屏蔽其中一个,另一个就接收正常。
请教各位,哪里存在的问题?多窗体共用一个串口接收事件应该如何编写?
我考虑加载其中一个窗体注销另外一个事件,如下:
子窗体FrmCOM:
FrmMain.serialportcom.DataReceived += new SerialDataReceivedEventHandler(serialportcom_DataReceived1);
FrmMain.serialportcom.DataReceived -= new SerialDataReceivedEventHandler(serialportcom_DataReceived2);
public void serialportcom_DataReceived1(object sender, SerialDataReceivedEventArgs e)
子窗体FrmMotor:
FrmMain.serialportcom.DataReceived += new SerialDataReceivedEventHandler(serialportcom_DataReceived2);
FrmMain.serialportcom.DataReceived -= new SerialDataReceivedEventHandler(serialportcom_DataReceived1);
public void serialportcom_DataReceived2(object sender, SerialDataReceivedEventArgs e)
还是不行,谢谢大家,急。

  • 写回答

2条回答 默认 最新

  • churuxu 2022-09-06 09:23
    关注

    一个窗口这里处理串口数据接收事件,收到时通过其他方式传递给另一个窗口,比如SendMessage之类的方法

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月6日
  • 赞助了问题酬金10元 9月5日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。