XK3190A9地磅数据读取急急急

wxl84911 2008-06-19 02:41:34
下面是XK3190A9磅房系统的说明资料数据定义部分。我想用VB6.0串口读出磅的数据来。我写了一点VB代码,只是简单的串口通讯。想要得到解决。

四. 大屏幕与仪表的连接使用
▲ !仪表大屏幕输出引线与大屏幕显示器联接必须准确无误,倘若联接错误,将损坏仪表输出端口或损坏大屏幕显示器输入端口,甚至可能严重损坏仪表和大屏幕显示器,要求使用配套的专用联接线。
1. 大屏幕显示接口采用15 芯RS232 插头座( 与串行通讯口共用一只插座 ) , 其引脚意义见下图
图串行通讯和大屏幕显示输出接口信号(机壳背视图)
2 . 大屏幕信号为电流环或RS232 信号,以二进制码串行输出,波特率为600 。每一帧数据有11 个位,1 个起始位(0)、8 个数据位(低位在前 )、1 个标志位、1 个停止位(1)。
3. 每隔100ms 发送一组数据,每组数据包含3 帧数据, 其意义见图(2-6)。 5
X K 3 1 9 0 – A 9
第一帧数据:标志位为0 图第三帧波形图
X : D0、D1、D2 -- 为小数点位置( 0~4 )
Y : D3 — 为重量符号( 1-负、0-正 )
D4 — 备用
G 18~G16:为重量数据
第二帧数据:标志位为0
G15~G8: 为重量数据
第三帧数据:标志位为1
G7~G0 : 为重量数据
G0~G18: 由低到高构成重量(净重)的19 位二进制码
五. 串行通讯接口与仪表的联接和使用
▲!通讯接口输出引线与计算机联接必须准确无误,倘若联接错误,将损坏仪表输出端口或计算机通讯输入端口,甚至严重损坏仪表和计算机及相应的外部设备。
▲!进行计算机通讯须具备必要的计算机技术和程序编制能力,须由专业技术人员参与或指导。非专业人员请不要随意联接。
XK3190-A9 仪表具有RS232 串行通讯接口,可与计算机进行通讯。
1. 通讯接口采用15 芯插头座(与大屏幕共用),其引脚定义见图2--5 中6、7、8 脚。
2. 通讯接口采用RS232C,所有数据均为ASCII 码,每组数据有10 位组成,第1 位为起始位,第10位为停止位,中间8 位为数据位。通讯方式分为:
(1). 连续方式:
所传送的数据为仪表显示的当前称量(毛重或净重)。每帧数据由12 组数据组成 。格式如下:
第X 字节
内 容 及 注 解
1
02(XON) 开始
2
+或- 符号位
3
称量数据 高位

称量数据 :

称量数据 :
8
称量数据 低位
9
小数点位数 从右到左(0~4)
10
异或校验 高四位
11
异或校验 低四位
12
03(X0FF) 结束
异或=2⊕3⊕……8⊕9
6
X K 3 1 9 0 – A 9
(2). 指令方式:
仪表按上位机所发送的指令,输出相应的数据,上位机每发一次指令,仪表就相应
地输出一帧数据。上位机发送指令:
第X 字节
内 容 及 注 解
1
02(XON) 开始
2
A~Z 地址编号
A~E 命令A:握手
命令B:读毛重
命令C:读皮重
3
命令D:读净重
4
异或校验 高四位
5
异或校验 低四位
6
03(X0FF) 结束
异或=2⊕3
仪表输出内容:
第X 字节
内 容 及 注 解
1
02(XON) 开始
2
A~Z 地址编号
A~E 命令A:握手
命令B:送毛重
命令C:送皮重
3
命令D:送净重
4
按命令内容输出相应数据

