地磅串口问题

liang80318 2008-03-29 10:49:57
Private Sub msc_OnComm()

On Error GoTo err:

Dim strRecieved As String
Dim strSign As String
Dim strData As String
Dim strDisplay As String
Dim sTimeStart As Single
strDisplay = 0

If funGetINI("默认设置", "1", gc_strConfigFile, "") = 1 Then

With msc

Select Case msc.CommEvent

'接收到RThreshold字符。该事件将持续生成直到用Input属性从接收缓冲区中删除数据
Case comEvReceive

strRecieved = .Input
Debug.Print strRecieved
以上是部分代码,出现一些个非常奇怪的问题
Debug.Print strRecieved 在跟踪显示数据时,刚开始几行非常正常,例如:
rtx 00000060
rtx 00000060
但是几行之后,数据就断开了
rtx 000000
60
rtx 000000
60
rtx 000000
60
如上所示,导致数据最后两位取不上,也不知道为什么后两位出换行,当设置断点跟踪时,数据又可以完整传递
兄弟们啊,有谁碰到过这种问题啊

还有一种BCD的问题,也很奇怪
它是格式是这样的 FF FF 01 12 03 代表是 31.201吨
Format(Hex(Asc(Mid(strRecieved, 5, 1))), "00") & Format(Hex(Asc(Mid(strRecieved, 4, 1))), "00") & Format(Hex(Asc(Mid(strRecieved, 3, 1))), "00")
这样取出来,再组合很正常,但是平均过10车以后,Format(Hex(Asc(Mid(strRecieved, 5, 1))), "00")取不出数据,显示是FF
经常会这样,重起也不管用,只有车来回动动,就好了,也是很奇怪啊,我专业做地磅软件,做了起码50个磅了,但是这两个问题还真是没见过,谢谢兄弟们了
...全文
301 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicon 2008-03-30
  • 打赏
  • 举报
回复
最好的办法是看一下地磅说明书,不同地磅可能会有不同的Comm接口。
cbm6666 2008-03-30
  • 打赏
  • 举报
回复
你是我的同行,我帮你吧, 汽车衡我安装的套数 30年来不下1000套了吧,哈哈...小老弟加油吧.

表头输出每一笔的字符数都是固定的, 你算一下 STX+资料+ETX共有几个字符

假设是 12个,那你就设
.RThreshold = 12

严谨一点的话多加些判断 STX后面第几位开始算起抓几位, 再用Val 就把前置的0去掉了.
liang80318 2008-03-30
  • 打赏
  • 举报
回复
我是文本接收的,表头是泰山衡器的,服务超烂,不买他们的地磅,坚决不提供服务
说明书写的也超简单,连个传输的标准都没有
以前的磅都不错,就是这个出现这种情况,很奇怪啊
用户 昵称 2008-03-30
  • 打赏
  • 举报
回复
没发出来数吧,车动一下肯定触发什么条件了。
cbm6666 2008-03-29
  • 打赏
  • 举报
回复
呵呵,你的表头是什么厂牌与型号的 ?

95%以上的地磅表头都是十进制的串口输出, 你是用Binary方式接收是吗 ?

7,785

社区成员

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

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