因仑“3+1”工程特种兵精英论坛

标题: C#写上位机,有什么样的方法发送串口数据比较快? [打印本页]

作者: 张衍波    时间: 2015-10-8 07:47
标题: C#写上位机,有什么样的方法发送串口数据比较快?

C#写的上位机,要求大概这样:主机不断的发轮询码,然后上位机一直在接收,当接收到的轮询码与自身的ID相同时,就马上发送一串码给主机。如:主机循环发送01 02 03 04 05 ,上位机模块ID为02,那么上位机在接收到02时马上发给主机一串码,是一个数组,十位,且是要跟在02的后面,如:01 02 。。。。。 03 04 05,主机发01 与02 的时间间隔为10MS,别的码之间也一样。
那么问题来了:当上位机发给主机的数比10位少时,一切正常,有10位长时,上位机发出的码会随机插在别的码后面,不一定是02后面,(主机接收到上位机的发吗时会暂停发轮询码,过一会才继续发),测试发现,应该是串口发送的数据长时,用的时间也比较长,导致出问题,那么有什么方法让串口发送的比较快呢,现在用的是DataReceived事件接收数据,串口.write()方法发送,请有经验的说说,谢谢!

C#写的上位机,要求大概这样:主机不断的发轮询码,然后上位机一直在接收,当接收到的轮询码与自身的ID相同时,就马上发送一串码给主机。如:主机循环发送01 02 03 04 05 ,上位机模块ID为02,那么上位机在接收到02时马上发给主机一串码,是一个数组,十位,且是要跟在02的后面,如:01 02 。。。。。 03 04 05,主机发01 与02 的时间间隔为10MS,别的码之间也一样。
那么问题来了:当上位机发给主机的数比10位少时,一切正常,有10位长时,上位机发出的码会随机插在别的码后面,不一定是02后面,(主机接收到上位机的发吗时会暂停发轮询码,过一会才继续发),测试发现,应该是串口发送的数据长时,用的时间也比较长,导致出问题,那么有什么方法让串口发送的比较快呢,现在用的是DataReceived事件接收数据,串口.write()方法发送,请有经验的说说,谢谢!

转载






欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4