以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]串口数据处理  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=137014)

--  作者:yds
--  发布时间:2019/6/26 14:38:00
--  [求助]串口数据处理
我现在需要监控三个串口的数据(COM1.COM5,COM7)
DataReceived事件代码如下:

Select Case e.Port.PortName
    Case
"COM1"
        解析代码

    Case
"COM5"
        解析代码

    Case "COM7"

        解析代码
End
Select


我想知道的是假如COM1口的数据未完成时,COM2来数据要如何处理?是等待COM1口的数据处理完毕,还是可以直接处理?有没有办法同时处理?


--  作者:有点甜
--  发布时间:2019/6/26 15:30:00
--  

 

会排队触发 DataReceived 事件的。根据先来后到的方式排队。

 

 


--  作者:YDS
--  发布时间:2019/6/26 15:32:00
--  
可以异步处理吗?
--  作者:有点甜
--  发布时间:2019/6/26 15:55:00
--  
以下是引用YDS在2019/6/26 15:32:00的发言:
可以异步处理吗?

 

你在 DataReceived 事件,执行异步函数试试,这样可以异步处理。

 

 


--  作者:YDS
--  发布时间:2019/6/26 16:00:00
--  
能具体说说嘛?比如我把com1接收到的数据用自定义函数c1来处理

Select Case e.Port.PortName
    Case
 
"COM1"
        
Functions.AsyncExecute("c1")
    Case
 
"COM5"
        Functions.AsyncExecute("c5")

    Case "COM7"

        Functions.AsyncExecute("c7")
End
 Select


这样可以吗?会不会很耗资源?


--  作者:有点甜
--  发布时间:2019/6/26 16:09:00
--  

1、你先测试这样能不能正确处理数据

 

2、不会耗资源的


--  作者:YDS
--  发布时间:2019/6/26 16:55:00
--  
16:44:28:139|1
16:44:28:146|65-90-5
16:44:28:152|90-5-255
16:44:28:159|2

为什么一帧数据,会不同时间收到,这要怎么处理?

--  作者:有点甜
--  发布时间:2019/6/26 17:30:00
--  

不理解你的问题,为什么要在意什么时候收到?

 

1、你每个数据,难道没有结束符,说明发送的数据结束了?

 

2、你不能用全局变量记录字符的值,大于等于某个值以后说明数据结束了?

 

[此贴子已经被作者于2019/6/26 17:31:19编辑过]

--  作者:YDS
--  发布时间:2019/6/27 8:36:00
--  
发送数据
x = 3 到 12   ’0.1秒x递增1发送一次数据
xy = 112 + x
发送:1-112-x-xy-2

接收数据
参数等于发送的x值
时间|参数|传输数据
16:44:25:131|3|1-112-3-115-2
16:44:25:168|3|1-65-0-0-0-0-236-44-89-2
16:44:26:125|4|1-112-4-116-2
16:44:26:139|4|1
16:44:26:147|4|65-235-3-193
16:44:26:153|4|3-243-2
16:44:27:125|5|1-112-5-117-2
16:44:27:140|5|1
16:44:27:146|5|65-124-0
16:44:27:152|5|1-189-3
16:44:27:160|5|126-2
16:44:28:125|6|1-112-6-118-2
16:44:28:139|6|1
16:44:28:146|6|65-90-5
16:44:28:152|6|90-5-255
16:44:28:159|6|2
16:44:29:125|7|1-112-7-119-2
16:44:29:138|7|1
16:44:29:146|7|65-90-5-0
16:44:29:155|7|0-0-0-160
16:44:29:164|7|2
16:44:30:126|8|1-112-8-120-2
16:44:30:139|8|1
16:44:30:145|8|65-0-0
16:44:30:152|8|0-0-0
16:44:30:158|8|0-0-0
16:44:30:165|8|65-2
16:44:31:127|9|1-112-9-121-2
16:44:31:141|9|1
16:44:31:146|9|65-112-0
16:44:31:151|9|1-0
16:44:31:157|9|1-0-0
16:44:31:163|9|179-2
16:44:32:126|10|1-112-10-122-2
16:44:32:139|10|1
16:44:32:145|10|65-0-0
16:44:32:150|10|0-0
16:44:32:156|10|148-0-2
16:44:32:161|10|215-2
16:44:33:127|11|1-112-11-123-2
16:44:33:141|11|1
16:44:33:147|11|65-44-0
16:44:33:153|11|1-192-3
16:44:33:160|11|49-2
16:44:34:125|12|1-112-12-124-2
16:44:34:139|12|1
16:44:34:145|12|65-0-1
16:44:34:151|12|0-0-112
16:44:34:157|12|0-1-179
16:44:34:163|12|2
16:44:35:123|3|1-112-3-115-2
16:44:35:137|3|1
16:44:35:143|3|65-0-0
16:44:35:149|3|0-0-236
16:44:35:156|3|44-89-2
16:44:36:127|4|1-112-4-116-2
16:44:36:141|4|1
16:44:36:146|4|65-235
16:44:36:152|4|3-193-3
16:44:36:158|4|243-2
16:44:37:126|5|1-112-5-117-2
16:44:37:141|5|1
16:44:37:146|5|65-125-0
16:44:37:153|5|1-188-3
16:44:37:160|5|126-2
16:44:38:127|6|1-112-6-118-2
16:44:38:140|6|1
16:44:38:146|6|65-90
16:44:38:152|6|5-90-5
16:44:38:157|6|255-2
16:44:39:125|7|1-112-7-119-2
16:44:39:139|7|1
16:44:39:146|7|65-90-5
16:44:39:152|7|0-0-0
16:44:39:158|7|0-160-2
16:44:40:127|8|1-112-8-120-2
16:44:40:140|8|1
16:44:40:146|8|65-0-0
16:44:40:153|8|0-0-0
16:44:40:161|8|0-0-0-65
16:44:40:167|8|2
16:44:41:125|9|1-112-9-121-2
16:44:41:138|9|1
16:44:41:144|9|65-112-0
16:44:41:149|9|1-0
16:44:41:155|9|1-0-0
16:44:41:161|9|179-2
16:44:42:126|10|1-112-10-122-2
16:44:42:139|10|1
16:44:42:146|10|65-0-0
16:44:42:151|10|0-0
16:44:42:157|10|148-0-2
16:44:42:163|10|215-2
16:44:43:127|11|1-112-11-123-2
16:44:43:141|11|1
16:44:43:146|11|65-44-0
16:44:43:152|11|1-192-3
16:44:43:158|11|49-2
16:44:44:124|12|1-112-12-124-2
16:44:44:137|12|1
16:44:44:143|12|65-0-1
16:44:44:149|12|0-0-112
16:44:44:156|12|0-1-179
16:44:44:162|12|2


--  作者:YDS
--  发布时间:2019/6/27 8:41:00
--  
接收数据的起始字节1,结束字节2,中间字节小于3的前面增加转义符0