Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
1

Программа для связи с устройством через СОМ порт.Фиаско(

11.10.2017, 11:11. Показов 4595. Ответов 33

Author24 — интернет-сервис помощи студентам
Друзья, всем добрый день. Решил написать программу для передачи и приема данных через СОМ порт. Писал всё с нуля не зная ни языка ни среды разработки. В итоге сделал небольшую программу, которая подключается к СОМ порту передает и принимает определенные пакеты данных по UART. Все было хорошо, программа работала и с терминальной программой через виртуальные СОМ порты и в симуляторе PROTEUS, передавало и принимало все правильно и то что нужно...пока не решил опробовать обмен данных с железом. Итак, подключил к компу Arduino, который использовал чисто как переходник USB-UART, настроил нужную скорость и количество байт данных. Для уверенности закольцевал RX и TX Arduino, послал данные через терминал, все отправляется и передается как надо. Подключаю свое устройство к UART, посылаю в него пакет из обычного терминала, все в порядке, прием и отправка работают как надо, все совпадает. Теперь запускаю свою написанную программу, нажимаю кнопку соединения ииии.... ничего не происходит((((
Чего я только не пробовал, и менял кодировку в свойстве SerialPort.Encoding, и задавал различные величины для SerialPort.WriteTimeout/ReadTimeout, и делал задержку в процедуре отправки и приема байт. Самое интересное, что с устройства данные приходят, это я понял, когда в PROTEUS подключил симулятор терминала в режиме прослушки. И я так понял, что пакет до устройства доходит, и с него же приходит, но в моей программе по каким-то причинам не срабатывает событие SerialPot_DataReceived. Может кто-нибудь подскажет, в какую сторону копать??? Прилагаю файлы проекта целиком в архиве. Ну и код для кучи сюда выложу.

VB.NET
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
Imports System
Imports System.Threading
Imports System.IO.Ports
Imports System.ComponentModel
 
Public Class Form1
 
    Dim myPort As Array
    Dim A As UInteger
    Dim DataGridViewTextBoxCell1 = New DataGridViewTextBoxCell()
    Delegate Sub SetTextCallBack(ByVal Text As String)
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
        SerialPort1 = New SerialPort()
        myPort = SerialPort.GetPortNames()
        PortBox.Items.AddRange(myPort)
        DisconnBtn.Enabled = False
        Read_writeBtn.Enabled = False
        DataGridView1.RowCount = 100
 
    End Sub
 
    Private Sub Connect_Click(sender As Object, e As EventArgs) Handles ConnectBtn.Click
 
        ' Dim SerialCond As Boolean
 
        If PortBox.Text = Nothing Then
            MsgBox("Выберите COM порт", vbExclamation)
            GoTo Back
        End If
 
        SerialPort1.Encoding = System.Text.Encoding.GetEncoding("Windows-1251")
        SerialPort1.PortName = PortBox.Text
        SerialPort1.BaudRate = 38400
        SerialPort1.DataBits = 8
        SerialPort1.Parity = Parity.None
        SerialPort1.StopBits = StopBits.One
        SerialPort1.ReadBufferSize = 24
        SerialPort1.WriteBufferSize = 24
        SerialPort1.DiscardNull = False
 
        Try
            SerialPort1.Open()
 
        Catch ex As Exception
 
            MsgBox("COM порт занят", vbCritical)
            GoTo Back
 
        End Try
 
        ConnectBtn.Enabled = False
        DisconnBtn.Enabled = True
        Rescan.Enabled = False
        PortBox.Enabled = False
        Read_writeBtn.Enabled = True
 
        Dim TestArr() As Byte = {&H1, &HFF, &H0, &H80, &H0, &HFF, &HFF, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &H0, &HFF}
 
        RichTextBox1.Text = 0
        SerialPort1.DiscardOutBuffer()
        SerialPort1.DiscardInBuffer()
        SerialPort1.Write(TestArr, 0, 24)
        Timer1.Start()
 
Back: End Sub
 
    Private Sub DisconnBtn_Click(sender As Object, e As EventArgs) Handles DisconnBtn.Click
 
        SerialPort1.Close()
 
        ConnectBtn.Enabled = True
        DisconnBtn.Enabled = False
        Rescan.Enabled = True
        PortBox.Enabled = True
        Read_writeBtn.Enabled = False
 
    End Sub
 
    Private Sub Rescan_Click(sender As Object, e As EventArgs) Handles Rescan.Click
 
        PortBox.Items.Clear()
        myPort = SerialPort.GetPortNames()
        PortBox.Items.AddRange(myPort)
 
    End Sub
 
    Private Sub SerialPort1_DataReceived_1(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
 
        Dim Buf(23) As Char
        Dim Bufcount As Byte = SerialPort1.BytesToRead
        Static j As Byte
        Dim Rcvarray(23, 100)
        Timer1.Stop()
 
        If Bufcount = 16 Then
 
            SerialPort1.Read(Buf, 0, Bufcount)
 
            If (Buf(15) <> Chr(&HFF)) Or
            (Buf(0) <> Chr(1)) Or
            (Buf(1) <> Chr(&HFF)) Then
 
                MsgBox("Ошибка приема данных", vbCritical)
                j = 0
                A = 0
                GoTo Back1
 
            ElseIf (Buf(2) = Chr(&HEE)) Then
 
                MsgBox("Ошибка отправки данных", vbCritical)
                j = 0
                A = 0
                GoTo Back1
 
            End If
 
            Servarray(Buf)
 
        ElseIf Bufcount = 24 Then
 
            SerialPort1.Read(Buf, 0, Bufcount)
 
            If (Buf(23) <> Chr(&HFF)) Or
            (Buf(0) <> Chr(1)) Or
            (Buf(1) <> Chr(&HFF)) Then
 
                MsgBox("Ошибка приема данных", vbCritical)
                GoTo Back1
 
            ElseIf (Buf(2) = Chr(&HEE)) Then
 
                MsgBox("Ошибка отправки данных")
                GoTo Back1
 
            End If
 
            For i = 0 To 23
                Rcvarray(i, j) = Buf(i)
            Next i
 
            j = j + 1
            If j >= 100 Then
                j = 0
            End If
 
            Read_write_Click(sender, e)
 
        End If
 
 
Back1: End Sub
 
    Private Sub Read_write_Click(sender As Object, e As EventArgs) Handles Read_writeBtn.Click
 
        Dim Opcode As Byte
 
        Dim Sendarray(18, A) As Byte
        Dim Sendstring(23) As Byte
        Opcode = &H0
        Sendarray(0, 0) = 1
        Sendarray(0, A) = 1
 
        If Sendarray(0, 0) = 0 Then
 
            MsgBox("Выберите хотя бы одну строку!", vbInformation)
            GoTo Back2
 
        ElseIf Sendarray(0, A) = 0 Then
 
            A = 0
            MsgBox("Передача завершена!", vbExclamation)
            GoTo Back2
 
        End If
 
        If WriteCheckBox.Checked = True Then
            Opcode = &H55
        End If
 
 
        Dim i = 7
        Dim j = 2
        Do Until i = 22
 
            Sendstring(i) = Sendarray(j, A)
            i = i + 1
            j = j + 1
        Loop
 
 
 
 
        Sendstring(0) = &H1
        Sendstring(1) = &HFF
        Sendstring(2) = Opcode
        Sendstring(3) = Sendarray(1, A)
        Sendstring(4) = Sendarray(2, A)
        Sendstring(5) = &HFF
        Sendstring(6) = &HFF
        Sendstring(23) = &HFF
        A = A + 1
 
        SerialPort1.DiscardOutBuffer()
        SerialPort1.DiscardInBuffer()
        SerialPort1.Write(Sendstring, 0, 24)
 
        Timer1.Start()
 
Back2: End Sub
 
    Private Sub Servarray(ByVal Text As String)
 
        Dim str As String = Text
        Dim InputbyteArray() As Byte
        Dim Bytecount As Integer = str.Length
        Dim hexNumbers As Text.StringBuilder = New Text.StringBuilder
 
        InputbyteArray = System.Text.Encoding.Default.GetBytes(str)
        For i As Integer = 0 To 15
            hexNumbers.Append(InputbyteArray(i).ToString("x2") & " ")
        Next
 
        If RichTextBox1.InvokeRequired Then
            Dim x As New SetTextCallBack(AddressOf Servarray)
            Invoke(x, New Object() {(Text)})
        Else
 
            RichTextBox1.Text = (hexNumbers.ToString)
            MsgBox("Соединение установлено", vbInformation)
        End If
 
    End Sub
    
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 
        Timer1.Stop()
        MsgBox("Проверьте соединение и повторите попытку!", vbExclamation)
        DisconnBtn_Click(sender, e)
 
    End Sub
 
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Openfile.Click
 
        OpenFileDialog1.InitialDirectory = "C:\"
        OpenFileDialog1.ShowDialog()
    End Sub
 
    Public Sub Database_DataGridView1()
 
 
 
    End Sub
 
 
 
End Class
Вложения
Тип файла: rar Comport (1).rar (758.3 Кб, 16 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2017, 11:11
Ответы с готовыми решениями:

Как запустить купюроприемник для теста через сом порт ?
подскажите если кто знает,некогда не сталкивался с ком портом. Не знаю его процесс активации.

Можно ли через VB организовать связь (через паралельный порт) с отдельным устройством?
Вот хотелось бы узнать можно ли через VB организовать связь (через паралельный порт) с отделным...

управление через СОМ порт
Как сдельть сигнал на RTS,DTR по нажатию BUTTON1и2 соответственно. Причём при их отпускании сигналы...

Как управлять устройством через com-порт?
Добрый день. Есть устройство, которое управляется через com порт. Перечень команд для этого...

33
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
12.10.2017, 00:38  [ТС] 2
Нашёл я причину, моя программа заработала через эмуляцию порта (использовал Virtual Serial Port Emulator), а вот напрямую если к порту подключать, то не работает, как сделать чтобы программа работала напрямую с портом?

Добавлено через 8 минут
Так же возможная причина кроется в том что устройство соединено посредством USB COM порта. Через СОМ порт на материнской плате ещё не пробовал.
0
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
17.10.2017, 20:33 3
Цитата Сообщение от RockMANN Посмотреть сообщение
Может кто-нибудь подскажет, в какую сторону копать???
Я с COM-портом начинал извращения с установки точки останова на событии приема данных, и уже детально смотрел - что конкретно пришло и какой длинны. Насколько я успел понять - ваша программа принимает сообщения только вполне конкретной длины - 16 или 24, а вот варианта для, например 20 - у вас не предусмотрено. А сообщения в буфер чтения прибывают словно Почтой России - не разуми когда и в какой форме. Поэтому вы легко можете получить, например, сначала первые 10 байт в буфер, а вторым вызовом - оставшиеся 6. Ваш код под такую ситуацию не заточен!

Добавлено через 46 секунд
Цитата Сообщение от RockMANN Посмотреть сообщение
Так же возможная причина кроется в том что устройство соединено посредством USB COM порта.
Это врядли.
0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
17.10.2017, 21:52  [ТС] 4
Да, всё верно, пакеты принимаются либо 16 либо 24 байта, что интересно, я использую метод чтения определенного количества байт
Цитата Сообщение от RockMANN Посмотреть сообщение
SerialPort1.Read(Buf, 0, Bufcount)
как при этом может прийти разное количество байт по времени?
Да и входной и выходной буферы настроены на 24 байта.
0
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
17.10.2017, 22:52 5
Цитата Сообщение от RockMANN Посмотреть сообщение
использую метод чтения определенного количества байт
Цитата Сообщение от RockMANN Посмотреть сообщение
как при этом может прийти разное количество байт по времени?
Легко. Я в свой практике сталкивался с такой же проблемой.

Цитата Сообщение от RockMANN Посмотреть сообщение
Да, всё верно, пакеты принимаются либо 16 либо 24 байта
Как принимаются пакеты - вы, я думаю, сказать не можете, так как не совсем понятно, в какой момент возникает событие приема данных. Возможно, оно связано с дискретизацией времени. Ну это я, есессно, предполагаю. В моей практике, при работе с реальным железом, событие приема данных возникало скажем так хаотично, и в буфере могла содержаться информации от двух сообщений. Например: железо отправляет мессагу в 16 байт. А обработчик события сначала перехватывает 10, а потом 6. Вот вам и пук в лужу.

На буржуйских форумах рекомендуют записывать принятые сообщения в отдельную переменную (али массив), а потом его парсить требуемым образом, основываясь на маркере конца сообщения. Соответственно, из переменной прочитанные данные изымаются.

Вот как то так.
0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
17.10.2017, 23:02  [ТС] 6
А может в этом помочь свойство SerialPort.ReceivedBytesThreshold?
0
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
17.10.2017, 23:21 7
Вероятно. Попробуйте. Нужно проверить этот подход при передачи большого количества пакетов. Главное - чтобы ничего не пропало)))

Добавлено через 4 минуты
В моем случае такой подход был не шибко хорош, так как длина принимаемого сообщения зависела от переданной информации. В общем, намаялся я знатно тогда. Обидно, что код где-то посеял...только принципы в башке остались.
1
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
27.10.2017, 15:59  [ТС] 8
Поправил немного прошивку в устройстве для отладки. Теперь устройство отправляет ровно то, что оно приняло. В итоге количество отправленных и принятых байт совпадает, но значения различаются. В общем пробовал разные методы, но что-то мне подсказывает, что дело либо в кодировке, либо в драйвере Arduino. Моя программа отлично работает, если создать виртуальный СОМ порт и работать через него. Количество и значения полностью совпадают. Но вот напрямую с USB-COM драйвером работать не хочет. Подскажите, в какую сторону двигаться?
0
1496 / 1044 / 146
Регистрация: 01.10.2009
Сообщений: 3,510
Записей в блоге: 1
27.10.2017, 19:14 9
RockMANN, скорость портов одинаковая с программой?
0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
27.10.2017, 21:40  [ТС] 10
Всё одинаковое, скорость, количество бит, четность, стоп бит

Добавлено через 2 часа 7 минут
Отправляю в порт 24 байта со значением "0" а получаю вот это:
FE FF FF FE 00 00 00 06 06 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 09 06 06 00
0
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
27.10.2017, 21:47 11
Цитата Сообщение от RockMANN Посмотреть сообщение
Всё одинаковое
А сторонняя программа для чтения последовательного порта принимает данные правильно?
0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
27.10.2017, 22:59  [ТС] 12
Rius, смотрите первый пост.

Добавлено через 6 минут
Отправляю данные через Terminal by Bray, данные передает корректно, даже без эмуляции СОМ порта.

Добавлено через 9 минут
Жду пока придет конвертер USB COM, протестирую на нем, отпишусь.
0
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
27.10.2017, 23:04 13
Попробуйте записывать методом Write.
И сразу считывать ответ методом Read. С указанием размера буфера, заведомо превышающего пакет. И с таймаутом чтения, с запасом.

Не по теме:

Могу показать код, но на другом языке.

0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
28.10.2017, 01:03  [ТС] 14
Всем откликнувшимся спасибо за помощь, немного покопавшись в коде для микроконтроллера нашел ошибку)))Теперь всё отправляет и принимает без ошибок.
0
COM‐пропагандист
859 / 768 / 147
Регистрация: 18.12.2014
Сообщений: 2,195
Записей в блоге: 4
29.10.2017, 15:36 15
RockMANN, и в чём была ошибка? Расскажите, чтобы оградить новичков от этого.
0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
30.10.2017, 00:43  [ТС] 16
Замабувараев, Ошибка была в том что устройство посылало неправильные данные в порт. Поэтому всегда проверяйте прошивку на возможные штатные и нештатные режимы работы. К примеру в моём устройстве, если отправить в пакете неверный адрес, то программа считает неправильную строку из RAM и отправит её в порт, поэтому я видел не то, что нужно.
1
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
03.11.2017, 23:57  [ТС] 17
Всем добрый вечер! Снова возникают вопросы в решении проблем)) Итак, на этот раз хотел бы узнать имеет ли право на жизнь такая реализация кода: в теле одной процедуры вызывается другая процедура? У меня в теле процедуры SerialPort1_DataReceived_1 вызывается процедура Read_write_Click при определенном условии? Оно вроде работает, но как-то с прерываниями, на процедуру Read_write_Click переходит не с первого раза. А еще иногда ругается System.IO.IOException в этом месте: SerialPort1.Read(Buf, 0, 24) "Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения." & vbCrLf при попытке записать в порт

