VisualStudio2005中serialPort控件访问串口实例

翻译|其它|编辑:郝浩|2007-09-10 09:11:55.000|阅读 6460 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

点评:这个例子包括了这个控件几乎所有的操作,非常有参考价值 .serialPort  是在 .net framework2.0中才有的东西,感觉这个东西和  MSCOMM  很相似.这里给出的例子是基于  vb.net    CSHAPE  ,相应的可以在  Cshape    c++中使用,基本上都是一样的.

Imports System 
Imports System.IO.Ports 
Imports System.Threading 
 
Public Class PortChatClass PortChat 
     
Shared _continue As Boolean
      
Shared _serialPort As SerialPort 

      
Public Shared Sub Main()Sub Main() 
         
Dim name As String
          
Dim message As String
          
Dim sComparer As StringComparer = StringComparer.OrdinalIgnoreCase 
         
Dim readThread As Thread = New Thread(AddressOf Read) 

          
' Create a new SerialPort object with default settings.
          _serialPort = New SerialPort() 

          
' Allow the user to set the appropriate properties.
          _serialPort.PortName = SetPortName(_serialPort.PortName) 
         _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate) 
         _serialPort.Parity = SetPortParity(_serialPort.Parity) 
         _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits) 
         _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits) 
         _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake) 

          
' Set the read/write timeouts
          _serialPort.ReadTimeout = 500 
         _serialPort.WriteTimeout = 500 

          _serialPort.Open() 
         _continue = 
True
          readThread.Start() 

          Console.Write("Name: ") 
         name = Console.ReadLine() 

          Console.WriteLine("Type QUIT to exit") 

          
While (_continue) 
             message = Console.ReadLine() 

              
If sComparer.Equals("quit", message) Then
                  _continue = 
False
              
Else
                  _serialPort.WriteLine( _ 
                     
String.Format("<{0}>: {1}", name, message)) 
             
End If
          
end while

           readThread.Join() 
         _serialPort.Close() 
     
End Sub

       
Public Shared Sub Read()Sub Read() 
         
While (_continue) 
             
Try
                  
Dim message As String = _serialPort.ReadLine() 
                 Console.WriteLine(message) 
             
Catch ex As TimeoutException 
                 
' Do nothing
              End Try
          
End While
      
End Sub

       
Public Shared Function SetPortName()Function SetPortName(ByVal defaultPortName As StringAs String
          
Dim newPortName As String

           Console.WriteLine("Available Ports:") 
         
Dim s As String
          
For Each s In SerialPort.GetPortNames() 
             Console.WriteLine(" {0}", s) 
         
Next s 

          Console.Write("COM port({0}): ", defaultPortName) 
         newPortName = Console.ReadLine() 

          
If newPortName = "" Then
              newPortName = defaultPortName 
         
End If
          
Return newPortName 
     
End Function

       
Public Shared Function SetPortBaudRate()Function SetPortBaudRate(ByVal defaultPortBaudRate As IntegerAs Integer
          
Dim newBaudRate As String

           Console.Write("Baud Rate({0}): ", defaultPortBaudRate) 
         newBaudRate = Console.ReadLine() 

          
If newBaudRate = "" Then
              newBaudRate = defaultPortBaudRate.ToString() 
         
End If

           
Return Integer.Parse(newBaudRate) 
     
End Function

       
Public Shared Function SetPortParity()Function SetPortParity(ByVal defaultPortParity As Parity) As Parity 
         
Dim newParity As String

           Console.WriteLine("Available Parity options:") 
         
Dim s As String
          
For Each s In [Enum ]Enum].GetNames(GetType(Parity)) 
             Console.WriteLine(" {0}", s) 
         
Next s 

          Console.Write("Parity({0}):", defaultPortParity.ToString()) 
         newparity = Console.ReadLine() 

          
If newparity = "" Then
              newparity = defaultPortParity.ToString() 
         
End If

           
Return CType([Enum ]Enum].Parse(GetType(Parity), newParity), Parity) 
     
End Function

       
Public Shared Function SetPortDataBits()Function SetPortDataBits(ByVal defaultPortDataBits As IntegerAs Integer
          
Dim newDataBits As String

           Console.Write("Data Bits({0}): ", defaultPortDataBits) 
         newDataBits = Console.ReadLine() 

          
If newDataBits = "" Then
              newDataBits = defaultPortDataBits.ToString() 
         
End If

           
Return Integer.Parse(newDataBits) 
     
End Function

       
Public Shared Function SetPortStopBits()Function SetPortStopBits(ByVal defaultPortStopBits As StopBits) As StopBits 
         
Dim newStopBits As String

           Console.WriteLine("Available Stop Bits options:") 
         
Dim s As String
          
For Each s In [Enum ]Enum].GetNames(GetType(StopBits)) 
             Console.WriteLine(" {0}", s) 
         
Next s 

          Console.Write("Stop Bits({0}):", defaultPortStopBits.ToString()) 
         newStopBits = Console.ReadLine() 

          
If newStopBits = "" Then
              newStopBits = defaultPortStopBits.ToString() 
         
End If

           
Return CType([Enum ]Enum].Parse(GetType(StopBits), newStopBits), StopBits) 
     
End Function

       
Public Shared Function SetPortHandshake()Function SetPortHandshake(ByVal defaultPortHandshake As Handshake) As Handshake 
         
Dim newHandshake As String

           Console.WriteLine("Available Handshake options:") 
         
