以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 菜鸟求称重串口接收代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=28984)

--  作者:lsf5138
--  发布时间:2013/2/25 10:07:00
--  [求助] 菜鸟求称重串口接收代码

只要能在项目窗口的重量输入框自动取电子称的重量值就可以!
[此贴子已经被作者于2013-3-1 10:23:25编辑过]

--  作者:lin_hailun
--  发布时间:2013/2/25 11:48:00
--  
 你看看这一章吧。连接设备以后,读取设备的值。

http://www.foxtable.com/help/topics/1966.htm

--  作者:lsf5138
--  发布时间:2013/3/1 8:35:00
--  
我用 (青苹果称重管理软件标准版) 电子称仪表采用:上海彩信XK315A系列2反序  测试正常

台称技术参数:

串行通讯接口RS— 232 连续发送,波特率 2400

通讯数据格式(RS-232C 输出)

通信地址Adr = 00 , 连续发送格式, 先低后高, 发送格式为
=,X1,X2,X3,X4,X5,X6,=,发送的X1,X2,X3,X4,X5,X6 为显示数据,= 为分隔符。
例如显示重量:100.00kg, 则发送格式为= 00.001 =00.001=

在论坛找了这个代码用起来又没反映:(摘不懂求帮助)

DataReceived事件在串口接收到数据的时候触发。

With Ports("COM1")
    Dim cnt As Integer = .BytesToRead
    If cnt >= 17 Then \'缓冲区是否有数据
        Dim Val(cnt - 1) As Byte
       .Read(val,0,cnt)
      Dim ss As String = BitConverter.ToString(val)
      ss = ss.Replace("-","")
      ss = ss.Trim("")
      Dim k As Integer
      Dim s(cnt - 1) As String
      For j As Integer = 0 To cnt - 1
          k = j * 2
          s(j) = ss.substring(k,2)
      Next
       For i As Integer = 0 To cnt -2
           Dim st As String = s(i) & s(i+1) 
           If st = "FFAA" Then  
              If  (12+i) <= cnt -1 Then          
                 If  s(12+i) = "00"  Then
                     forms("电子称重").controls("textbox1").value = HexToDec(s(i+8) & s(i+9) & s(i+10) & s(i+11))/100
                 End If   
              End If  
           End If  
       Next
     End If
End With

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:电子称重_201302282309.zip

[此贴子已经被作者于2013-3-1 10:22:52编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/3/1 8:38:00
--  

在DataReceived事件用用Messagebox判断事件有没有触发,如果触发了,接受的数据是什么,代码执行到什么位置。

这些只能逐步调试的。


--  作者:lsf5138
--  发布时间:2013/3/1 8:52:00
--  
改用这个代码测试,窗口文本框可以接收到信号,但不是显示数据,可能还要换算?
Forms("电子称重").Controls("textbox1").value  = e.Port.ReadExisting()
[此贴子已经被作者于2013-3-1 10:26:52编辑过]

--  作者:lsf5138
--  发布时间:2013/3/1 8:56:00
--  
baoxyang兄看到此贴帮下忙好吗
--  作者:狐狸爸爸
--  发布时间:2013/3/1 9:04:00
--  

既然可以读出数据,那你的问题是什么,事件没有触法? 还是代码没有执行?

用这个方法分析一下你的事件代码吧:

 

http://www.foxtable.com/help/topics/1485.htm

 


--  作者:lsf5138
--  发布时间:2013/3/1 10:53:00
--  
在论坛里找了句 baoxyang 的发言
 Post By:2012-10-24 10:22:00 [只看该作者

因为时间长了,有点不是太清楚哦.需要看接口说明,接口读取字节有效长度进行分析,电子称重时稳定时(也就是电子显示屏的重量),会发出一个状态符,以这个来读取有效称重。读取字节数进行分析提取数据。


我可能只是接收到电子称的状态符,但不知道要如何对读取的字节数进行分析再提取数据!

[此贴子已经被作者于2013-3-1 10:54:14编辑过]

--  作者:lsf5138
--  发布时间:2013/3/2 12:58:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:634239596569218750.zip

我上传台称说明书,帮忙看下还要什么资料吗?我再去找下。。。。
Forms("电子称重").Controls("textbox1").value  = e.Port.ReadExisting() 
上面的代码只能收到电子称信号(一些看不懂的字符),可能还要进行分析换算,谁能帮忙完整下代码好吗?
[此贴子已经被作者于2013-3-2 13:19:32编辑过]

--  作者:lsf5138
--  发布时间:2013/3/2 15:22:00
--  
波特率 2400 通信地址Adr = 00 ,
 连续发送格式, 先低后高, 发送格式为 =,X1,X2,X3,X4,X5,X6,=,发送的X1,X2,X3,X4,X5,X6 为显示数据,= 为分隔符。
例如显示重量:100.00kg, 则发送格式为= 00.001 =00.001=

有知道对这些格式字符进行分析解码的吗?