请教C#编程中通信处理实时问题
在C#编程中,需要100毫秒访问一次PLC进行数据交换,然后还需要对数据作出响应的反应,反应的动作时间都很长,需要堵塞几秒左右,请问如何编程为好?C#刚刚开始用,请轻喷,谢谢 你可以尝试开两个线程,一个处理100毫秒的定时,一个处理数据 如果通讯的实时性能要求过高,可以模仿一下西门子的MPI编程电缆,硬件保证实时性,pc仅仅处理数据,另外你处理要几秒钟,你有这么大的运算量? youkebing 发表于 2017-8-21 10:08
你可以尝试开两个线程,一个处理100毫秒的定时,一个处理数据
理论上是这样,但是,我开了N个线程,但是通信和任务堵塞式的 TASK,怕有相互影响,如果是你,你是咋做的,请教,谢谢! cdust 发表于 2017-8-21 11:43
理论上是这样,但是,我开了N个线程,但是通信和任务堵塞式的 TASK,怕有相互影响,如果是你,你是咋做的 ...
要区分一下,是io密集型还是计算密集型,而后根据这些模型,选择处理方法,一般是异步处理,当然,如果你的任务本身就很少,那么选择同步的方式会让编程更简单,我感觉这类系统一般就你这样处理就可以了,线程之间交互,一般把握:锁变量,不锁方法,效率一般不会差哪去 线程,task任务都可能 task,或者通过OPC访问PLC 100MS定时中断接收数据,需要时间要是很短直接就在中断里面处理,需要时间稍长直接开一个线程就可以了。 阻塞应该是程序设计问题 makesoft 发表于 2017-8-21 14:10
阻塞应该是程序设计问题
特地阻塞处理其他程序,怕相互干扰 同问,怎么开启线程?我需要1s通过串口发送一次数据,现在是用定时器里面发,但是把发送程序放在定时器里面,发出来的数据有误,忘给个例程,谢谢 霸气侧漏 发表于 2017-8-21 15:21
同问,怎么开启线程?我需要1s通过串口发送一次数据,现在是用定时器里面发,但是把发送程序放在定时器里面 ...
有误和定时器还是线程没有关系,是真的没有关系 要看量啊。无限开线程也是死的。 youkebing 发表于 2017-8-21 16:48
有误和定时器还是线程没有关系,是真的没有关系
明白,我的问题搞定 我一般用线程和消息处理
页:
[1]