Dim s As String
          
For Each s In [Enum ]Enum].GetNames(GetType(Handshake)) 
             Console.WriteLine(" {0}", s) 
         
Next s 

          Console.Write("Stop Bits({0}):", defaultPortHandshake.ToString()) 
         newHandshake = Console.ReadLine() 

          
If newHandshake = "" Then
              newHandshake = defaultPortHandshake.ToString() 
         
End If

           
Return CType([Enum ]Enum].Parse(GetType(Handshake), newHandshake), Handshake) 
     
End Function 
End Class

 

using System; 
using System.IO.Ports; 
using System.Threading; 
 
public class PortChat 
...
     
static bool _continue; 
     
static SerialPort _serialPort; 

      
public static void Main() 
     
...
         
string name; 
         
string message; 
         StringComparer stringComparer = StringComparer.OrdinalIgnoreCase; 
         Thread readThread = 
new Thread(Read); 

          
// Create a new SerialPort object with default settings.

          _serialPort = 
new SerialPort(); 

          
// Allow the user to set the appropriate properties.

          _serialPort.PortName = SetPortName(_serialPort.PortName); 
         _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate); 
         _serialPort.Parity = SetPortParity(_serialPort.Parity); 
         _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits); 
         _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits); 
         _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake); 

          
// Set the read/write timeouts

          _serialPort.ReadTimeout = 500; 
         _serialPort.WriteTimeout = 500; 

          _serialPort.Open(); 
         _continue = 
true
         readThread.Start(); 

          Console.Write("Name: "); 
         name = Console.ReadLine(); 

          Console.WriteLine("Type QUIT to exit"); 

          
while (_continue) 
         
...
             message = Console.ReadLine(); 

              
if (stringComparer.Equals("quit", message)) 
             
...
                 _continue = 
false
             } 
             
else
              
...
                 _serialPort.WriteLine( 
                     String.Format("<{0}>: {1}", name, message) ); 
             } 
         } 

          readThread.Join(); 
         _serialPort.Close(); 
     } 

      
public static void Read() 
     
...
         
while (_continue) 
         
...
             
try
              
...
                 
string message = _serialPort.ReadLine(); 
                 Console.WriteLine(message); 
             } 
             
catch (TimeoutException) ...{ } 
         } 
     } 

      
public static string SetPortName(string defaultPortName) 
     
...
         
string portName; 

          Console.WriteLine("Available Ports:"); 
         
foreach (string s in SerialPort.GetPortNames()) 
         
...
             Console.WriteLine(" {0}", s); 
         } 

          Console.Write("COM port({0}): ", defaultPortName); 
         portName = Console.ReadLine(); 

          
if (portName == "") 
         
...
             portName = defaultPortName; 
         } 
         
return portName; 
     } 

      
public static int SetPortBaudRate(int defaultPortBaudRate) 
     
...
         
string baudRate; 

          Console.Write("Baud Rate({0}): ", defaultPortBaudRate); 
         baudRate = Console.ReadLine(); 

          
if (baudRate == "") 
         
...
             baudRate = defaultPortBaudRate.ToString(); 
         } 

          
return int.Parse(baudRate); 
     } 

      
public static Parity SetPortParity(Parity defaultPortParity) 
     
...
         
string parity; 

          Console.WriteLine("Available Parity options:"); 
         
foreach (string s in Enum.GetNames(typeof(Parity))) 
         
...
             Console.WriteLine(" {0}", s); 
         } 

          Console.Write("Parity({0}):", defaultPortParity.ToString()); 
         parity = Console.ReadLine(); 

          
if (parity == "") 
         
...
             parity = defaultPortParity.ToString(); 
         } 

          
return (Parity)Enum.Parse(typeof(Parity), parity); 
     } 

      
public static int SetPortDataBits(int defaultPortDataBits) 
     
...
         
string dataBits; 

          Console.Write("Data Bits({0}): ", defaultPortDataBits); 
         dataBits = Console.ReadLine(); 

          
if (dataBits == "") 
         
...
             dataBits = defaultPortDataBits.ToString(); 
         } 

          
return int.Parse(dataBits); 
     } 
     
     
public static StopBits SetPortStopBits(StopBits defaultPortStopBits) 
     
...
         
string stopBits; 

          Console.WriteLine("Available Stop Bits options:"); 
         
foreach (string s in Enum.GetNames(typeof(StopBits))) 
         
...
             Console.WriteLine(" {0}", s); 
         } 

          Console.Write("Stop Bits({0}):", defaultPortStopBits.ToString()); 
         stopBits = Console.ReadLine(); 

          
if (stopBits == "") 
         
...
             stopBits = defaultPortStopBits.ToString(); 
         } 

          
return (StopBits)Enum.Parse(typeof(StopBits), stopBits); 
     } 

      
public static Handshake SetPortHandshake(Handshake defaultPortHandshake) 
     
...
         
string handshake; 

          Console.WriteLine("Available Handshake options:"); 
         
foreach (string s in Enum.GetNames(typeof(Handshake))) 
         
...
             Console.WriteLine(" {0}", s); 
         } 

          Console.Write("Stop Bits({0}):", defaultPortHandshake.ToString()); 
         handshake = Console.ReadLine(); 

          
if (handshake == "") 
         
...
             handshake = defaultPortHandshake.ToString(); 
         } 

          
return (Handshake)Enum.Parse(typeof(Handshake), handshake); 
     } 
}


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP