首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb6.0串行通信对字符串的处理有关问题

2012-12-15 
vb6.0串行通信对字符串的处理问题我是vb初学者,想做一个电子天平的检定界面。其中电子天平发送的数据为格式

vb6.0串行通信对字符串的处理问题
我是vb初学者,想做一个电子天平的检定界面。其中电子天平发送的数据为格式                                  16      15    14    13    12    11    10      9            8     7    6     5      4      3     2    1
 
Model  ∪   */∪   +/-   Data   Data  Data  Decimalpoint Data  Data  Data  Data   Unit1  Unit2  CR   LF

 */∪表示*或空格,当数据不稳定的时候为*,稳定的时候为空格。电子天平连续发送数据,数据“L  +099.9883 g”最终得到的稳定的数据99.9883 g存到text里面去,也就是得到3到12这几位有效的数据。一定要稳定的数据才可以接收到VB界面上去。不知道哪位大侠能帮忙给点思路。不胜感激!!!



[解决办法]
这个很容易。

首先,将 Rthreshold 设置成 16,这样每接收到 16 个字节,就会进入 OnComm 事件。同时,将 InputLen 也设置为 16,每次提取 16 字节。在 OnComm 事件中,如果 InBufferCount >= 16 就不断提取。

对提取到的串进行检查,如果含有 * 就丢弃,直至不含 *,送去显示。
[解决办法]
http://download.csdn.net/detail/veron_04/1262066
[解决办法]

引用:
这个很容易。

首先,将 Rthreshold 设置成 16,这样每接收到 16 个字节,就会进入 OnComm 事件。同时,将 InputLen 也设置为 16,每次提取 16 字节。在 OnComm 事件中,如果 InBufferCount >= 16 就不断提取。

对提取到的串进行检查,如果含有 * 就丢弃,直至不含 *,送去显示。

我想把100个收来的数据存到一个数组中,在数组中判断没有*,并且从某一个数据开始接收的数据和后面的数据保持不变,既保持接收的数据稳定不变。我想找到这样的vb编程方法,不知道能不能指点一下,谢谢
[解决办法]
引用:
我是vb初学者,想做一个电子天平的检定界面。其中电子天平发送的数据为格式 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
 
Model ∪ */∪ +/- Data Data Data Decimalpoint Data Data Data Data Unit1 Unit2 CR LF

 */∪表示*或空格,当数据不稳定的时候为*,稳定的时候为空格。电子天……

对接收的每帧数据的帧首2字节进行是否是两空格字符,符合接收并显示于界面,否则丢弃.
[解决办法]
自己顶下 问题依然没有解决
[解决办法]
引用:
引用:
我是vb初学者,想做一个电子天平的检定界面。其中电子天平发送的数据为格式 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Model ∪ */∪ +/- Data Data Data Decimalpoint Data Data Data Data Unit1 Unit2 CR LF

*/∪表示*或空格,当数据不稳定的时候为*,稳定的……
是数据稳定的问题 前面是两个空格也不一定是稳定的数据,得到的数据必须是连续的的几个不变的,找到连续不变的数据中的取得一个数据 关键是这一步
[解决办法]
引用:
http://download.csdn.net/detail/veron_04/1262066
呵呵 谢谢 这个我早就看过了 
------解决方案--------------------


既然看过了,那就应该有解决问题的办法了啊?
[解决办法]

引用:
既然看过了,那就应该有解决问题的办法了啊?
我的问题是想得到稳定的数据 这个是发什么接什么
[解决办法]
关键理解OnComm中的代码
[解决办法]
把问题简单化可以这样理解不?
撸主的问题不是接收这块,而是分析这块。
简单一点:
如下8组数据,撸主需要取得“14”才是符合要求的数据,是吗?
a(0)="*/U 11"
a(1)="*   14"
a(2)="*   14"
a(3)="*   14"
a(4)="*   10"
a(5)="*   10"
a(6)="*/U 10"
a(7)="*   14"


[解决办法]
引用:
把问题简单化可以这样理解不?
撸主的问题不是接收这块,而是分析这块。
简单一点:
如下8组数据,撸主需要取得“14”才是符合要求的数据,是吗?
a(0)="*/U 11"
a(1)="* 14"
a(2)="* 14"
a(3)="* 14"
a(4)="* 10"
a(5)="* 10"
a(6)="*/U 10"
a(7)="* 14"
 仪器是连续发送数据,把接收的数据按接收顺序存在一个数组中,假设接收了100个数据,这些数据开始时不稳定的数据,不稳定的数据含有*,另外是不带*的数据,不带*的数据中从某一个数据开始往后接受的数据保持不变,那么这个数据就是期望得到的数据。从这个数组中调出这个期望的数据进行处理显示在界面的text控件里。举例来说吧L *+047.6413 g,L  +099.9883 g,L  +399.9883 g这三个数据。其中第一个数据L *+047.6413 g带*故舍弃;第二个数据显示为99.9883g,把前面的型号L,空格,“+”和0都去掉,只留有效数据99.9883g;第三个数据显示为399.9883g,去掉型号和“+”号
[解决办法]
引用:
关键理解OnComm中的代码
我觉得关键是处理数据,仪器是连续发送数据,把接收的数据按接收顺序存在一个数组中,假设接收了100个数据,这些数据开始时不稳定的数据,不稳定的数据含有*,另外是不带*的数据,不带*的数据中从某一个数据开始往后接受的数据保持不变,那么这个数据就是期望得到的数据。从这个数组中调出这个期望的数据进行处理显示在界面的text控件里。举例来说吧L *+047.6413 g,L +099.9883 g,L +399.9883 g这三个数据。其中第一个数据L *+047.6413 g带*故舍弃;第二个数据显示为99.9883g,把前面的型号L,空格,“+”和0都去掉,只留有效数据99.9883g;第三个数据显示为399.9883g,去掉型号和“+”号
[解决办法]
dim a(100) as string
dim b(100) as single
dim j as integer

for i as integer = 0 to (100-4)

 if left( a(i),2) = " "  then   '是空格的就输入到B数组
  b(100) = csng(right(a(i),10)) '把右边10位截取,转换为single 
 end if

next

就在网页写的,有小错误请自行改正一下
[解决办法]
dim a(100) as string
dim b(100) as single
dim j as integer

for i as integer = 0 to (100-4)

 if left( a(i),2) = " "  then   '是空格的就输入到B数组
  b(100) = csng(right(a(i),10)) '把右边10位截取,转换为single 
 end if

next

就在网页写的,有小错误请自行改正一下

热点排行