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

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

关于串口数据接收的问题

你好,我想用下位机每2ms往上位机发送一个的16进制的数据(如0X387F),由于每次只能发送8位,所以这16进制的数据是两次发送的(0X38,0X7F),问题就出在这里我用附件中的程序,显示的是0X38,0X7F,其实我想要的是0X387F这样的数据。

1.这里有一种方法: 转换为无符号数组,通过提取数组奇偶数,提出后再高低位组合起来,不知道这样是否可行?

2.还有就是想通过设置 visa read 读取字节数来限制,附件上传的为常数1,不知道是否可以通过更改这个大小来实现,比如设为 2,

3.关于串口字节设置的疑问,那个Bytes at Port 是做什么用的?看说明像是监控读取字节的大小的,不少设置是将其输出直接接到 VISA reda 字节总数 端口了,这个是什么作用?只是为了监控读取字节的大小嘛?但是在哪里设置控制量啊?如想一次读取2个字节,(是不是这样也能实现 合并生成0X387F这样的整合啊)

 

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

 


@nicezx wrote:

你好,我想用下位机每2ms往上位机发送一个的16进制的数据(如0X387F),由于每次只能发送8位,所以这16进制的数据是两次发送的(0X38,0X7F),问题就出在这里我用附件中的程序,显示的是0X38,0X7F,其实我想要的是0X387F这样的数据。

1.这里有一种方法: 转换为无符号数组,通过提取数组奇偶数,提出后再高低位组合起来,不知道这样是否可行?

2.还有就是想通过设置 visa read 读取字节数来限制,附件上传的为常数1,不知道是否可以通过更改这个大小来实现,比如设为 2,

3.关于串口字节设置的疑问,那个Bytes at Port 是做什么用的?看说明像是监控读取字节的大小的,不少设置是将其输出直接接到 VISA reda 字节总数 端口了,这个是什么作用?只是为了监控读取字节的大小嘛?但是在哪里设置控制量啊?如想一次读取2个字节,(是不是这样也能实现 合并生成0X387F这样的整合啊)

 


 

You may use the Bytes at Port to detect for 2 bytes of data received at the port before performing a VISA Read.

 

 

Ian F
Since LabVIEW 5.1... 7.1.1... 2009, 2010, 2014
依恩与LabVIEW
LVVILIB.blogspot.com
0 项奖励
2 条消息(共 10 条)
5,594 次查看

Example of using Bytes at Port as attached...

Ian F
Since LabVIEW 5.1... 7.1.1... 2009, 2010, 2014
依恩与LabVIEW
LVVILIB.blogspot.com
0 项奖励
3 条消息(共 10 条)
5,590 次查看

Thanks for your Suggestion ,But I can't open this vi my labview is 8.6,can you send me another one。

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

Here it goes... LV8.6

Ian F
Since LabVIEW 5.1... 7.1.1... 2009, 2010, 2014
依恩与LabVIEW
LVVILIB.blogspot.com
0 项奖励
5 条消息(共 10 条)
5,579 次查看

我修改了下之前发的那个VI,现在在波形显示的数据应该是0X3880这样的数据,

但是存在这样的问题:

1.在数据缓冲中显示的也是0X3880,但是问题是不是依次往下排的,只在第一行显示,感觉像是覆盖了。

2.保存数据后,发现保存的数据格式中有很多0,不知道是为什么。

3.不知道这样修改,跟您说的那种方法不知道哪个更可靠些,感觉你说的那个应该更可靠些,不过很稀罕没有打开,希望你再一下,我的LB是8.6中文版的

再次感谢您的解答和帮组。

Thanks very much!

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

谢谢,我已经打开查看了,您是否可以帮我看下我修改的那个程序,就是我第二次发那个,我不知道我那样修改哪里不对,造成的那样的错误

 

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

 


@nicezx wrote:

我修改了下之前发的那个VI,现在在波形显示的数据应该是0X3880这样的数据,

但是存在这样的问题:

1.在数据缓冲中显示的也是0X3880,但是问题是不是依次往下排的,只在第一行显示,感觉像是覆盖了。

2.保存数据后,发现保存的数据格式中有很多0,不知道是为什么。

3.不知道这样修改,跟您说的那种方法不知道哪个更可靠些,感觉你说的那个应该更可靠些,不过很稀罕没有打开,希望你再一下,我的LB是8.6中文版的

再次感谢您的解答和帮组。

Thanks very much!


 

Hi, your VI simply read whatever is present at the port. That way, you are not sure if you have got 2 bytes of data (or Mutiple of 2-bytes of data)

Please try using my example and modify to suit your needs.

 

PS; You have got many '0's due to the Array building function (i.e. you are using Insert Into Array). Data i.e. '0' is inserted into the array on each loop iteration regardless of whether there is real data read from the port.

Ian F
Since LabVIEW 5.1... 7.1.1... 2009, 2010, 2014
依恩与LabVIEW
LVVILIB.blogspot.com
0 项奖励
8 条消息(共 10 条)
5,563 次查看

Here's the modified example of mine... please try it and understand it.

 

PS 1: It may not be perfect but it should be working 😛

PS 2: Your read while-loop is inside an event case? May not be an good idea though...

Ian F
Since LabVIEW 5.1... 7.1.1... 2009, 2010, 2014
依恩与LabVIEW
LVVILIB.blogspot.com
0 项奖励
9 条消息(共 10 条)
5,562 次查看

Thank you very much!I will try again,

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