按命令内容输出相应数据
n-1
按命令内容输出相应数据
n
按命令内容输出相应数据
n+1
异或校验 高四位
n+2
异或校验 低四位
n+3
03(X0FF) 结束
异或=2⊕3⊕……( n-1 ) ⊕n
仪表输出时4~n 的内容如下:
命令A
无数据
每帧由6 组数据组成
为毛重,格式:
a: 符号(+或-)
b: 毛重值 ( 6 位)
: (自高到低)
g
命令B
h: 小数点从右到左( 0~4)
每帧由14 组数据组成
7
X K 3 1 9 0 – A 9
为皮重,格式:
a: 符号(+或-)
b: 皮重值 ( 6 位)
: (自高到低)
g
命令C
h: 小数点从右到左( 0~4)
每帧由14 组数据组成
为净重,格式:
a: 符号(+或-)
b: 净重值 ( 6 位 )
: (自高到低)
g
命令D
h: 小数点从右到左( 0~4)
每帧由14 组数据组成
注1:异或校验高、低4 位的确定:异或和高、低4 位如果小于、等于9,则加上30h,成为
ASCII 码数字发送,例如:异或校验高4 位为6,加30h 后,为36h 即ASCII 码的6 发送;异或和高、低4 位如果大于9,则加上37h,成为ASCII 码字母发送,例如:异或校验高4 位为B,加37h 后,为42h 即ASCII 码的B 发送。
3. 仪表通讯参数的设置:
(1). 通讯参数
通讯参数由通讯地址、波特率、通讯方式三组参数组成。
(2). 参数的设置顺序如下:
按图 2 -3 所示,接好传感器,使显示器进入正常工作状态。仪表背面的15 芯插座上,插上专用设置头( 即出厂时,配件中有一个15 芯的插头,它的14 和15 脚是短接的),此时按下表所示的操作步骤进行设置:
通讯参数设置步骤:
步骤
操 作
显 示
注 解
1
按[功能]
插上标定头后
2
按[输入]
[ E ** ]
非通讯设置参数,不要改变。按[输入]进入下一步骤
3
按[输入]
[ dc * ]
非通讯设置参数,不要改变。
按[输入]进入下一步骤
4
按[输入]
[ Pon ***]
非通讯设置参数,不要改变。
按[输入]进入下一步骤
5
按[输入]
[ F ***** ]
非通讯设置参数,不要改变。
按[输入]进入下一步骤
6
按[1]
按[输入]
[ Ad r ** ]
[ Ad r 01]
通讯地址( 01~26 )
例如:1
8
X K 3 1 9 0 – A 9
步骤
操 作
显 示
注 解
7
按[1]
按[输入]
[ b t * ]
[ b t 1]
串行通讯的波特率( 0~4 ) 分别表示
波特率为:600、1200、2400、
4800、9600
例如:1
8
按[0]
按[输入]
[ t F * ]
[ t F 0 ]
串行通讯方式:
0--连续发送方式,不接收
1--指令应答方式
例如:0
10
称重状态
通讯参数设置结束
( 请注意注解说明,不要随意更改其他参数的设置)



我写的代码:
Public set1 As String
Private Sub Command1_Click()
'打开通信端口,把字符通过串口发送出去
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
MSComm1.Output = Trim(Text1.Text)
End Sub

Private Sub Command2_Click()
Dim buf$
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True

Timer1.Enabled = False
buf = Trim(MSComm1.Input) '将缓冲区内的数据读入到buf变量中
If Len(buf) = 0 Then '判断缓冲区是否存在数据
Text2.Text = ""
Else
' Label3.Caption = MSComm1.RThreshold '设置并返回缓冲区可接收的字符数.
Text2.Text = buf

End If

Else

Timer1.Enabled = False
buf = Trim(MSComm1.Input) '将缓冲区内的数据读入到buf变量中
If Len(buf) = 0 Then '判断缓冲区是否存在数据
Text2.Text = ""
Else
' Label3.Caption = MSComm1.RThreshold '设置并返回缓冲区可接收的字符数.
Text2.Text = buf

