| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > MSComm и Com-порт |
| Автор: polundra 15.5.2008, 13:18 |
| VS-2005. Делаю ввод данных с Com-порта, используя MSComm: Dim MSComm1 As MSComm Dim Buffer As String Dim Today MSComm1 = New MSComm MSComm1.CommPort = 1 MSComm1.Settings = "38400,N,8,1" MSComm1.InputLen = 0 ' Открытие последовательного порта. MSComm1.PortOpen = True Buffer = "" Do Do S = S & MSComm1.Input Loop Until InStr(S, vbCrLf) Console.WriteLine(S) ' Вывод данных Loop Until False MSComm1.PortOpen = False Как сделать, чтобы по нажатию клавиши ввод из порта можно было остановить? |
| Автор: polundra 22.5.2008, 14:32 |
| Продолжаю вопросы по теме: 1) Как осуществить чтение данных из Com-порта, пока определенный символ на придет (MS-Comm или еще как) ? 2) Как организовать "вечный" цикл, выход из которого по нажатию Buttona будет происходить? |
| Автор: polundra 28.5.2008, 14:45 |
| Сделал примерно желаемое. По нажатию Button1 начинает читать из порта, по нажатию Button2 - перестает Imports System Imports System.IO.Ports Imports System.Threading Public Class Form1 Dim _continue As Boolean Dim _serialPort As SerialPort Dim message As String Const Wrap = Chr(13) & Chr(10) Private readThread As Thread Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = False End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click _continue = True readThread = New Thread(AddressOf Read) readThread.IsBackground = True readThread.Start() End Sub Public Sub Read() _serialPort = New SerialPort() _serialPort.BaudRate = 38400 _serialPort.ReadTimeout = 50000 _serialPort.Open() FileOpen(2, "test", OpenMode.Output) While (_continue) Try message = _serialPort.ReadLine() Console.WriteLine(message) Print(2, message + Wrap) Catch ex As ObjectDisposedException End Try Thread.Sleep(100) End While _serialPort.Close() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click _continue = False End Sub End Class |