Keyuraashra Ответов: 2

Как получить данные от последовательного порта RS232 в VB.NET-что?


Привет всем,

У меня есть одно приложение, в котором есть одна машина (ванна, которая дает количество литра) на табло. Он имеет последовательный порт RS232 в машине. Итак, что я хотел бы сделать, так это то, что через порт RS232 я непосредственно хочу отобразить его в своем приложении в одном текстовом поле. Итак, как я могу получить доступ к данным из порта RS232 в VB.NET (я использую Visual Studio 2008). Я знаю, что есть класс под названием System.IO доступен. Если кто-нибудь знает это, пожалуйста, помогите мне!!!! Также Хотите знать, как проверить код, что он работает или нет, не подключая его к машине через последовательный порт RS232?


Спасибо

2 Ответов

Рейтинг:
20

JF2015

Вы могли бы легко погуглить это самостоятельно. Здесь шаг за шагом введение с-узел MSDN:
http://support.microsoft.com/kb/823179/EN-US[^]


Keyuraashra

Спасибо за помощь, но мне не нужны сотни строк кода. Скорее всего, это можно было бы сделать и с помощью простого. Спасибо за ваш ответ!!!!!

kalyan12345

У меня есть какое-то последовательное устройство на моем веб-сервере, я хочу использовать веб-формы для управления последовательным устройством. Как мне это сделать? Win form работает для меня - но я не могу реализовать его с помощью веб-форм. Я использую vb.net для моего программирования

JF2015

Это довольно простой подход - вы всегда можете использовать только те части, которые вам действительно нужны, - но прежде всего нужно понять, что он делает, прежде чем вы сможете попытаться включить необходимые вам части в свое собственное приложение. Нет необходимости понижать голос...

Sergey Alexandrovich Kryukov

Кейураашра, а это что за причина для вашего голосования 1?
--СА

Sergey Alexandrovich Kryukov

Моей 5. Вполне правильный ответ.
--СА

Рейтинг:
1

bharath 2

'Последовательный порт сопряжения с VB.net Экспресс-издание 2010 года
'Copyright (C) 2010 Richard Myrick T. Ареллага
'
"Эта программа является свободным программным обеспечением: вы можете распространять его и/или изменять
"это в соответствии с условиями GNU General Public License, опубликованной компанией
-Фонд свободного программного обеспечения, либо версия 3 лицензии, либо
-(по вашему выбору) любая более поздняя версия.
'
"Эта программа распространяется в надежде, что она будет полезна,
- но без какой-либо гарантии, даже без подразумеваемой гарантии ...
- Товарность или пригодность для определенной цели. См.
"GNU General Public License для получения более подробной информации.
'
- Вы должны были получить копию лицензии GNU General Public License.
- вместе с этой программой. Если нет, то смотрите .


Система Импорта
Система Импорта.ComponentModel
Система Импорта.Нарезание резьбы
Система Импорта.ИО.Порты
Публичный класс frmMain
Dim myPort As Array 'COM-порты, обнаруженные в системе, будут сохранены здесь
Делегат Sub SetTextCallback(ByVal [text] As String) 'добавлен для предотвращения ошибок потоковой передачи при получении данных

Private Sub frmMain_Load(ByVal sender As System.Объект, бывал е как система.EventArgs) Обрабатывает MyBase.Load
- Когда наша форма загрузится, автоматически определите все последовательные порты в системе и заполните поле со списком cmbPort.
myPort = IO.Ports.SerialPort.GetPortNames() 'получить все доступные com-порты
смбо.Предметы.Добавить(9600) 'заполнение поля со списком cmbBaud к общей скорости передачи данных используется
смбо.Предметы.Добавить(19200)
смбо.Items.Add(38400)
смбо.Items.Add(57600)
смбо.Предметы.Добавить(115200)

