8255842
级别: 探索解密
精华主题: 0
发帖数量: 3 个
工控威望: 122 点
下载积分: 497 分
在线时间: 19(小时)
注册时间: 2013-01-20
最后登录: 2024-04-29
查看8255842的 主题 / 回贴
楼主  发表于: 2013-04-10 20:51
关于VB的MSComm串口接收两次,Time事件 10分



如下:(1)和(2)单独用按钮命令可以正常执行..用Timer1执行1和Timer2执行2,收回来的数据就很乱..把(1)(2)都写到Timer1下面下,收回来的数据也乱..是不是输入输出缓冲区两个混乱

Private Sub Timer1_Timer() '时钟事件,间隔设定Interval毫秒就执行一次

(1)DIM SENTDATA AS STRING,,Dim getdata
MSComm1.InBufferCount = 0 '清空接收缓冲区
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.Output = 读取数据指令
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 20 'PLC应该返回8个字符 固定的4+2*N
'一个起始符+一个寄存器(有两个字节)(每个字节=2字符)+一个结束符+两个校验和
getdata = MSComm1.Input
Text1.Text = getdata ''返回的低字节在前,高在后

(2)Dim sendat As String,,Dim getdat
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.Output =读取数据指令
Do
DoEvents
Loop Until MSComm1.InBufferCount >= 8
getdat = MSComm1.Input
Text4.Text = getdat ''返回的低字节在前,高在后
oyiwiw
级别: 略有小成
精华主题: 0
发帖数量: 113 个
工控威望: 267 点
下载积分: 555 分
在线时间: 81(小时)
注册时间: 2007-10-21
最后登录: 2024-06-03
查看oyiwiw的 主题 / 回贴
1楼  发表于: 2013-04-14 15:57
在电脑上装上三菱的MX C0MPEMT软件,在VB中找到相应的控件来做通讯非常方便,可以批量读取PLC的M、X、Y的状态,也可以直接将数值写入到PLC的数据寄存器里。