精华内容
下载资源
问答
  • 一个串行端口通信组件,简单传输. 此组件调用 Win32 API 来达成所需功能。丰烨工作室个人作品,创始人:周聪。  控件安装使用方法:  第一步:启动Delphi软件  第二步:选择菜单的Component栏,,点击Install ...
  • 配置Comfoolery,详见“菜单说明”一节 通告串口服务器IP、端口号 客户端telnet连接串口服务器 菜单说明 File,仅含退出选项,一般用不到 Edit,含Com Settings和TCP Settings两个选项 Com Settings,配置要共享的...
  • http://support.microsoft.com/kb/823179/zh-cn 本文分步介绍了如何使用 Microsoft Visual Basic .NET 访问串行端口和并行端口。本文还提供了一个代码示例来说明本文中讨论的概念。要求下面列出了推荐使用的硬件、...

    http://support.microsoft.com/kb/823179/zh-cn

     

    本文分步介绍了如何使用 Microsoft Visual Basic .NET 访问串行端口和并行端口。本文还提供了一个代码示例来说明本文中讨论的概念。

    要求

    下面列出了推荐使用的硬件、软件、网络基础设施以及所需的 Service Pack:
    • Microsoft Windows Server 2003、Microsoft Windows XP 或 Microsoft Windows 2000
    • Visual Basic .NET
    本文假定您熟悉下列主题:
    • 利用 Visual Basic .NET 编程
    • Visual Basic .NET 中的平台调用服务

    使用 Visual Basic .NET 中的 MSComm 控件访问串行端口

    由于不存在 Microsoft .NET Framework 类来访问可连接到您的计算机的通信资源,您可以使用 Microsoft Visual Basic 6.0 中的 MSComm 控件。MSComm 控件支持通过串行端口传输和接收数据,从而能够为应用程序提供串行通信。要使用调制解调器实现基本串行通信,请按照下列步骤操作:
    1. 启动 Microsoft Visual Studio .NET。
    2. 在“文件”菜单上,指向“新建”,然后单击“项目”。
    3. 在“项目类型”下,单击“Visual Basic 项目”。
    4. 在“模板”下,单击“控制台应用程序”。
    5. 在“名称”框中,键入 MyConsoleApplication,然后单击“确定”。

      默认情况下,系统会创建 Module1.vb。
    6. 右键单击“MyConsoleApplication”项目,然后单击“添加引用”。
    7. 单击“COM”选项卡,单击“组件名称”下的“Microsoft Comm Control 6.0”,单击“选择”,然后单击“确定”。

      注意:要使用 MSComm 控件,必须在安装了 Microsoft Visual Studio .NET 的计算机上安装 Microsoft Visual Basic 6.0 的相关 COM 组件。

      有关在 Visual Basic .NET 中使用 Visual Basic 6.0 控件时的许可问题的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
      318597  (http://support.microsoft.com/kb/318597/ ) 在 Visual Studio 2005 或 Visual Studio .NET 中使用 Visual Basic 6.0 控件时收到“You do not have a license to use this control”(您未获授权,无法使用此控件)错误消息
    8. 使用下面的代码示例替换 Module1.vb 中的代码。
    9. Imports MSCommLib
      
      Module Module1
      
          Sub Main()
              'New a MSComm control
              Dim MSComm1 As MSComm
              MSComm1 = New MSComm
              ' Buffer to hold input string.
              Dim Buffer As String
              ' Use the COM1 serial port.
              MSComm1.CommPort = 1
              ' 9600 baud, no parity, 8 data, and 1 stop bit.
              MSComm1.Settings = "9600,N,8,1"
              ' Tell the control to read the whole buffer when Input is used.
              MSComm1.InputLen = 0
              ' Open the serial port.
              MSComm1.PortOpen = True
              Console.WriteLine("Open the serial port.")
              ' Tell the control to make the Input property return text data.
              MSComm1.InputMode() = InputModeConstants.comInputModeText
              'Clear the receive buffer.
              MSComm1.InBufferCount() = 0
              ' Send the attention command to the modem.
              MSComm1.Output = "ATV1Q0" & Chr(13)
              Console.WriteLine("Send the attention command to the modem.")
              Console.WriteLine("Wait for the data to come back to the serial port...")
              ' Make sure that the modem responds with "OK".
              ' Wait for the data to come back to the serial port.
              Do
                  Buffer = Buffer & MSComm1.Input
              Loop Until InStr(Buffer, "OK" & vbCrLf)
              ' Read the "OK" response data in the serial port.
              ' Close the serial port.
              Console.WriteLine("Read the OK response data in the serial port.")
              MSComm1.PortOpen = False
              Console.WriteLine("Close the serial port.")
          End Sub
      
      End Module


    10. 按 Ctrl+F5 生成和运行该项目。您会收到以下输出消息:
      打开串行端口。
      将 attention 命令发送至调制解调器。
      等待数据返回至串行端口...
      读取串行端口中的 OK 响应数据。
      关闭串行端口。

    使用平台调用服务调用 Visual Basic .NET 中的 Win32 API 函数以访问串行端口和并行端口

    为此,请按照下列步骤操作:
    1. 启动 Microsoft Visual Studio .NET。
    2. 在“文件”菜单上,指向“新建”,然后单击“项目”。
    3. 在“项目类型”下,单击“Visual Basic 项目”。
    4. 在“模板”下,单击“控制台应用程序”。
    5. 在“名称”文本框中,键入 MyConsoleApplication,然后单击“确定”。

      默认情况下,系统会创建 Module1.vb。
    6. 在“Module Module1”语句前面向 Module1.vb 中添加如下代码:
    7. Option Strict On
      
      ' Define a CommException class that inherits from the ApplicationException class, 
      ' and then throw an object of type CommException when you receive an error message.
      Class CommException
         Inherits ApplicationException
         Sub New(ByVal Reason As String)
            MyBase.New(Reason)
         End Sub
      End Class


    8. 声明 Kernel32.dll 中的结构、常量和对外部函数的引用

      要从托管 Visual Basic .NET 应用程序中调用非托管函数,必须声明对作为参数传递给非托管函数的结构的引用,而且必须声明作为参数传递给非托管函数的常量。要进行上述声明,请在 Module Module1 语句后面向 Module1.vb 中添加如下代码:
    9. 'Declare structures.
         Public Structure DCB
         Public DCBlength As Int32
         Public BaudRate As Int32
         Public fBitFields As Int32 'See Comments in Win32API.Txt
         Public wReserved As Int16
         Public XonLim As Int16
         Public XoffLim As Int16
         Public ByteSize As Byte
         Public Parity As Byte
         Public StopBits As Byte
         Public XonChar As Byte
         Public XoffChar As Byte
         Public ErrorChar As Byte
         Public EofChar As Byte
         Public EvtChar As Byte
         Public wReserved1 As Int16 'Reserved; Do Not Use
      End Structure
      
      Public Structure COMMTIMEOUTS
         Public ReadIntervalTimeout As Int32
         Public ReadTotalTimeoutMultiplier As Int32
         Public ReadTotalTimeoutConstant As Int32
         Public WriteTotalTimeoutMultiplier As Int32
         Public WriteTotalTimeoutConstant As Int32
      End Structure
      
      'Declare constants.
      Public Const GENERIC_READ As Int32 = &H80000000
      Public Const GENERIC_WRITE As Int32 = &H40000000
      Public Const OPEN_EXISTING As Int32 = 3
      Public Const FILE_ATTRIBUTE_NORMAL As Int32 = &H80
      Public Const NOPARITY As Int32 = 0
      Public Const ONESTOPBIT As Int32 = 0
      
      'Declare references to external functions.
      Public Declare Auto Function CreateFile Lib "kernel32.dll" _
         (ByVal lpFileName As String, ByVal dwDesiredAccess As Int32, _
            ByVal dwShareMode As Int32, ByVal lpSecurityAttributes As IntPtr, _
               ByVal dwCreationDisposition As Int32, ByVal dwFlagsAndAttributes As Int32, _
                  ByVal hTemplateFile As IntPtr) As IntPtr
      
      Public Declare Auto Function GetCommState Lib "kernel32.dll" (ByVal nCid As IntPtr, _
         ByRef lpDCB As DCB) As Boolean
      
      Public Declare Auto Function SetCommState Lib "kernel32.dll" (ByVal nCid As IntPtr, _
         ByRef lpDCB As DCB) As Boolean
      
      Public Declare Auto Function GetCommTimeouts Lib "kernel32.dll" (ByVal hFile As IntPtr, _
         ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean
      
      Public Declare Auto Function SetCommTimeouts Lib "kernel32.dll" (ByVal hFile As IntPtr, _
         ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean
      
      Public Declare Auto Function WriteFile Lib "kernel32.dll" (ByVal hFile As IntPtr, _
         ByVal lpBuffer As Byte(), ByVal nNumberOfBytesToWrite As Int32, _
            ByRef lpNumberOfBytesWritten As Int32, ByVal lpOverlapped As IntPtr) As Boolean
      
      Public Declare Auto Function ReadFile Lib "kernel32.dll" (ByVal hFile As IntPtr, _
         ByVal lpBuffer As Byte(), ByVal nNumberOfBytesToRead As Int32, _
            ByRef lpNumberOfBytesRead As Int32, ByVal lpOverlapped As IntPtr) As Boolean
      
      Public Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal hObject As IntPtr) As Boolean


    10. 在访问串行端口或并行端口之前,必须先获取相应端口的句柄,然后配置端口通信。为此,请在 Sub Main 语句后面向 Module1.vb 中添加以下初始化代码。

      注意:要使用 LPTx 端口建立通信,必须停止后台打印程序服务。为此,请使用管理工具中的服务工具。
    11. ' Declare the local variables that you will use in the code.
      Dim hSerialPort, hParallelPort As IntPtr
      Dim Success As Boolean
      Dim MyDCB As DCB
      Dim MyCommTimeouts As COMMTIMEOUTS
      Dim BytesWritten, BytesRead As Int32
      Dim Buffer() As Byte
      
      ' Declare the variables to use for encoding.
      Dim oEncoder As New System.Text.ASCIIEncoding
      Dim oEnc As System.Text.Encoding = oEncoder.GetEncoding(1252)
      
      ' Convert String to Byte().
      Buffer = oEnc.GetBytes("Test")
           Try
               ' Access the serial port.
               Console.WriteLine("Accessing the COM1 serial port")
               ' Obtain a handle to the COM1 serial port.
               hSerialPort = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, _
                  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)
               ' Verify that the obtained handle is valid.
               If hSerialPort.ToInt32 = -1 Then
                  Throw New CommException("Unable to obtain a handle to the COM1 port")
               End If
               ' Retrieve the current control settings.
               Success = GetCommState(hSerialPort, MyDCB)
               If Success = False Then
                  Throw New CommException("Unable to retrieve the current control settings")
               End If
               ' Modify the properties of the retrieved DCB structure as appropriate.
               ' WARNING: Make sure to modify the properties according to their supported values.
               MyDCB.BaudRate = 9600
               MyDCB.ByteSize = 8
               MyDCB.Parity = NOPARITY
               MyDCB.StopBits = ONESTOPBIT
               ' Reconfigure COM1 based on the properties of the modified DCB structure.
               Success = SetCommState(hSerialPort, MyDCB)
               If Success = False Then
                  Throw New CommException("Unable to reconfigure COM1")
               End If
               ' Retrieve the current time-out settings.
               Success = GetCommTimeouts(hSerialPort, MyCommTimeouts)
               If Success = False Then
                  Throw New CommException("Unable to retrieve current time-out settings")
               End If
               ' Modify the properties of the retrieved COMMTIMEOUTS structure as appropriate.
               ' WARNING: Make sure to modify the properties according to their supported values.
               MyCommTimeouts.ReadIntervalTimeout = 0
               MyCommTimeouts.ReadTotalTimeoutConstant = 0
               MyCommTimeouts.ReadTotalTimeoutMultiplier = 0
               MyCommTimeouts.WriteTotalTimeoutConstant = 0
               MyCommTimeouts.WriteTotalTimeoutMultiplier = 0
               ' Reconfigure the time-out settings, based on the properties of the modified COMMTIMEOUTS structure.
               Success = SetCommTimeouts(hSerialPort, MyCommTimeouts)
               If Success = False Then
                  Throw New CommException("Unable to reconfigure the time-out settings")
               End If
               ' Write data to COM1.
               Console.WriteLine("Writing the following data to COM1: Test")
               Success = WriteFile(hSerialPort, Buffer, Buffer.Length, BytesWritten, IntPtr.Zero)
               If Success = False Then
                  Throw New CommException("Unable to write to COM1")
               End If
               ' Read data from COM1.
               Success = ReadFile(hSerialPort, Buffer, BytesWritten, BytesRead, IntPtr.Zero)
               If Success = False Then
                  Throw New CommException("Unable to read from COM1")
               End If
            Catch ex As Exception
               Console.WriteLine(Ex.Message)
            Finally
               ' Release the handle to COM1.
               Success = CloseHandle(hSerialPort)
               If Success = False Then
                  Console.WriteLine("Unable to release handle to COM1")
               End If
            End Try
      
            Try
               ' Parallel port.
               Console.WriteLine("Accessing the LPT1 parallel port")
               ' Obtain a handle to the LPT1 parallel port.
               hParallelPort = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, _
                  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)
               ' Verify that the obtained handle is valid.
               If hParallelPort.ToInt32 = -1 Then
                  Throw New CommException("Unable to obtain a handle to the LPT1 port")
               End If
               ' Retrieve the current control settings.
               Success = GetCommState(hParallelPort, MyDCB)
               If Success = False Then
                  Throw New CommException("Unable to retrieve the current control settings")
               End If
               ' Modify the properties of the retrieved DCB structure as appropriate.
               ' WARNING: Make sure to modify the properties according to their supported values.
               MyDCB.BaudRate = 9600
               MyDCB.ByteSize = 8
               MyDCB.Parity = NOPARITY
               MyDCB.StopBits = ONESTOPBIT
               ' Reconfigure LPT1 based on the properties of the modified DCB structure.
               Success = SetCommState(hParallelPort, MyDCB)
               If Success = False Then
                  Throw New CommException("Unable to reconfigure LPT1")
               End If
               ' Retrieve the current time-out settings.
               Success = GetCommTimeouts(hParallelPort, MyCommTimeouts)
               If Success = False Then
                  Throw New CommException("Unable to retrieve current time-out settings")
               End If
               ' Modify the properties of the retrieved COMMTIMEOUTS structure as appropriate. 
               ' WARNING: Make sure to modify the properties according to their supported values.
               MyCommTimeouts.ReadIntervalTimeout = 0
               MyCommTimeouts.ReadTotalTimeoutConstant = 0
               MyCommTimeouts.ReadTotalTimeoutMultiplier = 0
               MyCommTimeouts.WriteTotalTimeoutConstant = 0
               MyCommTimeouts.WriteTotalTimeoutMultiplier = 0
               ' Reconfigure the time-out settings, based on the properties of the modified COMMTIMEOUTS structure.
               Success = SetCommTimeouts(hParallelPort, MyCommTimeouts)
               If Success = False Then
                  Throw New CommException("Unable to reconfigure the time-out settings")
               End If
               ' Write data to LPT1.
              	' Note: You cannot read data from a parallel port by calling the ReadFile function.
               Console.WriteLine("Writing the following data to LPT1: Test")
               Success = WriteFile(hParallelPort, Buffer, Buffer.Length, BytesWritten, IntPtr.Zero)
               If Success = False Then
                  Throw New CommException("Unable to write to LPT1")
               End If
            Catch ex As Exception
               Console.WriteLine(Ex.Message)
            Finally
               ' Release the handle to LPT1.
               Success = CloseHandle(hParallelPort)
               If Success = False Then
                  Console.WriteLine("Unable to release handle to LPT1")
               End If
            End Try
      
            Console.WriteLine("Press ENTER to quit")
            Console.ReadLine()


    12. 在“生成”菜单上,单击“生成解决方案”。
    13. 在“调试”菜单上,单击“启动”以运行该应用程序。

      您可能会在控制台中看到下面的文本:
      正在访问 COM1 串行端口
      正在将下面的数据写入 COM1 中:测试

      从 COM1 中读取下面的数据:串行数据
      正在访问 LPT1 并行端口

      正在将下面的数据写入 LPT1 中:测试

      按 Enter 可退出
      注意:串行数据表示从串行端口读取的数据。
    14. 要关闭该应用程序,请在控制台中按 Enter。

    代码示例列表 (Module1.vb)

    在使用以下代码示例之前,请将 COM1 替换为串行端口的名称,并将 LPT1 替换为并行端口的名称。

    注意:只有在将串行和并行设备连接到计算机上相应的端口时,下面的代码才有效。如果在不连接这些设备的情况下运行程序,该程序将无限期等待下去。
    Option Strict On
    
    ' Define a CommException class that inherits from the ApplicationException class.
    ' Then throw an object of type CommException when you receive an error message.
    Class CommException
       Inherits ApplicationException
       Sub New(ByVal Reason As String)
          MyBase.New(Reason)
       End Sub
    End Class
    
    Module Module1
          'Declare structures
          Public Structure DCB
          Public DCBlength As Int32
          Public BaudRate As Int32
          Public fBitFields As Int32
          Public wReserved As Int16
          Public XonLim As Int16
          Public XoffLim As Int16
          Public ByteSize As Byte
          Public Parity As Byte
          Public StopBits As Byte
          Public XonChar As Byte
          Public XoffChar As Byte
          Public ErrorChar As Byte
          Public EofChar As Byte
          Public EvtChar As Byte
          Public wReserved1 As Int16 'Reserved; Do Not Use
       End Structure
    
       Public Structure COMMTIMEOUTS
          Public ReadIntervalTimeout As Int32
          Public ReadTotalTimeoutMultiplier As Int32
          Public ReadTotalTimeoutConstant As Int32
          Public WriteTotalTimeoutMultiplier As Int32
          Public WriteTotalTimeoutConstant As Int32
       End Structure
    
       'Declare constants.
       Public Const GENERIC_READ As Int32 = &H80000000
       Public Const GENERIC_WRITE As Int32 = &H40000000
       Public Const OPEN_EXISTING As Int32 = 3
       Public Const FILE_ATTRIBUTE_NORMAL As Int32 = &H80
       Public Const NOPARITY As Int32 = 0
       Public Const ONESTOPBIT As Int32 = 0
    
       'Declare references to external functions.
       Public Declare Auto Function CreateFile Lib "kernel32.dll" _
          (ByVal lpFileName As String, ByVal dwDesiredAccess As Int32, _
             ByVal dwShareMode As Int32, ByVal lpSecurityAttributes As IntPtr, _
                ByVal dwCreationDisposition As Int32, ByVal dwFlagsAndAttributes As Int32, _
                   ByVal hTemplateFile As IntPtr) As IntPtr
    
       Public Declare Auto Function GetCommState Lib "kernel32.dll" (ByVal nCid As IntPtr, _
          ByRef lpDCB As DCB) As Boolean
    
       Public Declare Auto Function SetCommState Lib "kernel32.dll" (ByVal nCid As IntPtr, _
          ByRef lpDCB As DCB) As Boolean
    
       Public Declare Auto Function GetCommTimeouts Lib "kernel32.dll" (ByVal hFile As IntPtr, _
          ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean
    
       Public Declare Auto Function SetCommTimeouts Lib "kernel32.dll" (ByVal hFile As IntPtr, _
          ByRef lpCommTimeouts As COMMTIMEOUTS) As Boolean
    
       Public Declare Auto Function WriteFile Lib "kernel32.dll" (ByVal hFile As IntPtr, _
          ByVal lpBuffer As Byte(), ByVal nNumberOfBytesToWrite As Int32, _
             ByRef lpNumberOfBytesWritten As Int32, ByVal lpOverlapped As IntPtr) As Boolean
    
       Public Declare Auto Function ReadFile Lib "kernel32.dll" (ByVal hFile As IntPtr, _
          ByVal lpBuffer As Byte(), ByVal nNumberOfBytesToRead As Int32, _
             ByRef lpNumberOfBytesRead As Int32, ByVal lpOverlapped As IntPtr) As Boolean
    
       Public Declare Auto Function CloseHandle Lib "kernel32.dll" (ByVal hObject As IntPtr) As Boolean
    
       Sub Main()
    
          ' Declare local variables that you will use in the code.
          Dim hSerialPort, hParallelPort As IntPtr
          Dim Success As Boolean
          Dim MyDCB As DCB
          Dim MyCommTimeouts As COMMTIMEOUTS
          Dim BytesWritten, BytesRead As Int32
          Dim Buffer() As Byte
    
          ' Declare variables to use for encoding.
          Dim oEncoder As New System.Text.ASCIIEncoding
          Dim oEnc As System.Text.Encoding = oEncoder.GetEncoding(1252)
    
          ' Convert String to Byte().
          Buffer = oEnc.GetBytes("Test")
    
          Try
             ' Serial port.
             Console.WriteLine("Accessing the COM1 serial port")
             ' Obtain a handle to the COM1 serial port.
             hSerialPort = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, _
                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)
             ' Verify that the obtained handle is valid.
             If hSerialPort.ToInt32 = -1 Then
                Throw New CommException("Unable to obtain a handle to the COM1 port")
             End If
             ' Retrieve the current control settings.
             Success = GetCommState(hSerialPort, MyDCB)
             If Success = False Then
                Throw New CommException("Unable to retrieve the current control settings")
             End If
             ' Modify the properties of the retrieved DCB structure as appropriate.
             ' WARNING: Make sure to modify the properties according to their supported values.
             MyDCB.BaudRate = 9600
             MyDCB.ByteSize = 8
             MyDCB.Parity = NOPARITY
             MyDCB.StopBits = ONESTOPBIT
             ' Reconfigure COM1 based on the properties of the modified DCB structure.
             Success = SetCommState(hSerialPort, MyDCB)
             If Success = False Then
                Throw New CommException("Unable to reconfigure COM1")
             End If
             ' Retrieve the current time-out settings.
             Success = GetCommTimeouts(hSerialPort, MyCommTimeouts)
             If Success = False Then
                Throw New CommException("Unable to retrieve current time-out settings")
             End If
             ' Modify the properties of the retrieved COMMTIMEOUTS structure as appropriate.
             ' WARNING: Make sure to modify the properties according to their supported values.
             MyCommTimeouts.ReadIntervalTimeout = 0
             MyCommTimeouts.ReadTotalTimeoutConstant = 0
             MyCommTimeouts.ReadTotalTimeoutMultiplier = 0
             MyCommTimeouts.WriteTotalTimeoutConstant = 0
             MyCommTimeouts.WriteTotalTimeoutMultiplier = 0
             ' Reconfigure the time-out settings, based on the properties of the modified COMMTIMEOUTS structure.
             Success = SetCommTimeouts(hSerialPort, MyCommTimeouts)
             If Success = False Then
                Throw New CommException("Unable to reconfigure the time-out settings")
             End If
             ' Write data to COM1.
             Console.WriteLine("Writing the following data to COM1: Test")
             Success = WriteFile(hSerialPort, Buffer, Buffer.Length, BytesWritten, IntPtr.Zero)
             If Success = False Then
                Throw New CommException("Unable to write to COM1")
             End If
             ' Read data from COM1.
             Success = ReadFile(hSerialPort, Buffer, BytesWritten, BytesRead, IntPtr.Zero)
             If Success = False Then
                Throw New CommException("Unable to read from COM1")
             End If
          Catch ex As Exception
             Console.WriteLine(Ex.Message)
          Finally
             ' Release the handle to COM1.
             Success = CloseHandle(hSerialPort)
             If Success = False Then
                Console.WriteLine("Unable to release handle to COM1")
             End If
          End Try
    
          Try
             ' Parallel port.
             Console.WriteLine("Accessing the LPT1 parallel port")
             ' Obtain a handle to the LPT1 parallel port.
             hParallelPort = CreateFile("LPT1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, _
                OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)
             ' Verify that the obtained handle is valid.
             If hParallelPort.ToInt32 = -1 Then
                Throw New CommException("Unable to obtain a handle to the LPT1 port")
             End If
             ' Retrieve the current control settings.
             Success = GetCommState(hParallelPort, MyDCB)
             If Success = False Then
                Throw New CommException("Unable to retrieve the current control settings")
             End If
             ' Modify the properties of the retrieved DCB structure as appropriate.
             ' WARNING: Make sure to modify the properties according to their supported values.
             MyDCB.BaudRate = 9600
             MyDCB.ByteSize = 8
             MyDCB.Parity = NOPARITY
             MyDCB.StopBits = ONESTOPBIT
             ' Reconfigure LPT1 based on the properties of MyDCB.
             Success = SetCommState(hParallelPort, MyDCB)
             If Success = False Then
                Throw New CommException("Unable to reconfigure LPT1")
             End If
             ' Reconfigure LPT1 based on the properties of the modified DCB structure.
             Success = GetCommTimeouts(hParallelPort, MyCommTimeouts)
             If Success = False Then
                Throw New CommException("Unable to retrieve current time-out settings")
             End If
             ' Modify the properties of the retrieved COMMTIMEOUTS structure as appropriate.
             ' WARNING: Make sure to modify the properties according to their supported values.
             MyCommTimeouts.ReadIntervalTimeout = 0
             MyCommTimeouts.ReadTotalTimeoutConstant = 0
             MyCommTimeouts.ReadTotalTimeoutMultiplier = 0
             MyCommTimeouts.WriteTotalTimeoutConstant = 0
             MyCommTimeouts.WriteTotalTimeoutMultiplier = 0
             ' Reconfigure the time-out settings, based on the properties of the modified COMMTIMEOUTS structure.
             Success = SetCommTimeouts(hParallelPort, MyCommTimeouts)
             If Success = False Then
                Throw New CommException("Unable to reconfigure the time-out settings")
             End If
             ' Write data to LPT1.
             ' Note: You cannot read data from a parallel port by calling the ReadFile function.
             Console.WriteLine("Writing the following data to LPT1: Test")
             Success = WriteFile(hParallelPort, Buffer, Buffer.Length, BytesWritten, IntPtr.Zero)
             If Success = False Then
                Throw New CommException("Unable to write to LPT1")
             End If
          Catch ex As Exception
             Console.WriteLine(Ex.Message)
          Finally
             ' Release the handle to LPT1.
             Success = CloseHandle(hParallelPort)
             If Success = False Then
                Console.WriteLine("Unable to release handle to LPT1")
             End If
          End Try
    
          Console.WriteLine("Press ENTER to quit")
          Console.ReadLine()
    
       End Sub
    
    End Module


    疑难解答

    • 运行该应用程序时,您可能会看到下面的错误消息:
      System.NullReferenceException:未将对象引用设置到对象的实例。
      出现此错误消息的原因是函数声明不正确。如果声明中包含 ByVal 参数而不包含 ByRef 参数,则通常会出现此错误消息。
    • 在调用 ReadFile 函数时,应用程序可能会无限期等待下去。如果将已检索的 COMMTIMEOUTS 结构中的读取超时设置为零,则通常会出现这种情况。要解决此问题,请适当修改 COMMTIMEOUTS 结构的属性。

    参考

    有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站: 通信资源http://msdn2.microsoft....

     

    有关更多信息,请访问下面的 Microsoft Developer Network (MSDN) 网站:
    通信资源
    http://msdn2.microsoft.com/en-us/library/aa363196.aspx (http://msdn2.microsoft.com/en-us/library/aa363196.aspx)

    与非托管代码交互操作
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconinteroperatingwithunmanagedcode.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconinteroperatingwithunmanagedcode.asp)

    System.Runtime.InteropServices 命名空间
    http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices(vs.71).aspx)

    DllImportAttribute 类
    http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute(vs.71).aspx)

    Windows API 和其他动态链接库
    http://msdn2.microsoft.com/en-us/library/aa141322(office.10).aspx (http://msdn2.microsoft.com/en-us/library/aa141322(office.10).aspx)

    了解句柄
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deovrUnderstandingHandles.asp (http://msdn2.microsoft.com/en-us/library/aa141354(office.10).aspx)

    MSComm 控件
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcomm.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/comm98/html/vbobjcomm.asp)
    有关 AT 调制解调器命令的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    164660  (http://support.microsoft.com/kb/164660/ ) AT 调制解调器命令参考
    展开全文
  • 它不但可以监测、显示、记录和分析系统中串行端口的所有活动,还可以跟踪应用程序或驱动程序开发、测试等过程中可能出现的问题,因此,它是优化串行设备最理想的一套程序。 Serial Port Monitor v7.0....
        

    串行端口监视器Serial Port Monitor是专业、强大的系统实用程序,用于监测RS232/422/485 COM端口。它不但可以监测、显示、记录和分析系统中串行端口的所有活动,还可以跟踪应用程序或驱动程序开发、测试等过程中可能出现的问题,因此,它是优化串行设备最理想的一套程序。

    Serial Port Monitor v7.0.312更新内容
    新增:

    Modbus协议(RTU和ASCII)解码。
    Modbus协议的新视图。
    用于Modbus协议的独立过滤器。
    监控会话比较。
    支持Windows Server 2016。
    将会话再现到串行端口的功能。
    64位GUI版本(当进程占用太多的RAM时,监控将不会中断)。
    视图之间的选择同步。
    表格视图的“注释”列。
    在工具栏中打开和关闭过滤器的功能。
    当监控不活动时,能够创建用于数据重定向的新文件。
    在表格视图中的第一个和最后一个突出显示的IRP之间的状态栏中显示总读/写数据统计信息。
    在转储视图中显示串行端口设置更改。
    在“转储”视图中选择显示哪些数据的选项:二进制、ASCII、端口设置。
    会话文件打开时,在状态栏中显示监控会话统计信息。
    能够将过滤器应用于特定的串行端口。
    在表格视图中显示应用程序尝试写入端口的Write事件的数据,除了已写入的数据。
    能够禁用终端视图的自动滚动。
    命令行选项允许将数据附加到文件而不是覆盖它。
    保存监视会话时的进度条。

    改进:

    表格视图中的IRP现在显示“Line”视图中的转录提示。
    重新设计“新会话”窗口(所有可用的端口立即显示)。
    主窗口标题现在显示正在监视的串行端口。
    双击即可打开监控会话文件。
    可以通过将监控会话文件拖放到串行端口监视器窗口中来打开监视会话文件。
    “新建会话”窗口中的串行端口现在按端口号而不是名称排序。
    当监视会话文件被打开时,监控不会自动启动。
    “数据表示”选项将不允许现在每行设置超过100个字符,以提高性能。

    修复:

    启用“保持最后100个IRP”时,内存泄漏(现在此选项可防止长时间监控期间的高内存消耗)。
    当硬件流量控制启用且连接另一端的串口未打开时,内置终端挂起。
    0d 0a字符显示不正确。
    当系统中出现新的串行端口时挂起。
    终端视图菜单选项关闭时禁用。
    监视进程启动时开始捕获选项。
    解析IOCTL_SERIAL_GET_PROPERTIES和IOCTL_SERIAL_LSRMST_INSERT事件。
    在打开大型监视会话文件时关闭串行端口监视器。
    串行端口监视ActiveX安装与串行端口监视器不一致。
    
    展开全文
  • PC机上,COM1和COM2的地址是3F8~3FF 及2F8~2FF,在这个范围内的每个地址都有不同的功能,这些功能分别通过寄存器来实现,读写这些寄存器就可以执行与串行端口相关的功能。而所谓的寄存器就是暂时存放信息的地方,...

    因为Linux在初始化时间以后就初始化了tty,tty的初始过程包含了串口设备(COM1和COM2)的初始化,为了理解其中内容,我从http://blog.csdn.net/flylonginsky/archive/2005/01/25/267386.aspx转来了相关的说明。关于Linux初始化这部分的分析,我应该在读完这部分内容后一段时间写出来,因为毕竟自己也是在边读代码边学习么。虽然发扬愚公移山的精神,但是什么时候才能写出自己的操作系统啊。唉~~~~~~~~,漫长啊。

    下面是转载内容:

     

    PC机上,COM1和COM2的地址是3F8~3FF 及2F8~2FF,在这个范围内的每个地址都有不同的功能,这些功能分别通过寄存器来实现,读写这些寄存器就可以执行与串行端口相关的功能。而所谓的寄存器就是暂时存放信息的地方,这些被存放在此的信息是以位的形式存储,通常以8个位(一个字节)作为一个单位。读写这些寄存器地址的同时,也就是读取这些代表的状态或控制某些功能。

        

    COM1

    COM2

    寄存器名称

    简称

    3F8

    2F8

    波特率分频器(低八位)

    BDR

    3F9

    2F9

    波特率分频器(高八位)

    BDR

    3F8

    2F8

    传送信息/接收信息寄存器

    DR

    3F9

    2F9

    中断启动寄存器

    IER

    3FA

    2FA

    中断辨识寄存器

    IIR

    3FB

    2FB

    传输线控制寄存器

    LCR

    3FC

    2FC

    调制解调器控制寄存器

    MCR

    3FD

    2FD

    传输线状态寄存器

    LSR

    3FE

    2FE

    调制解调器状态寄存器

    MSR

    上表中,3F8,3F9及2F8,2F9分别有两种功能,显然还需要其他寄存器的信号来加以区别。

    在串行通信中,这一点是通过使用传输线控制寄存器(LCR)上的第7位来实现的。这个位被称为分频器锁存器存取位(Divistor Latch Access Bit,DLAB),当DLAB为0时,表示读写信息寄存器和中断启动寄存器;当DLAB为1时,表示读写波特率分频器的内容。

    以下是各寄存器的说明:

    l        BDR:设置使用串行通信的传输速度。

    串口波特率和数据格式的设置:

    首先向LCR(传输线控制寄存器)的高位写入1(即DLAB为1),然后再设置波特率:在基地址和基地址+1的地方写入的数据为1843200/(16*波特率)。然后设置LCR,最后设置Modem控制寄存器和中断允许寄存器。波特率数值=1843200/(16*波特率)(十进制,可转化为十六进制)

    outportb(0x3fb,0x80); 对LCR的最高位置‘1',是说明以下为输入波特率因子

    outportb(0x3f8,0x0c); //outportb(0x3f8+0,0x0C)输入波特率因子的低8位/9600

    outportb(0x3f9,0x00); //outportb(0x3f8+1,0x00) 输入波特率因子的高8位

    l        DR  先令DLAB为0,再读取3F8就等于读取被传送到COM1的信息。若将信息写入3F8,则信息会被放入传送寄存器中,并被芯片内的移位寄存器一位接着一位地送出去。

    l        IER  用来启动芯片中的4种中断,该位为1时表示该中断被启动。

             Bit0:接收的信息有效中断启动。

             Bit1:传送器保持寄存器已空中断启动

             Bit2:接收器连接状态中断启动

             Bit3:调制解调器状态中断启动

             Bit4-Bit7:永远为0

    outportb(0x3f9,0x01); //启动中断,接收数据有效

    l        IIR  通过读取此寄存器可以知道中断的产生是由谁所引发。

            Bit0:为0时表示尚有中断未处理;为1时表示无中断。

    Bit2

    Bit1

    中断来源

    0

    0

    调制解调器状态

    0

    1

    传送器保存寄存器空着

    1

    0

    接受信息为有效

    1

    1

    连接控制状态

    Bit3~Bit7 :永远为0

    outportb(0x3fa,0x07);  //表示处于连接控制状态

    l        LCR  此寄存器定义传输信息的格式。各位的意义如下:

    Bit0

    Bit1

    意义

    0

    0

    字符长度为5个位

    0

    1

    字符长度为6个位

    1

    0

    字符长度为7个位

    1

    1

    字符长度为8个位

    Bit2:终止位。设为0表示使用1个终止位;设为1时有两种情况,字符长度为5时表示1.5个终止位,而字符长度不是5时则表示2个终止位。

    Bit3:奇偶校验位启动。设为0时表示无奇偶校验位,设为1时表示使用奇偶校验位。

    Bit4:奇偶校验方式选择。设为0时选择奇校验;设为1时选择偶校验。

    Bit5:指定奇偶校验位的方式。设为0时表示不限制;设为1时,则选择奇校验时,奇偶校验位为1;选择偶校验时,奇偶校验位为0。

    Bit6:终止控制位。设为0时表示正常输出;设为1时则强迫输出0。

    Bit7:除法器轩锁位。设为0时表示存取信息寄存器;设为1时表示存取波特率分频器。

    outportb(0x3fb,0x80); //对LCR的最高位置‘1',是说明以下代码为输入波特率因子

    l        MCR 用来控制调制解调器的接口信号。

             Bit0:设为1时,DTR脚位为LOW;设为0时,DTR脚位为HIGH。

             Bit1:设为1时,DTS脚位为LOW;设为0时,RTS脚位为HIGH

             Bit2,Bit3:用于控制芯片上的输出,新型芯片现已不用。

             Bit4::设为1时,芯片内部作自我诊断。

             其他位永远为0

    outportb(0x3fc,0x0b);  //见上

    l        LSR 表示信息传送过程种的各种状态。各位为1时表示该状态成立,为0时不成立

              Bit0:数据已接收完毕。(Data Ready)

              Bit1:数据溢出错误。(Overrun Error)

              Bit2:奇偶校验位错误。(Parity Error)

              Bit3:信息框错误。(Framing Error)

              Bit4:终止中断。(Break Interrupt)

              Bit5:传送器保存寄存器空闲(Transmitter Holding Register Empty)。

              Bit6:传送移位寄存器空闲(Transmitter Shift Register Empty)。

              Bit7:永远为0

    l        MSR 此寄存器高4位为调制解调器控制线目前状态;低4位在调制解调器有信号时被设为1,在被读取后会恢复为0。

             Bit0:1时表示CTS信号改变

             Bit1:1时表示DSR信号改变

             Bit2:1时表示RI信号改变

             Bit3:1时表示DCD信号改变

             Bit4:CTS信号的补码

             Bit5:DSR的补码

             Bit6:RI信号的补码

             Bit7:DCD信号的补码。

    展开全文
  • 目录 android抓socket数据包...4、支持发送ascii字符串数据,以及十六进制表示的原始字节,单次发送的字符数目没有限制 5、收到的数据会同时以这两种形式显示 CommMonitor 串行端口监视精灵 有需要可以私信,下载地址:...

    目录

    android抓socket数据包,sokit-1.3

    CommMonitor 串行端口监视精灵

    友善串口调试助手


     

    有需要可以私信,下载地址:https://download.csdn.net/download/qq_38998213/12610380

    android抓socket数据包,sokit-1.3

    1、服务器模式 用来监听本地端口,接收外部数据包,并且可以回复自定义数据 2、客户端模式 用来连接服务器,发送自定义数据包,并接收远程回复数据 3、转发器模式 用来监听本地端口,将接收到的数据包发送给指定的远程服务器,也可以在转发数据流中插入自定义数据向双发发送 4、支持发送ascii字符串数据,以及十六进制表示的原始字节,单次发送的字符数目没有限制 5、收到的数据会同时以这两种形式显示

     

    CommMonitor 串行端口监视精灵

    有需要可以私信,下载地址:https://download.csdn.net/download/qq_38998213/11248000

    CommMonitor 串行端口监视精灵是用于RS232 / RS422 / RS485端口监控的专业强大的系统实用程序软件。CommMonitor监视显示,记录和分析系统中的所有串行端口活动。这是追踪应用程序或驱动程序开发,串行设备测试和优化等过程中可能出现的问题的理想方法。还提供过滤、搜索、数据导出和强大的数据拦截功能,可以将指定端口的数据流、控制流信息拦截并保存下来,供分析之用。如察看端口状态的变化(波特率、数据位、校验位、停止位),拦截上行、下行的数据,处理速度快,拦截效率高,并可以以十六进制、ASCII字符形式显示,全面支持Unicode 。

     

     

     

    友善串口调试助手

    有需要可以私信,下载地址:https://download.csdn.net/download/qq_38998213/11248378

    是一个很好而小巧的串口调试助手,完美支持Win7等Windows操作系统。友善串口调试助手支持常用的50-256000bps波特率,能设置校验、数据位和停止位,能以ASCII码或十六进制接收或发送任何数据或字符(包括中文),可以任意设定自动发送周期,并能将接收数据保存成文本文件,能发送任意大小的文本文件。

    友善串口调试助手

     

    友善串口调试助手功能介绍

      1、友善串口调试助手支持自定义波特率,可支持各种非标准波特率;

      2、串口自动设别,自动搜索串口;

      3、接收数据可以进行十六进制和ASCII切换;

      4、接收数据时,光标始终显示在最后一行或指定行;

      5、可以以十六进制或ASCII格式,向指定串口发送数据;

      6、定时发送数据;

      7、友善串口调试助手自定义波特率,支持非标准波特率;

      8、友善串口调试助手支持日志缓冲;

      9、友善串口调试助手支持ASCII和Hex数据转换;

      10、支持时间戳功能,可显示发送及接受时间。

     

    友善串口调试助手安装步骤

      1、首先在本站下载友善串口调试助手软件包,双击运行exe安装文件,选择简体中文语言,然后点击确定

    友善串口调试助手

      2、进入许可协议界面,选择我接受协议,然后点击下一步

    友善串口调试助手

      3、选择目标安装位置,可以默认安装到C盘或者点击浏览选择其他安装位置,然后点击下一步

    友善串口调试助手

      4、选择开始菜单文件夹,无需修改,直接点击下一步

    友善串口调试助手

      5、选择附加任务界面,选择创建桌面图标,然后点击下一步

    友善串口调试助手

      6、准备安装友善串口调试助手,点击安装

    友善串口调试助手

      7、正在安装,耐心等待安装进度条完成

    友善串口调试助手

      8、友善串口调试助手安装完成,点击完成后就可以打开使用

    友善串口调试助手

     

    友善串口调试助手使用方法

      1、在本站下载安装好友善串口调试助手后,在桌面找到图标双击运行,主界面如下:

    友善串口调试助手

      2、首先根据串口发过来的信息选择波特率,这个波特率根据实际需要选择,要保证收发一致,否则可能收不到数据,有的时候可以收到,但是都是乱码

    友善串口调试助手

      3、根据传输协议,设置数据位,校验位,停止位,这三个也需要与发送端保持一致,一般来说都是默认设置8-N-1

    友善串口调试助手

      4、连接好硬件后,选择传输端口,对应电脑上的USB口

    友善串口调试助手

      5、设置数据收发模式,根据实际需要选择

    友善串口调试助手

      6、点击“运行”,即可收发数据包

    友善串口调试助手

      7、串口调试助手也可以调试TCP/UDP数据包,在下图位置,其使用方法与前者类似。

    友善串口调试助手

    友善串口调试助手

    友善串口调试助手同类软件对比

      1、串口调试助手

      优点:使用方便,用户群最多,有书介绍及免费源代码。

      缺点:1)因采用多线程接收技术,接收有时丢数,特别在高波特率或使用USB转串口时丢数较多。

                2)只支持115.2K波特率。

                3)只能选COM1~COM4,使用USB转串口时,要重新映射串口。

      2、PCOMAPR(pcomtest)

      优点:波特率高,高达921.6K,接收不丢数。

      缺点:只有COM1~COM4可选,使用USB转串口时,要重新映射串口。

      3、友善串口调试助手

      优点:功能强,支持单界面双串口,可自动探测USB映射的COM口

      缺点:日志记录按钮不太方便。

     

     

    展开全文
  • 串行端口监视ActiveX安装与串行端口监视器不一致。 试用、下载、了解更多产品信息请点击" 咨询在线客服 "   转载于:https://my.oschina.net/u/3279502/blog/918086
  • 使用 LAN、RS-232 串行端口、telnet、SSH 或 Web 方法访问 iLO MP。将出现 iLO MP 登录提示符。 使用缺省的 iLO MP 用户名和口令 (Admin/Admin) 登录。将显示 MP Main Menu 屏幕: 来自 “ ITPUB博客 ” ,...
  • 这将是值得的,因为您将能够拥有一个不错的一键式菜单,然后直接在Windows终端中的Windows串行端口终端中拖放到该终端 Often when you're doing embedded systems development you'll want to monitor or talk to ...
  • 通过串行(RS232)端口发送预定义命令,以控制数字投影仪,arduinos等设备。 如何使用 下载并安装.deb (推荐)或.appimage (Linux版) .dmg (适用于MacOS)或.exe (适用于Windows)从包装Github上。 现在,您...
  • 端口安全

    2020-08-28 16:02:49
    一、端口的基础知识1、什么是端口 提到端口,你可能想到的是局域网的RJ45端口,USB端口、并行端口、串行端口等,对,你理解错了!这种是物理端口,也叫接口。这个内容不是本文讲的重点,本文讲的是...
  • 串行通信的基本原理

    2020-02-05 22:19:51
    串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 在Windows环境(Windows NT、Win98、Windows2000...
  • 计算机端口

    2013-11-25 16:01:52
    其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。  按端口号可分为3大类:  (1)公认端口(Well Known Ports):从...
  • Go to tools>serial port 然后选择微控制器 USB 端口(应该看起来像“COM14”或“COM3”)如果串行端口菜单处于非活动状态,那么您可能正在运行与微控制器无法正常运行的 Windows 版本之一,您需要手动选择一个司机...
  • 其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到...
  • 串行通信

    2013-07-24 09:17:47
    在VC++中用ActiveX控件实现与单片机的串行通信   在单片机应用系统中,经常需要通过RS-232串行口与微机进行通信。目前在各种操作系统中,Microsoft的Windows较为常见,而且大多为Windows95/98等32位平台。以往在...
  • 其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 按端口号可分为3大类: (1)公认端口(Well Known Ports):从0...
  • 关于端口

    2012-06-25 12:01:48
    项目运行时会遇到端口被占用,可以启动以下的进程 1.打开运行-》输入CMD 进入命令行模式 2.在命令行模式中输入netstat -a -n -o 3.查看0.0.0.0:80所对应的PID(即进程号) 4.按CTRL+SHIFT+ESC键打开WINDOWS...
  • 单片机(AT89C51)的串行接口及串行通信是非常重要的一项技术,我们需要有深度的解刨才可以理解透彻,既然进来了我肯定不会让你失望,点个小赞再走吧。 正式进入串口通信前我们需要了解什么是通信? 计算机与...
  • 其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 按端口号可分为3大类: (1)公认端口(Well Known Ports):从0到...
  • 转载自:...其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 按端口号可分为3大类
  • 注意:COM1端口通常是主板自带的串行端口,所以它通常不是LilyPad所在的端口。端口的编号并不是固定的,在Windows操作系统下,编号可以在设备管理器中看到,如图2.43所示。   在Linux操作系统下,端口的...
  • 查看电脑逻辑意义上的端口

    千次阅读 2012-10-19 15:34:05
    其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域 的端口也是逻辑意义上的端口,一般指网络中面向连接服务和无连接服务的通信协议端口,即TCP/IP协议中的端口,是一种抽象的软件结构,包括一些数据...
  • 其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 按端口号...
  • delphi串行通信源码教程

    千次阅读 2013-03-30 21:14:20
     串行通讯接口 032、delphi对串口操作,实现对串口的通讯参数的修改,通过spcomm控件实现对串口数据的读取,和写入 033、DELPHI环境下的串口跟踪源码,不占用串口 034、delphi环境下的串口通讯控件的应用,...
  • /*2013-9-7 运行tomacat中8080 端口被占用*/ /*from:http://blog.sina.com.cn/s/blog_4550f3ca0100pfjl.html*/ cmd命令窗口 输入netstat -abn ->c:/port80.txt 然后到c盘port80.txt文件中找到占用80...
  • 关闭端口

    千次阅读 2014-10-26 20:33:08
    今天使用tomcat 没有正常关闭tomcat ,出现了端口号被占用问题,然而我的tomcat没有shutdown.bat文件,于是我手动地关闭正在使用的端口号 80. cmd--->netstat -a -o C:\Documents and Settings\Administrator> ...
  • 关于端口安全知识,我计划从六部分说起:端口的基础知识、端口的使用查看、端口的打开关闭、端口的转发和映射、由端口分析恶意攻击以及常用的端口安全工具。有人问了,为什么要分为六部分?是向六学致敬也要开花吗?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,323
精华内容 2,929
关键字:

串行端口菜单