Для i = 0 до UBound(myPort)
cmbPort.Предметы.Добавить(myPort(i))
Следующий
cmbPort.Текст = cmbPort.Предметы.Item(0) 'Set cmbPort text to the first COM port detected
смбо.Текст = cmbBaud.Предметы.Item(0) 'Set cmbBaud text to the first Baud rate on the list

btnDisconnect.Enabled = False 'изначально кнопка отключения отключена

Конец Подводной Лодки

Private Sub btnConnect_Click(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает btnConnect.Щелчок
SerialPort1.PortName = cmbPort.Текст 'установить SerialPort1 на выбранный COM-порт при запуске
SerialPort1.BaudRate = cmbBaud.Текст 'установить скорость передачи данных в бодах на выбранное значение ВКЛ.

'Другое Свойство Последовательного Порта
SerialPort1.Четность = IO.Ports.Паритет.Нет
SerialPort1.StopBits = IO.Ports.Стопбиты.Один
SerialPort1.DataBits = 8 'Откройте наш последовательный порт
SerialPort1.Открыть()

btnConnect.Enabled = False 'отключить кнопку подключения
btnDisconnect.Enabled = True 'и кнопка Enable Disconnect

Конец Подводной Лодки

Private Sub btnDisconnect_Click(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает btnDisconnect.Щелчок
SerialPort1.Close() 'закрыть наш последовательный порт

btnConnect.Включен = Истина
btnDisconnect.Включено = Ложь
Конец Подводной Лодки

Private Sub btnSend_Click(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает btnSend.Щелчок
SerialPort1.Write(txtTransmit.Текст & vbCr)
- Текст, содержащийся в txtText, будет отправлен в последовательный порт в формате ascii
'плюс возврат каретки (клавиша Enter) возврат каретки может быть оммитирован, если другой конец не нуждается в этом
Конец Подводной Лодки

Частная суб SerialPort1_DataReceived(как byval отправителя как объект, как byval E Как системы.ИО.Портах.SerialDataReceivedEventArgs) Обрабатывает SerialPort1.DataReceived
ReceivedText(SerialPort1.ReadExisting()) 'автоматически вызывается каждый раз, когда данные поступают в serialPort
Конец Подводной Лодки
Private Sub ReceivedText(ByVal [text] As String)
'сравнивает идентификатор создающего потока с идентификатором вызывающего потока
Если я.rtbReceived.Свойство Invokerequired Тогда
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Еще
Я.rtbReceived.Text &= [текст]
Конец, Если
Конец Подводной Лодки

Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает cmbPort.SelectedIndexChanged
Если SerialPort1.Тогда IsOpen = False
SerialPort1.PortName = cmbPort.Текст поп-окно с сообщением для пользователя, если он меняет порты
Else 'без предварительного отключения.
MsgBox("действителен только в том случае, если порт закрыт", vbCritical)
Конец, Если
Конец Подводной Лодки

Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает cmbBaud.Разделе мы рассмотрим
Если SerialPort1.Тогда IsOpen = False
SerialPort1.BaudRate = cmbBaud.Текст поп-окно с сообщением для пользователя, если он меняется скорость передачи информации в бодах
Else 'без предварительного отключения.
MsgBox("действителен только в том случае, если порт закрыт", vbCritical)
Конец, Если
Конец Подводной Лодки

Private Sub rtbReceived_TextChanged(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает rtbReceived.Очередь textchanged

Конец Подводной Лодки

Private Sub Button1_Click(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Button1.Щелчок
rtbReceived.Текст = " "

Конец Подводной Лодки



Private Sub txtTransmit_TextChanged(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает txtTransmit.Очередь textchanged

Конец Подводной Лодки

Private Sub Timer1_Tick(бывал отправитель как система.Объект, бывал е как система.EventArgs) Обрабатывает Timer1.Tick
SerialPort1.Write(txtTransmit.Текст & vbCr)
Конец Подводной Лодки
End Класса


Nitish Shetye

Благодаря тонну раствора 2 работает в Ну....

ShivendraNirmalkar

Хорошая штука, продолжай в том же духе.