powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Дать выполниться другим процессам
8 сообщений из 8, страница 1 из 1
Дать выполниться другим процессам
    #39428855
напомните, пожалуйста, какую строчку нужно прописать в бесконечном цикле в vb.net, чтобы дать другим процессам компьютера тоже выполниться, а не заставлять комп виснуть. помню, какая-то одна волшебная строчка...
...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39428904
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
DoEvents()
...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39428918
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтарыйДругBelowZero,
так в vb.net есть асинхронные методы.
...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39429028
Akina
Код: vbnet
1.
DoEvents()

да, оно, спс)
vb_subв vb.net есть асинхронные методы какие? у меня задача считывать инфу с виртуального com-porta. скорость 9600.таймер меньше 1 мс не ставится, а если в цикле брать данные с com-порта, то весь комп виснет
...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39429059
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтарыйДругBelowZero,
Async/Await как один из примеров
что значит виснет комп? Интерфейс фризится или все процессоры на всю загружаются и всю память съедают?
...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39429963
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot СтарыйДругBelowZero]Akinaкакие? у меня задача считывать инфу с виртуального com-porta. скорость 9600.таймер меньше 1 мс не ставится, а если в цикле брать данные с com-порта, то весь комп виснет

Вы что - порт постоянно опрашиваете что ли? А на фиг оно надо? С СOM работал еще в VB6 - все прекрасно работает по событию OnComm. В NET смотрите тоже события порта...
...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39431044
AndrF,

я такой код написал. вроде работает. неправильно что-то делаю?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
Imports System.IO.Ports
Public Class Form1
    Dim simvol As Integer
    Dim com1 As IO.Ports.SerialPort = Nothing
    Function ReceiveSerialData() As Integer
        Dim simvol2 As Integer
        simvol2 = com1.ReadByte()
        Return simvol2
    End Function
    Sub GetSerialPortNames()
        For Each sp As String In My.Computer.Ports.SerialPortNames
            ListBox1.Items.Add(sp)
        Next
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        TextBox1.Multiline = True
        TextBox1.ScrollBars = ScrollBars.Vertical
        TextBox1.WordWrap = True

        GetSerialPortNames()
    End Sub

    Sub openuart(poort As String)
        com1 = My.Computer.Ports.OpenSerialPort(poort)
        With com1
            com1.BaudRate = 9600
            com1.Parity = IO.Ports.Parity.None
            com1.DataBits = 8
            com1.StopBits = IO.Ports.StopBits.One
            com1.ReadTimeout = 3000
        End With
        If com1.IsOpen Then Label1.Text = "Порт открыт" Else Label1.Text = "Порт заблокирован. Возможно, открыт в другой программе"
    End Sub

    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
        Dim cursoor As Long
        openuart(ListBox1.SelectedItem)
        Do
            simvol = ReceiveSerialData()


            If simvol = Nothing Then
            Else
                cursoor = TextBox1.SelectionStart
                If CheckBox1.Checked = True Then
                    TextBox1.Text &= Str(simvol)
                Else
                    TextBox1.Text &= CStr(CChar(CStr(simvol)))
                End If
                TextBox1.SelectionStart = cursoor
            End If
            Application.DoEvents()
        Loop
    End Sub

...
Рейтинг: 0 / 0
Дать выполниться другим процессам
    #39431848
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СтарыйДругBelowZero,

Я же написал выше - вам надо просто убрать цикл постоянно опрашивающий порт. Работайте с событиями порта.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Дать выполниться другим процессам
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]