0

ビットレートが間違っているため、通信ポートに接続するとテキストボックスにジャンク値が表示されます。正しいビットレートを特定するにはどうすればよいですか? VB6 を使用して、マイクロ コントローラーが接続されている通信ポートからデータを取得しています。

ここでは、19200 のビットレートでデータを受信するためのコードを記述しました。ジャンク値を回避する方法を知りたかっただけですが、マイクロコントローラーのビットレートは 19200 のようです

Private Sub Command1_Click()
  If (MSComm1.PortOpen = False) Then  opening port
    MSComm1.PortOpen = True
  End If
  Command1.Enabled = False
  Command2.Enabled = True
End Sub

Private Sub Command2_Click()
  If (MSComm1.PortOpen = True) Then
    MSComm1.PortOpen = False
  End If
  Command1.Enabled = True
  Command2.Enabled = False
End Sub

Private Sub Form_Load()
  With MSComm1
    .CommPort = 1            
    .RThreshold = 1
    .RTSEnable = True
    .Settings = "19200,N,8,1"  
    .InputLen = 1000
    .SThreshold = 1  
    .PortOpen = True
  End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
  If (MSComm1.PortOpen = True) Then
    MSComm1.PortOpen = False
  End If
End Sub

Private Sub MSComm1_OnComm()
Dim Buffer As String

  Select Case MSComm1.CommEvent    
    Case comEvReceive
      Text1.Text = " "
      Buffer = MSComm1.Input
      Text1.Text = Text1.Text & Buffer
  End Select
End Sub
4

2 に答える 2

1

簡単に言うと、コントローラが使用しているビット レート、ストップ ビット、およびパリティ設定を知る必要があります。これは、考えられるすべての順列をループして試行錯誤することで実行できますが、コントローラー ソフトウェアのベンダーに連絡して尋ねる方が早いでしょう。

ただし、最初は 9600,8,N,1 を試してみます。

于 2013-04-09T08:10:20.090 に答える
0
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
If (MSComm1.PortOpen = False) Then
MSComm1.PortOpen = True
End If
Command1.Enabled = False
Command2.Enabled = True
End Sub

Private Sub Command2_Click()
If (MSComm1.PortOpen = True) Then
MSComm1.PortOpen = False
End If
Command1.Enabled = True
Command2.Enabled = False
End Sub

Private Sub Command3_Click()
Text1.Text = " "
End Sub

Private Sub Form_Load()

MSComm1.CommPort = 1
  MSComm1.Settings = "9600,N,8,1"
  MSComm1.DTREnable = True
  MSComm1.Handshaking = comRTS
  MSComm1.InBufferSize = 1
  MSComm1.RThreshold = MSComm1.InBufferSize
  MSComm1.RTSEnable = True
  MSComm1.InputLen = 1
  MSComm1.InputMode = comInputModeText
  MSComm1.NullDiscard = True
  MSComm1.OutBufferSize = 0
  MSComm1.SThreshold = MSComm1.OutBufferSize

  MSComm1.PortOpen = True

End Sub

Private Sub Form_Unload(Cancel As Integer)
If (MSComm1.PortOpen = True) Then
MSComm1.PortOpen = False
End If
End Sub

Private Sub MSComm1_OnComm()
Dim Buffer As String

Select Case MSComm1.CommEvent
Case comEvReceive

Text1.Text = " "
Buffer = MSComm1.Input
Text1.Text = Text1.Text & Buffer
End Select
End Sub
于 2013-04-17T04:13:47.577 に答える