2013-04-09 4 views
0

Я получаю ненужные значения в текстовом поле при подключении к порту связи, потому что мой битрейт неправильный, тогда как я могу определить правильную скорость передачи битов? Я использую VB6 для получения данных из коммуникационного порта, к которому подключен микроконтроллер.данные мусора, полученные в текстовом поле с использованием comm port

Здесь я написал код для получения данных с битрейтом 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 

ответ

1

очень просто вам нужно будет знать, что битрейт, стоп-биты и настройки контроллер использует четность. Вы можете сделать это путем проб и ошибок, перейдя по всем возможным перестановкам), но было бы быстрее связаться с продавцом программного обеспечения контроллера и спросить их.

Однако я бы попробовал 9600,8, N, 1 для начала.

+0

Если я использую пробную версию и ошибку, что я должен делать, чтобы изменить самые – user1963933

+0

, должен ли я изменить inputlen тоже? – user1963933

+0

@ user1963933 Скорость передачи может варьироваться. Большинство устройств используют 8, N, 1. InputLen не влияет на целостность полученных данных и ограничивает только то, сколько вы получаете в каждой форме чтения. – Deanna

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 

 Смежные вопросы

  • Нет связанных вопросов^_^