VB.NET
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
Private Sub SerialPort1_DataReceived_1(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
 
        
        Dim Buf(23) As Byte
        Dim Bytes As UInteger = SerialPort1.BytesToRead
 
'В этом месте иногда возникает ошибка сразу после записи массива байт в порт SerialPort1.Write(Sendstring, 0, 24)
        SerialPort1.Read(Buf, 0, 24)
 
 
 
        If Bytes = 16 Then
 
           
            Dim Str As String = System.Text.Encoding.GetEncoding("Windows-1251").GetString(Buf, 0, Bytes)
 
            Servarray(Str)
 
 
        ElseIf Bytes = 24 Then
 
' В основном задействована эта часть условия
 
            If (Buf(23) <> &HFF) Or
            (Buf(0) <> 1) Or
            (Buf(1) <> &HFF) Then
 
                MsgBox("Ошибка приема данных", vbCritical)
                Read_writeBtn.Enabled = True
                CheckBox1.Enabled = True
                WriteCheckBox.Enabled = True
                A = 0
                j1 = 0
                GoTo Back1
 
            ElseIf (Buf(2) = &HEE) Then
 
                MsgBox("Ошибка отправки данных")
                Read_writeBtn.Enabled = True
                CheckBox1.Enabled = True
                WriteCheckBox.Enabled = True
                A = 0
                j1 = 0
                GoTo Back1
 
            End If
 
            For i = 0 To 23
                Rcvarray(i, j1) = Buf(i)
            Next i
 
            j1 = j1 + 1
 
            If j1 >= 100 Then
                j1 = 0
            End If
 
'Переход к процедуре отправки
 
            Read_write_Click(sender, e)
 
        End If
 
 
Back1: End Sub
 
    Private Sub Read_write_Click(sender As Object, e As EventArgs) Handles Read_writeBtn.Click
 
        Dim Opcode As Byte
        Dim Sendstring(23) As Byte
 
 
        If Sendarray(0, 0) = 0 Then
            Timer1.Stop()
 
            MsgBox("Выберите хотя бы одну строку!", vbInformation)
            GoTo Back2
 
        ElseIf A = 100 Then
 
            MsgBox("Передача завершена!", vbExclamation)
            ProgressBar1_Change(A)
 
            Dim i2 = 4
            Dim k2 = 7
            For A = 0 To 99
                Do Until i2 = 20
                    Sendarray(i2, A) = Rcvarray(k2, A)
                    i2 = i2 + 1
                    k2 = k2 + 1
                Loop
                i2 = 4
                k2 = 7
            Next A
            A = 0
            j1 = 0
 
            WriteCheckBox.Checked = vbFalse
 
            GoTo Back2
 
        End If
 
        Opcode = &H0
 
        If WriteCheckBox.Checked = True Then
            Opcode = &H55
        End If
 
        ' Read_writeBtn.Enabled = False
        CheckBox1.Enabled = False
        WriteCheckBox.Enabled = False
 
        Dim i = 7
        Dim j = 4
        Do Until i = 23
 
            Sendstring(i) = Sendarray(j, A)
            i = i + 1
            j = j + 1
        Loop
 
        Sendstring(0) = &H1
        Sendstring(1) = &HFF
        Sendstring(2) = Opcode
        Sendstring(3) = Sendarray(2, A)
        Sendstring(4) = Sendarray(3, A)
        Sendstring(5) = &HFF
        Sendstring(6) = &HFF
        Sendstring(23) = &HFF
        ProgressBar1_Change(A)
 
        If A = 99 Then
 
        End If
 
 
 
        SerialPort1.DiscardOutBuffer()
        SerialPort1.DiscardInBuffer()
        SerialPort1.ReceivedBytesThreshold = 16
        'Thread.Sleep(80)
        Timer1.Start()
        SerialPort1.Write(Sendstring, 0, 24)
        A = A + 1
        'Thread.Sleep(100)
 
 
Back2: End Sub
0
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
04.11.2017, 01:31 18
Цитата Сообщение от RockMANN Посмотреть сообщение
Итак, на этот раз хотел бы узнать имеет ли право на жизнь такая реализация кода: в теле одной процедуры вызывается другая процедура?
В данном случае - нет.
0
1 / 1 / 0
Регистрация: 03.07.2017
Сообщений: 23
04.11.2017, 10:50  [ТС] 19
Rius, Как тогда реализовать вызов подпрограммы сразу по завершении предыдущей? Где можно почитать информацию о методах вызова?
0
Эксперт .NET
10563 / 6487 / 1506
Регистрация: 25.05.2015
Сообщений: 19,654
Записей в блоге: 14
04.11.2017, 11:42 20
Вам это никак не поможет. Стоит пересмотреть работу с SerialPort.
У вас обмен идёт в формате запрос-ответ?
0
04.11.2017, 11:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2017, 11:42
Помогаю со студенческими работами здесь

Взаимодействие с устройством через usb порт
Добрый день! Есть принтер Kyocera fs4100 DN Есть программа от производителя status monitor,...

Обмен данными с устройством через com-порт
Здравствуйте. Я работаю с Акип'ом и мне нужно считывать с него измерения. Проблема в том, что я...

Общение с внешним устройством через COM-порт
Добрый день! Есть задача общаться с контроллером подключенным к PC через виртуальный com-порт....

Программа для роботы с устройством через RS-232
Доброго всем времени суток. Есть устройство, а точнее сканирующий приёмник, которое может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru