Связь через последовательный порт VBA - PullRequest
1 голос
/ 26 мая 2020

Мне поручено открыть, написать, прочитать ответ, а затем закрыть com-порт. Итак, по порядку

  • Открыть Com Port 1, скорость передачи данных 9600 8, N, 1 или 8 нет и 1

  • Записать строку в инструмент "#AddressReading" + символ возврата

  • Дождитесь и постепенно прочтите ответ

  • Закройте com-порт, чтобы использовать его снова в паре of mintues

Я использую 32-битную ОС Win и пробовал несколько разных методов -

https://gist.github.com/heiswayi/f47dfd8dc38955322bef

, что включает в себя интеграцию win32.dll, и я не смог понять, как вызвать win32 в VBA excel

Как лучше всего получить доступ к последовательному порту из VBA ?

это просто приводило к тому, что excel вызывал sh каждый раз, когда я пытался изменить и запустить код ... снова не уверен, связано ли это с функцией сна или нет.

Другой вещью, которую я обнаружил, была связка SDK, позволяющая сэкономить средства на моих бюджетных библиотеках для последовательной связи VBA.

1 Ответ

2 голосов
/ 26 мая 2020

Аналогично Считать из последовательного порта в Excel Я изменил его, чтобы ответить на этот вопрос.

Private Sub CommandButton1_Click()
Open "COM1:9600,N,8,1,X" For Binary Access Read Write As #1   'Opens Com Port with Baud rate and bit settings
 Cmnd = "#AddressReading" + Chr(13)    'Message assembled to be sent to device on serial port
 Put #1, , Cmnd                'Sends assembled message
  answer = ""                  'clear response string
  char = Input(1, #1)          'get first character
  While (char <> Chr(13))      'loop until [CR]
    If (char > Chr(31)) Then
      answer = answer + char   'add, if printable char
    Else
      ' Do what ever you like
    End If
    char = Input(1, #1)        'get the next character
  Wend
  Close #1
 Range("C2").Value = answer    'places response in desired cell
End Sub
...