电子称读书取值,高手们帮忙

hanghang0307 2010-06-09 08:54:26
我的电子秤RS232C 协议,在默认的 9600.8.N.1设置下
超级终端读取的数值是: ST.NT 0001.4KG 格式

高手们,谁能告诉我下, 在VB里面怎么截取到稳定的数值啊
...全文
91 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
贝隆 2010-06-09
  • 打赏
  • 举报
回复
of123 2010-06-09
  • 打赏
  • 举报
回复
界面上放一个 Visual = False 的 ListBox 和一个 TextBox,每接收到一个数据调用以下过程:

Private Declare Function SendMessagebyString Lib _
"user32" Alias "SendMessageA" (ByVal hWND As Long, _
ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As String) As Long

Private Const LB_FINDSTRINGEXACT = &H1A2 '在 ListBox 中精确查找

Public Sub Get_Value(Byval strValue As String)
Dim n As Long

'删除 ListBox 过时数据
If List1.ListCount > 1000 Then
List1.RemoveItem IIf(Text1.Tag = "0", 1, 0)
End If

n = SendMessagebyString(List1.hWnd, LB_FINDSTRINGEXACT, -1, strValue)

If n = -1 Then '新值
List1.AddItem strValue
List1.ItemData(List1.NewIndex) = 1 '计数器
List1.ListIndex = List1.NewIndex
Else '已有值
List1.ItemData(n) = List1.ItemData(n) + 1 '计数器+1
List1.ListIndex = n
End If

If List1.ItemData(List1.ListIndex) > Val(Text1.Tag) Then
Text1 = List1.List(List1.ListIndex)
Text1.Tag = List1.ItemData(List1.ListIndex)
End If

End Sub

'每一个新物体称重最好有一个按钮清除旧数据,特别是重量相近的情况下。
Private Sub cmdRefresh_Click()
List1.Clear
End Sub
zdingyun 2010-06-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 hanghang0307 的回复:]
我的电子秤RS232C 协议,在默认的 9600.8.N.1设置下
超级终端读取的数值是: ST.NT 0001.4KG 格式

高手们,谁能告诉我下, 在VB里面怎么截取到稳定的数值啊
[/Quote]
截取到稳定的数值需要完整的数据帧结构说明.LZ可以用串口调试助手按16进制显示接收的数据,查看ST.NT 0001.4KG两端文本无法显示的控制字符的16进制内容来写接收代码.电子秤的1个数据帧长度不止14字节.
hanghang0307 2010-06-09
  • 打赏
  • 举报
回复
你太强了,学习,受益

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