串行端口/ Tcp服务器干扰

时间:2013-12-27 17:50:29

标签: .net vb.net sockets tcp serial-port

我有一台服务器,它有两种类型的服务:一种由TCP / IP服务器线程提供,另一种由多种(可变)串行外设提供;对于TCP / IP服务器,我正在使用框架中的标准System.Net.Sockets.TcpListener对象,而对于串行外围设备,我正在使用标准System.IO.Ports.SerialPort对象。

当我有一个服务,但另一个没有问题,一切正常,但当我需要一起使用这两个服务时,TCP服务器开始变得没有响应,只获取它通常需要的一些不同的消息

作为一个注释,我已经尝试使用Wireshark来嗅探底层的tcp流量,因为我没有怀疑,tcp流量甚至没有生成(或由LAN物理卡读取);我不明白我现在需要做什么。

谢谢大家!

Imports System.Net
Imports System.Net.Sockets
Imports System.IO.Ports.SerialPort

Public Class Form1
Private WithEvents mSerial As System.IO.Ports.SerialPort
Private mTcpServer As System.Net.Sockets.TcpListener
Private tcpThread As Threading.Thread

Sub main() Handles Me.Load
    Open(1)
    Dim idAdd As IPAddress = IPAddress.Any
    mTcpServer = New TcpListener(idAdd, 41000)
    mTcpServer.Start()

    tcpThread = New Threading.Thread(AddressOf TcpRollingThread)
    tcpThread.Start()

    tcpThread.Join()
End Sub

Private Sub TcpRollingThread()
    Do
        mTcpServer.AcceptTcpClient()
        Console.WriteLine("Tcp received")
    Loop
End Sub

Private Sub dataReceived_handler(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles mSerial.DataReceived
    Console.WriteLine("Serial bytes received: " + mSerial.BytesToRead.ToString())
End Sub

Public Function Open(ByVal port As Integer) As Boolean
    If port > 0 Then
        Try
            mSerial = New System.IO.Ports.SerialPort("COM" + port.ToString)
            With mSerial
                .BaudRate = 9600
                .DataBits = 8
                .StopBits = IO.Ports.StopBits.One
                .Parity = IO.Ports.Parity.None
                .ReceivedBytesThreshold = 1
                .Open()
            End With
        Catch ex As Exception
            Return False
        End Try
        Return True
    End If
    Return False
End Function

End Class

这里是代码的一部分:当我期待很少的数据(例如2-3个字节)时,连接到达:当我期待更多(16到20个字节)时,连接不显示自己但是我相信它会在另一端开始。

0 个答案:

没有答案