End If
End If
End Sub

Private Sub Command3_Click()
Timer1.Enabled = True '启用自动定时器
End Sub

Private Sub Command4_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub

Private Sub Command5_Click()
Form2.Show
End Sub

Private Sub Form_Load()
On Error Resume Next

'///////////////////////////////////////打开设置文件
Dim Fname As String
Fname = App.Path & "\file\set.txt"

If Dir(Fname) = "" Then
MsgBox "数据配置文件丢失,请检查配置文件!"
Else
Open Fname For Input As #1
Do Until EOF(1)

Line Input #1, nextline
If nextline <> "" Then
set1 = nextline
End If
Loop
Close #1
End If
'///////////////////////////////////////进行参数设置
MSComm1.CommPort = 1 '设置通信端口为com1
MSComm1.Settings = "& set1 &" '设置串口参数
MSComm1.RThreshold = 1

MSComm1.InputMode = comInputModeText '接收文本型数据
End Sub

Private Sub MSComm1_OnComm()
Label3.Caption = "接受到:" & MSComm1.InBufferSize
End Sub

Private Sub Timer1_Timer()
'定时周期性地从输入缓冲区读取字符
If MSComm1.InBufferCount > 0 Then
Text2.Text = Text2.Text + vbCrLf + MSComm1.Input
End If
End Sub
...全文
765 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CathySun118 2008-06-20
  • 打赏
  • 举报
回复
有什么问题?.........
wxl84911 2008-06-20
  • 打赏
  • 举报
回复
我不知怎样向地磅发送指令.???


下面是资料:(2). 指令方式:
仪表按上位机所发送的指令,输出相应的数据,上位机每发一次指令,仪表就相应
地输出一帧数据。上位机发送指令:
第X 字节
内 容 及 注 解
1
02(XON) 开始
2
A~Z 地址编号
A~E 命令A:握手
命令B:读毛重
命令C:读皮重
3
命令D:读净重
4
异或校验 高四位
5
异或校验 低四位
6
03(X0FF) 结束
异或=2⊕3
仪表输出内容:
第X 字节
内 容 及 注 解
1
02(XON) 开始
2
A~Z 地址编号
A~E 命令A:握手
命令B:送毛重
命令C:送皮重
3
命令D:送净重
4
按命令内容输出相应数据

按命令内容输出相应数据
n-1
按命令内容输出相应数据
n
按命令内容输出相应数据
n+1
异或校验 高四位
n+2
异或校验 低四位
n+3
03(X0FF) 结束
异或=2⊕3⊕……( n-1 ) ⊕n
仪表输出时4~n 的内容如下:
命令A
无数据
每帧由6 组数据组成
为毛重,格式:
a: 符号(+或-)
b: 毛重值 ( 6 位)
: (自高到低)
g
命令B
h: 小数点从右到左( 0~4)
每帧由14 组数据组成
7
X K 3 1 9 0 – A 9
为皮重,格式:
a: 符号(+或-)
b: 皮重值 ( 6 位)
: (自高到低)
g
命令C
h: 小数点从右到左( 0~4)
每帧由14 组数据组成
为净重,格式:
a: 符号(+或-)
b: 净重值 ( 6 位 )
: (自高到低)
g
命令D
h: 小数点从右到左( 0~4)
每帧由14 组数据组成
注1:异或校验高、低4 位的确定:异或和高、低4 位如果小于、等于9,则加上30h,成为
ASCII 码数字发送,例如:异或校验高4 位为6,加30h 后,为36h 即ASCII 码的6 发送;异或和高、低4 位如果大于9,则加上37h,成为ASCII 码字母发送,例如:异或校验高4 位为B,加37h 后,为42h 即ASCII 码的B 发送。

863

社区成员

发帖
与我相关
我的任务
社区描述
VB COM/DCOM/COM+
c++ 技术论坛(原bbs)
社区管理员
  • COM/DCOM/COM+社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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