LabVIEW论坛
登录
直播中
小米姑娘1994
8年用户
51经验值
擅长:嵌入式技术
私信
关注
[问答]
Labview 异步TCP怎么实现
开启该帖子的消息推送
labview
的TCP控件为同步超时模式实现的,在一对多场景明显不够用,效率低,看了官方例程也没有异步TCP的说明,该如何实现异步TCP呢?
回帖
(3)
汪刚刚
2022-4-27 22:09:57
可以自己写一个,将LV自带的同步事假改为异步执行
可以自己写一个,将LV自带的同步事假改为异步执行
6
举报
小米姑娘1994:
哈哈,还是你,你还不如分享一下~~
小米姑娘1994:
目前,将服务端侦听事jian做异步执行,想读也做异步,超时设为-1,写还是用同步的方式写。不过异步读取的数据,怎么通知主线程获取。
汪刚刚
回复
小米姑娘1994:
哈哈哈哈,还是你,还没有解决,这个模块要等到我的文章讲到TCP专题在讲,现在共享了,我的文章还发不?
小米姑娘1994
回复
汪刚刚:
跟专题页没啥关系呀。
汪刚刚
回复
小米姑娘1994:
你如果能够大力支持下我的文章,我下一章就开TCP专题,这个可是在大厂用在大厂的自动化框架上的:),保证你不会失望
小米姑娘1994
回复
汪刚刚:
你的文章我都看过了,写的挺细的:)期待中,希望能解答我的部分困惑。
DrunkWatermalon
2022-4-29 17:22:12
一头雾水,说的是啥...一对多是指服务端侦听到多个客服端的情况吗?服务端侦听为什么需要异步...是多个服务端吗?
服务端A ,客服端 B,C,D
你想要达到什么逻辑交互
一头雾水,说的是啥...一对多是指服务端侦听到多个客服端的情况吗?服务端侦听为什么需要异步...是多个服务端吗?
服务端A ,客服端 B,C,D
你想要达到什么逻辑交互
3
举报
DrunkWatermalon:
放假!提桶跑路~~~
小米姑娘1994:
哈哈,我纠结的是,我现在用类似labview给的一对多示例做的,轮询处理各个客户端感觉会有延时。现在想用异步方式做,看能不能提升性能。还有,labview的TCP感觉好难用,真心难用,同步超时处理,效率很低。
DrunkWatermalon
回复
小米姑娘1994:
我感觉除了实时性和性能的问题,用起来还是挺好用的...你客服端的功能可以集成为一个专门的类这种方式,你侦听拿到一个客服端的通讯ID就传给类并实例化,每个客服端都是独立在执行。应该是你结构这些没有搞好
DrunkWatermalon
2022-5-6 14:05:03
这个只是参考,可以用异步类型/框架之类的来实现
搞这些的时候不要全部都搞在一起。像面向对象概念那样,A是A,B是B。功能独立就前期麻烦了一点,但是后续的维护修改和使用时调试及性能都会有特别大的提高的
这个只是参考,可以用异步类型/框架之类的来实现
搞这些的时候不要全部都搞在一起。像面向对象概念那样,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循环负责读取队列,这样刚刚好都解决问题了。。
DrunkWatermalon
回复
小米姑娘1994:
66666
小米姑娘1994
回复
DrunkWatermalon:
大佬,你用过lavbiew的共享变量吗,这个变量是线程安全的吗?
更多回帖
rotate(-90deg);
回复
相关问答
LABVIEW
实现
TCP
server通讯
2019-06-19
3976
请问
labview
2018怎么
实现
TCP
通信?
2019-04-30
2457
请问
labview
的
TCP
需要如何配置才能
实现
二进制数据在
TCP
上的传输
2019-03-18
2166
labview
中的
tcp
/ip
实现
两台电脑通信
2013-10-06
10217
LabVIEW
如何通过
TCP
通信
实现
信号的双向发送与接收
2018-01-05
5970
请问
LabVIEW
通过无线WiFi采集数据 是用
TCP
协议
实现
吗?
2011-11-18
11433
labview
中通过
TCP
/TP和中心通信怎么
实现
?
2016-07-23
5172
LabVIEW
中如何调试
异步
调用的VI?
2023-07-28
3685
Labview
tcp
两台电脑
实现
通信
2016-08-28
20586
labview
中
TCP
与
TCP
STM库差别在哪里?求解惑
2012-11-08
5465
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分