NI LabVIEW,CVI,数据采集等产品讨论区

取消
显示结果 
搜索替代 
您的意思是: 

关于labview 串口接受单次不能超过16字节的问题

大家好,我通过avr单片机定时发送数据由labview 接受处理,现在单次16字节稳定正确,但把两次或者4次数据一起发送时,就是32或者64字节时,总是有很多时候接受到数据不到32或者64字节,请问大家是什么问题,可以改进不

 

发送方式,有printf(%c), printf(%s),put_s等多种方式,但效果一样

,,,,
0 项奖励
1 条消息(共 17 条)
5,983 次查看

将VISA Read的Buffer Size设大一点就能一次接收多组数据了。

 

2011-02-24_VISA.png

2 条消息(共 17 条)
5,976 次查看

Buffer Size设定为32,返回值有时候还是10, 或者24等,

,,,,
0 项奖励
3 条消息(共 17 条)
5,972 次查看

请问您的帧格式是什么?有没有特定的帧结束符?

 

比如说一帧可以是1byte,也可以是4bytes,最后都会以’\n‘结束。

4 条消息(共 17 条)
5,966 次查看

谢谢你的回复,目前一帧也就是一次我发送16bytes,没有’\n‘结束符号。相关程序关键点如下:

 

unsigned char cctv[16]={0};

  
    cctv[0]=0x55;
    IMU_ReadPage(0xd0,0x1b,8,&cctv[1]);
    Delayus(20);
    IMU_ReadPage(0x70,0x02,7,&cctv[9]);

put_s(cctv);

 

现在我调试发现在16字节读取时,读Visa返回有时候5字节或10字节,说明接收不成功,但通过看保存的文件输出最终还是50毫秒,所以很纳闷,读Visa返回有时候5字节或10字节,是什么情况

,,,,
0 项奖励
5 条消息(共 17 条)
5,963 次查看

接收字节不确定说明LabVIWE读取速度高于单片机2bytes发送速度。

 

单片机2Bytes数据还没发送完毕,生产者循环中的VISA Read就已经读取了。那读到的当然是一部分数据。

 

如果您单片机发送的帧有一个固定的结束符,那么可以通过设置VISA Property(Instrument I/O >> VISA >> VISA Advanced >> Property)里面的可以通过设置Terminal Char = ’\n‘ 来确保接收到一帧完整的数据。

6 条消息(共 17 条)
5,958 次查看

发送端改成cctv[16]='\n'; 串口接收属性更改,然后再cctv里面有0x0a的都改成0x0b,每次发送17字节.结果返回值还是会有5或者8的显示,不是固定在16,如果单次接收16个字节以上,前面的值重复出现,比如接收17个,最后一位就是0X55,而不是0X0A。visa configure serial port.jpg

return value.jpgreturn value.jpg

,,,,
0 项奖励
7 条消息(共 17 条)
5,956 次查看

似乎您的设置没有起作用。

 

请问您的property node是在VISA Serial Open VI之后, VISA Read 之前,并且串联在VISA Resource Name 紫色那根线上的吗?

0 项奖励
8 条消息(共 17 条)
5,947 次查看

是在open之后,read之前。我也出现了楼主同样的问题。我是用两台机子一台用串口调试程序,另一台用lv程序,串口调试程序一次发送18个字符,lv程序有时一次能收到18个字符,有时却先收到16个,再收到2个;或先收到10个字符,再收到8个字符。很奇怪。

0 项奖励
9 条消息(共 17 条)
5,863 次查看

请问您的串口调试程序发送18字符的频率是多少?另外,您的LabVIEW接收程序能否截个图?

0 项奖励
10 条消息(共 17 条)
5,843 次查看