在串行端口数据接收事件期间发送数据

时间:2016-06-28 02:02:31

标签: c# serial-port

我使用COM4串行端口来发送和接收数据。我有一个请求请求 - 我验证请求是mydatastring = myrequeststring - 这工作正常。我试图在此事件处理程序期间通过COM端口回复数据,但当然Access被拒绝。如何在收到我的请求后完成数据发送.. ??

index = 0:

index = 1:

index = 2:
datatitle_1
datatitle_2
datatitle_3

修改

scScale的相关部分 - 它是一个SerialPort客户端类 - 基本上封装了SerialPort细节。

相关代码:

    void scScale_OnReceiving(object sender, DataStreamEventArgs e)
    {
        if( e.Response == myrequeststring )
        {
            scScale.Transmit(this.data);
        }             
    }

SCSCALE是链接中的代码.. https://roofman.wordpress.com/2012/09/13/fast-serial-communication-for-c-real-time-applications/

1 个答案:

答案 0 :(得分:0)

我不知道为什么会这样,但确实如此;当串行端口被实例化时 - 我创建了事件处理程序并且确实触发了事件,但是在处理该事件期间我无法通过端口发送回复。 但是,如果我在端口打开后订阅该事件,则该事件将触发,我将有权访问该端口以发送回复。

虽然我没有发布我的完整代码 - 我确认在发送之前端口是打开的,如果没有,我打开端口。 现在,而不是立即订阅接收事件 - 我打开端口,然后订阅OnReceive事件。

我在Port打开后将代码更改为订阅的原因是因为我在SO和其他一些网站上阅读有关在端口打开之前订阅导致的奇怪行为的信息。

因此,简而言之,在端口打开后订阅接收事件。