LabVIEW论坛
直播中

小米姑娘1994

8年用户 51经验值
擅长:嵌入式技术
私信 关注
[问答]

Labview 异步TCP怎么实现

labview的TCP控件为同步超时模式实现的,在一对多场景明显不够用,效率低,看了官方例程也没有异步TCP的说明,该如何实现异步TCP呢?

回帖(3)

汪刚刚

2022-4-27 22:09:57
可以自己写一个,将LV自带的同步事假改为异步执行
6 举报
  • 小米姑娘1994: 哈哈,还是你,你还不如分享一下~~
  • 小米姑娘1994: 目前,将服务端侦听事jian做异步执行,想读也做异步,超时设为-1,写还是用同步的方式写。不过异步读取的数据,怎么通知主线程获取。
  • 汪刚刚 回复 小米姑娘1994: 哈哈哈哈,还是你,还没有解决,这个模块要等到我的文章讲到TCP专题在讲,现在共享了,我的文章还发不?
  • 小米姑娘1994 回复 汪刚刚: 跟专题页没啥关系呀。
  • 汪刚刚 回复 小米姑娘1994: 你如果能够大力支持下我的文章,我下一章就开TCP专题,这个可是在大厂用在大厂的自动化框架上的:),保证你不会失望
  • 小米姑娘1994 回复 汪刚刚: 你的文章我都看过了,写的挺细的:)期待中,希望能解答我的部分困惑。

DrunkWatermalon

2022-4-29 17:22:12
一头雾水,说的是啥...一对多是指服务端侦听到多个客服端的情况吗?服务端侦听为什么需要异步...是多个服务端吗?
服务端A ,客服端 B,C,D
你想要达到什么逻辑交互
3 举报
  • DrunkWatermalon: 放假!提桶跑路~~~
  • 小米姑娘1994: 哈哈,我纠结的是,我现在用类似labview给的一对多示例做的,轮询处理各个客户端感觉会有延时。现在想用异步方式做,看能不能提升性能。还有,labview的TCP感觉好难用,真心难用,同步超时处理,效率很低。
  • DrunkWatermalon 回复 小米姑娘1994: 我感觉除了实时性和性能的问题,用起来还是挺好用的...你客服端的功能可以集成为一个专门的类这种方式,你侦听拿到一个客服端的通讯ID就传给类并实例化,每个客服端都是独立在执行。应该是你结构这些没有搞好

DrunkWatermalon

2022-5-6 14:05:03
这个只是参考,可以用异步类型/框架之类的来实现
搞这些的时候不要全部都搞在一起。像面向对象概念那样,A是A,B是B。功能独立就前期麻烦了一点,但是后续的维护修改和使用时调试及性能都会有特别大的提高的
11 举报
  • 小米姑娘1994: 感谢感谢,优秀!
  • 小米姑娘1994: 我现在的需求:有两个客户端会定时给我发送控制报文,并且两个客户端的报文协议完全一样,我作为服务端接收报文后,经过处理,再转发给两个客户端。由于两个客户端控制报文协议一致,我只能先处理一个。。我现在直接采用labview的示例一对多程序处理,刚好将两个客户端分时进行了处理。。。
  • 小米姑娘1994: 你这个方案挺好,每个客户端独立,效率高,但用到我的场景,就要做两个while线程的同步,反而效率可能还没状态机分状态处理高。
  • DrunkWatermalon 回复 小米姑娘1994: 照你说的情况,实现起来还简单些。两个客服端都不需要那么麻烦,完全可以复用处理。如果处理起来不耗时/客服端数量<10个的情况你都可以在一个循环里直接用并行for循环(for循环设置并行就行),处理的封成子VI,然后开启复用。实时性我测试过都没问题。如果客服端太多的情况就需要另外处理了
  • DrunkWatermalon 回复 小米姑娘1994: https://bbs.elecfans.com/forum.php?mod=viewthread&tid=2272448&page=1#pid8731749,当时我在论坛提问来着,自己测试用的一个东西,勉勉强强能用...少量客服端完全可以这样处理,虽然不规范但是快...问题是占用cpu和内存稍微高一些,量大不稳定
  • DrunkWatermalon 回复 小米姑娘1994: 规范的是改成单客服端单处理。使用AF框架这种或者自己开异步处理也可以
  • 小米姑娘1994 回复 DrunkWatermalon: 连接打不开了。
  • DrunkWatermalon 回复 小米姑娘1994: 你可以点我头像进我主页,选择我的提问就可以看见
  • 小米姑娘1994 回复 DrunkWatermalon: 直接用范例的一对多示例,由于read函数轮询读有一定耗时,还是不好用。现在解决方案:用两个while循环分别读两个客户端上传的数据,read超时设-1,两个while读到的数据都加到同一个队列,第三个while循环负责读取队列,这样刚刚好都解决问题了。。
  • 小米姑娘1994 回复 DrunkWatermalon: 大佬,你用过lavbiew的共享变量吗,这个变量是线程安全的吗?
  • 参考.png

更多回帖

发帖
×
20
完善资料,
赚取积分