我再进行通讯读取操作时,只要超过2个DM字以上都只读出9位数据,比如我读取以DM1000位起始位,想要读出连续的3位DM1000,DM1001,DM1002。在文本框内显示的却是4F2D 2C12 6 这9位数据。PLC内部显示的是 4F2D 2C12 648B。我想要文本框内显示值是这样的,无论我读多少个字都可以显示出来,求哪位高手帮忙。谢谢了。Option Explicit
Dim tim As Integer
Dim fcdd$
Dim Time_out As String
Dim ERROR_COM As Boolean
Dim Instring As String
Dim endcode As String
Dim Lengh As Integer
Dim order1 As String
Dim outstring As String
Dim B As String
Dim C As StringPublic Sub Iput()
Dim A As Integer
MSComm1.InBufferCount = 0
  A = Int(C)
  C = String(4 - Len(CStr(A)), "0") & A
End SubPublic Sub Oput()
outstring = outstring + fcdd$ + "*" + Chr$(13)
    MSComm1.Output = outstring
    Time_out = tim
    
  
    Do
      If tim > (Time_out + 1) Then
        ERROR_COM = True
      Else
        ERROR_COM = False
      End If
        DoEvents
    Loop Until ((MSComm1.InBufferCount >= 11 + 4 * Lengh) Or (ERROR_COM = True))
    
    Instring = MSComm1.Input
    order1 = Mid(Instring, 6, 2)
    Call ErrMessage(order1)
      
    End Sub
Public Sub INIT_comm()
  
  Dim Instring, outstring As String
    MSComm1.CommPort = 1
    
    MSComm1.Settings = "9600,e,7,2"
    MSComm1.InBufferSize = 0
   MSComm1.RThreshold = 1
        MSComm1.InBufferCount = 0
    MSComm1.InputLen = 0
    
   
    MSComm1.PortOpen = True
End SubPublic Function ErrMessage(ByVal X As String)
  Select Case X
    Case "13"
      MsgBox "校验错误"
    Case "14"
      MsgBox "格式错误"
    Case "15"
      MsgBox "入口码错误"
    Case "18"
      MsgBox "帧长度错误"
    Case "A3"
      MsgBox "传送数据时因FCS错误引起终止"
    Case "A8"
      MsgBox "传送数据时因长度错误引起在终止"
  End Select
End FunctionFunction XORR(ByVal STRI As String) As String  '校验码的异或处理
Dim I, J, K As Integer
J = Len(STRI)
K = 0
For I = 1 To J
  K = Asc(Mid$(STRI, I, 1)) Xor K
Next I
fcdd$ = Hex$(K)
If Len(fcdd$) = 1 Then
  XORR = "0" & fcdd$
Else
  XORR = fcdd$
End If
End Function
Private Sub CmdMonitor_Click()
MSComm1.InBufferCount = 0
outstring = "@" + "00" + "SC" + "02"
    fcdd$ = XORR(outstring)
    Call Oput
End SubPrivate Sub CmdRD_Click()
Dim outstring As String
Dim C As String
Dim A As Integer
Dim B As String
Dim D As Integer
Dim R, S, Lng As String
Dim T As Long  MSComm1.InBufferCount = 0 'clear off  inbuffer
  C = Text1.Text
  B = Text4.Text
  A = Int(C)
  D = Int(B)
  C = String(4 - Len(CStr(A)), "0") & A
  B = String(4 - Len(CStr(D)), "0") & D
    outstring = "@" + "00" + "RD" + C + B
    fcdd$ = XORR(outstring)
 outstring = outstring + fcdd$ + "*" + Chr$(13)
    MSComm1.Output = outstring
    Time_out = tim
    
  '判断通讯错误
    Do
      If tim > (Time_out + 1) Then
        ERROR_COM = True
      Else
        ERROR_COM = False
      End If
        DoEvents
    Loop Until ((MSComm1.InBufferCount >= 11 + 4 * Lengh) Or (ERROR_COM = True))
    
    Instring = MSComm1.Input
    
    
    order1 = Mid(Instring, 6, 2)  '结束码
    Call ErrMessage(order1)
      R = Mid(Instring, 8, 4 * B)
     
S = Left$(R, 4)
    For T = 1 To B - 1
       S = S & " " & Mid$(R, T * 4 + 1, 4)
    Next T
    
    Text2.Text = SEnd SubPrivate Sub CmdWD_Click()
Dim A As Integer
MSComm1.InBufferCount = 0 'clear off  inbuffer
  C = Text1.Text
  A = Int(C)
  C = String(4 - Len(CStr(A)), "0") & A
outstring = "@" + "00" + "WD" + C + Text3.Text
fcdd$ = XORR(outstring)
outstring = outstring + fcdd$ + "*" + Chr$(13)
    MSComm1.Output = outstring
    Time_out = tim
    
  '判断通讯错误
    Do
      If tim > (Time_out + 1) Then
        ERROR_COM = True
      Else
        ERROR_COM = False
      End If
        DoEvents
    Loop Until ((MSComm1.InBufferCount >= 11 + 4 * Lengh) Or (ERROR_COM = True))
    
    Instring = MSComm1.Input
    order1 = Mid(Instring, 6, 2)  '结束码
    Call ErrMessage(order1)
End SubPrivate Sub CmdPro_Click()
 MSComm1.InBufferCount = 0    outstring = "@" + "00" + "SC" + "00"
    fcdd$ = XORR(outstring)
 Call Oput
End Sub
Private Sub CmdRun_Click()
 MSComm1.InBufferCount = 0
outstring = "@" + "00" + "SC" + "03"
 fcdd$ = XORR(outstring)
 Call Oput
End Sub
Private Sub Form_Load()
Dim tim As Date
tim = 0
Call INIT_comm
End SubPrivate Sub ComEnd_Click()
Dim response
response = MsgBox("是否退出系统?", vbOKCancel + vbQuestion, "退出")
If response = 1 Then
End
End If
End Sub