Как организовать непрерывный опрос Com-порта? - Visual Basic .NET
Формулировка задачи:
Всем здравствуйте.
Приведенный ниже код работает так: кликнули по кнопке - отправили в порт набор байт, кликнули по другой - получили ответ.
Нужно чтобы каждую секунду запрос в порт посылался, и ответ возвращался с отображением на форме.
Пример взят из книги Архангельского (Delphi). На всякий случай прикрепляю проект.
Листинг программы
- Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
- 'запись сообщения в порт
- Dim n As Integer
- Dim s As String = Format(Now, "hh:mm:ss") 'Это передаваемый текст
- Dim SPnt As IntPtr = Marshal.StringToCoTaskMemAnsi(s)
- FlushFileBuffers(portHandle) 'очищаем буфер порта
- WriteFile(portHandle, SPnt, Len(s), n, lpOVERLAPPED)
- If GetLastError <> ERROR_IO_PENDING Then
- MsgBox("Ошибка")
- Else
- Timer1.Start()
- End If
- End Sub
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- Dim n As Integer
- If GetOverlappedResult(portHandle, lpOVERLAPPED, n, False) Then
- Label3.Text = "Получены/переданы новые данные - " & n.ToString & " байт"
- Dim V As New System.Text.UTF8Encoding()
- Label4.Text = V.GetString(buf)
- Timer1.Stop()
- Else
- Label3.Text = "Новых данных нет"
- End If
- End Sub
- Private Sub btnReceived_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReceived.Click
- 'чтение сообщения из порта
- Dim n As Integer
- Dim mPnt As IntPtr = GCHandle.Alloc(buf, GCHandleType.Pinned).AddrOfPinnedObject()
- FlushFileBuffers(portHandle) 'очищаем буфер порта
- ReadFile(portHandle, mPnt, 128, n, lpOVERLAPPED)
- 'проверяем отсутствие ошибки
- If GetLastError <> ERROR_IO_PENDING Then
- MsgBox("Ошибка")
- Else
- Timer1.Start()
- End If
- End Sub
Решение задачи: «Как организовать непрерывный опрос Com-порта?»
textual
Листинг программы
- Dim comBuffer As Byte() = New Byte(n - 1) {}
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д