完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
1、这里是作为服务器,进行TCP读取时,假如客户端没发数据,或者未及时发送数据,且时间超过了服务器设定的TCP读取超时 客户端还未发送,就会报超时错误,错误代码“56”. 2、有没有一个办法,能够在读取数据之前加一个字节数的查询,就像串口通讯时的“缓冲区字节数”,这样就可以加一个选择,只有在TCP字节数大于0时,才进行TCP读取。这样就可以规避上述问题。 希望有好心人能解解惑,在线等>-< |
|
相关推荐
8个回答
|
|
在LabVIEW中,TCP通信确实可能会遇到超时问题。为了解决这个问题,我们可以在读取数据之前检查TCP缓冲区中的字节数。以下是一些建议和步骤:
1. 使用"TCP Buffer Status.vi":LabVIEW提供了一个名为"TCP Buffer Status.vi"的函数,它可以返回TCP缓冲区中的字节数。您可以在TCP读取之前调用此函数,以检查缓冲区中是否有数据。 2. 检查缓冲区字节数:在调用"TCP Buffer Status.vi"后,您可以检查返回的字节数。如果字节数大于0,那么您可以继续执行TCP读取操作。如果字节数为0,您可以等待一段时间,然后再次检查缓冲区字节数。 3. 设置超时时间:为了避免长时间的等待,您可以设置一个超时时间。如果在超时时间内没有收到数据,您可以停止等待并报告超时错误。 4. 错误处理:在执行TCP读取操作时,确保正确处理可能出现的错误,例如超时错误(错误代码56)。 以下是一个简化的LabVIEW代码示例,展示了如何在读取数据之前检查TCP缓冲区中的字节数: 1. 打开"TCP Buffer Status.vi",将TCP连接句柄连接到"Connection"输入端。 2. 将"TCP Buffer Status.vi"的"Bytes Available"输出端连接到一个"Compare"函数,设置阈值为0。 3. 使用"Wait (ms).vi"函数设置超时时间,例如500毫秒。 4. 使用"Case Structure"或"Shift Register"根据"Compare"函数的结果执行相应的操作: a. 如果字节数大于0,执行TCP读取操作。 b. 如果字节数为0,等待一段时间后再次检查缓冲区字节数。 通过这种方式,您可以在读取数据之前检查TCP缓冲区中的字节数,从而避免超时错误。希望这对您有所帮助! |
|
7 条评论
|
|
请问楼上回复中提到的"TCP Buffer Status.vi"是在labview的那个版本中
|
|
|
|
看帮助 设置不超时 -1 接受字节设置大些 毕竟设置为Immediate模式
|
|
1 条评论
|
|
|
|
5 条评论
|
|
1 条评论
|
|
|
|
|
|
NI官方提供的解决方法
发送消息,消息前带有用于描述该消息的文件头,大小固定。 例如,文件头中可包含说明消息类型的命令整数,以及说明消息中其它数据大小的长度整数。 服务器和客户端均可接收消息。发出8字节的读取函数(假定为两个4字节的整数),然后使函数转换为两个整数,再依据长度整数确定作为剩余消息发送至第二个读取函数的字节数。 第二个读取函数完成后,可返回至8字节文件头的读取函数。 这种方式最为灵活,但需要读取函数接收消息。 实际上,通常第二个读取函数在消息通过写入函数写入时立即完成。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
879 浏览 2 评论
1318 浏览 1 评论
937 浏览 0 评论
新手求助,从示波器导出来csv类型的波形数据,怎么用labview读取csv文件还原波形,求助各位大佬,感谢感谢!!!
1431 浏览 2 评论
Labview 信号处理 瞬态测量 连线出现错误提示,请教各位前辈!麻烦请各位帮忙看一下?
6829 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 06:27 , Processed in 1.748661 second(s), Total 140, Slave 108 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号