إنشاء المنفذ التسلسلي في التعليمات البرمجية في VB.net

StackOverflow https://stackoverflow.com/questions/329865

سؤال

وأنا أحاول أن إنشاء منفذ تسلسلي في VB.net باستخدام رمز فقط. لأنني إنشاء مكتبة الصف الأول لا يمكن استخدام المكون المضمنة. لقد حاولت instantiating كائن SeialPort الجديدة ()، ولكن هذا لا يبدو أن يكون كافيا. أنا متأكد من أن هناك شيء بسيط أنا في عداد المفقودين وأي مساعدة سيكون موضع تقدير كبير! شكر!

وP.S. وأود أن أضيف أن المشكلة أواجه في هذا الوقت هو الحصول على رمز لمعالجة الحدث datareceived. البعض من أنه قد يكون العمل، ولكن لا استطيع ان اقول بسبب هذه المشكلة.

هل كانت مفيدة؟

المحلول

إذا كنت تريد استخدام الأحداث تأكد من إعلان الكائن منفذ تسلسلي باستخدام "الأساسية WithEvents. والمثال أدناه تسمح لك لربط إلى منفذ تسلسلي، وسترفع حدث مع سلسلة الواردة.

Imports System.Threading

Imports System.IO

Imports System.Text

Imports System.IO.Ports


Public Class clsBarcodeScanner

Public Event ScanDataRecieved(ByVal data As String)
WithEvents comPort As SerialPort

Public Sub Connect()
    Try
        comPort = My.Computer.Ports.OpenSerialPort("COM5", 9600)
    Catch
    End Try
End Sub

Public Sub Disconnect()

    If comPort IsNot Nothing AndAlso comPort.IsOpen Then
        comPort.Close()
    End If

End Sub

Private Sub comPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles comPort.DataReceived
    Dim str As String = ""
    If e.EventType = SerialData.Chars Then
        Do
            Dim bytecount As Integer = comPort.BytesToRead

            If bytecount = 0 Then
                Exit Do
            End If
            Dim byteBuffer(bytecount) As Byte


            comPort.Read(byteBuffer, 0, bytecount)
            str = str & System.Text.Encoding.ASCII.GetString(byteBuffer, 0, 1)

        Loop
    End If

    RaiseEvent ScanDataRecieved(str)

End Sub
End Class

نصائح أخرى

ولقد وجدت <لأ href = "https://web.archive.org/web/20130709121945/http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial- COM-Port_2900_ في وC_2300 _-. NET.aspx "يختلط =" نوفولو noreferrer "> هذه المقالة أن تكون جيدة جدا.

والرمز لقد كتبت عن ذلك هو:

port = new System.IO.Ports.SerialPort(name, 4800, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
port.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(port_DataReceived);
port.Open();

void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    buffer = port.ReadLine();
    // process line
}

واسف انها C # ولكن ...

والمسألة الوحيدة التي لدي مع ذلك هو إذا تم إسقاط الميناء في حين انها مفتوحة، التطبيق يبدو أن فشل في الخروج.

وشكرا لكم جميعا لمساعدتكم، خصوصا الجواب عن إنشاء فئة باستخدام الكلمة الأساسية WithEvents.

ولقد وجدت كبيرة من المادة حقا أن يشرح كيفية إنشاء فئة مدير للمنفذ التسلسلي. كما يناقش ارسال ثنائي فضلا عن بيانات عرافة إلى المنفذ التسلسلي. وكان من المفيد جدا.

http://www.dreamincode.net/forums/showtopic37361.htm

ولقد استخدمت فئة SerialPort صافي في مشروع الماضي وعملت على ما يرام. هل حقا لا تحتاج إلى أي شيء آخر. تحقق من إعداد الأجهزة في لوحة التحكم وتأكد من أنك مثيل فئة مع نفس المعلمات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top