您现在所在的是:

西门子SIEMENS

回帖:0个,阅读:1331 [上一页] [1] [下一页]
975
bbshzy
文章数:9
年度积分:50
历史总积分:975
注册时间:2008/2/27
发站内信
发表于:2008/5/28 13:24:00
#0楼
哪位高人帮忙下,谢谢!程序如下。
主要是为了实现VB6.0与S7-200之间的通信。
(1)窜口及通信参数初始化

Dim rcvlenth                         '定义模块级变量——接收字符的数组下标
Dim rcv() As Byte                    '定义接收字符的动态数组
Private Sub From_Load()              
With MSComm1
.CommPort=2                          '根据用户具体情况选择串口,在此使用串口2                          
.Settings="9600,n,8,1"              '9.6k/s,无校验,8位数据位,1位停止位
.InputMode=comInputModeBinary        '以二进制格式读取接收缓冲区
.RThreshold=1                          '接收到的字符数大于等于1就会产生接收事件
.Inputlen=0                             '读出接收缓冲区中的所有内容
.OutBufferCount=0                    '清空发送缓冲区
.InBufferCount=0                      '清空接收缓冲区
End With
If Not MSCcomm1.PortOpen Then        '打开串口2
  MSComm1.PortOpen=True
End If
End Sub

(2)发送程序

Private SUB Command1_Click()         '点击界面中的[发送]按钮时执行发送程序
rcvlenth=-1                          '置接收字符的数组下标初值
sdata=Array(1,2,3)                   '待发送数据为1、2、3,可以修改其个数和内容
Dim nByte()As Byte                  
ReDim nByte(UBound(sdata)+4) As Byte '定义发送报文数组
nByte(0)=0                           '送起始字符
nByte(1)=UBound(sdata)+1             '送数据区字节数
fcs=nByte(1)                         '校验码初始化
For i =2 To UBound(sdata)+2
  nByte(i)=sdata(i-2)               '待发送数据报文数组的数据区
  fcs =fcs Xor nByte(i)             '异或运算,求校验码
Next
nByte(i)=fcs                         '送校验码
nByte(i+1)=&HFF                      '送结束字节
MSComm1.Output=nByte                 '发送报文
End Sub

(3)接收程序

Private Sub  MSComm1_OnComm()        'OnComm事件
Dim rcvtemp() As Byte                '定义存放每次接收的数据的暂存数组
ReDim Preserve rcv(100) As Byte      '预设接收字符的数组rcv(最大101字节)
Text1=""                             '清除文本框
Select Case  MSComm1.CommEvent
Case comEvReceive                    '如果接收到字符
rcvtemp=MSComm1.Input                '将接收缓冲区的内容放入暂存数组rcvtemp
For i=LBound(rcvtemp) To UBound(rcvtemp)
 rcvlenth=rcvlenth+1
 rcv(rcvlenth)=rcvtemp(i)           '将接收到的各字节放入接收字节数组rcv
Next i
ReDim Preserve rcv(rcvlenth) As Byte '得到接收字节数组的实际大小
End Select
For i =LBound(rcv) To UBound(rcv)
 Text1="Text1 & Str $ (rcv(i))"      '在文本框Text1中显示接收到的数据
Next
End Sub

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

46.8003