虚拟串口及C#串口
虚拟串口软件使用:
http://developer.51cto.com/art/200908/146713.htm
VB串口通讯参考:
http://www.vbgood.com/viewthread.php?tid=14561
(4#)
http://baike.baidu.com/view/1649952.htm百科中的介绍,VB代码排版下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Private Sub cmdTestClick ( ) '打开串口
MSComml.CommPort =2 '设定Com2
If MSComml.PortOpen = False Then
MSComm1.Settings = "9600,n,8,1" '9600波特率,无校验,8位数据位,1位停止位
MSComm1.PortOpen = True '打开串口
End if
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.InBufferCount = 0 '滑空接收缓冲区
'发送字符数据时注意必须用回车符(vbcr)结束
MSComm1.Output="This is a qood book ! " &vbCr
'泼打电话号码或发送AT命令
MSComm1.Output = "ATDT 05778191898 , & vbCr
'发送字符数组数据时注意ByteArray必须事先定义赋值
Dim ByteArray as byte( )
'定义动态数组
ReDim ByteArray(1)
'重定义数组大小
ByteArray ( 0 ) =0
ByteArray ( 1 ) = 1
MSComm1.Output = ByteArray
End Sub
private Sub MScommEvent( )
Select Case MSComm1.CommEvent
Case comEvReceive
Dim Buffer As Variant
MSComm1.InputLen = 0
'接收二进制数据
MSComm1.InputMode= ComInputModeBinary
Buffer=MSComm1.Input
'接收字符数据
MSComm1.InputMode=comInputModeText
Buffer = MSComml.Input
Case else
End Select
End sub
MSComml.CommPort =2 '设定Com2
If MSComml.PortOpen = False Then
MSComm1.Settings = "9600,n,8,1" '9600波特率,无校验,8位数据位,1位停止位
MSComm1.PortOpen = True '打开串口
End if
MSComm1.OutBufferCount = 0 '清空发送缓冲区
MSComm1.InBufferCount = 0 '滑空接收缓冲区
'发送字符数据时注意必须用回车符(vbcr)结束
MSComm1.Output="This is a qood book ! " &vbCr
'泼打电话号码或发送AT命令
MSComm1.Output = "ATDT 05778191898 , & vbCr
'发送字符数组数据时注意ByteArray必须事先定义赋值
Dim ByteArray as byte( )
'定义动态数组
ReDim ByteArray(1)
'重定义数组大小
ByteArray ( 0 ) =0
ByteArray ( 1 ) = 1
MSComm1.Output = ByteArray
End Sub
private Sub MScommEvent( )
Select Case MSComm1.CommEvent
Case comEvReceive
Dim Buffer As Variant
MSComm1.InputLen = 0
'接收二进制数据
MSComm1.InputMode= ComInputModeBinary
Buffer=MSComm1.Input
'接收字符数据
MSComm1.InputMode=comInputModeText
Buffer = MSComml.Input
Case else
End Select
End sub
VB代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
'一些参数说明
Private Sub Form_Load() '程序加载时执行的函数
MSComm1. InBufferCount = 0 '设置读缓冲区为空
MSComm1. OutBufferCount = 0 '设置写缓冲区为空
MSComm1. Settings = “9600,E,7,1” '串口通讯参数,波特率:9600;校验:偶校验;数据位:7;停止位:1
MSComm1. CommPort = 1 '通讯端口:com1
MSComm1. PortOpen = True '端口打开
cmdReadRequst. Enabled = False
cmdReadAnswer. Enabled = False
cmdWriteRequst. Enabled = False
cmdWriteAnswer. Enabled = False
End Sub
Private Sub cmdTest_Click()
Private Sub Form_Load() '程序加载时执行的函数
MSComm1. InBufferCount = 0 '设置读缓冲区为空
MSComm1. OutBufferCount = 0 '设置写缓冲区为空
MSComm1. Settings = “9600,E,7,1” '串口通讯参数,波特率:9600;校验:偶校验;数据位:7;停止位:1
MSComm1. CommPort = 1 '通讯端口:com1
MSComm1. PortOpen = True '端口打开
cmdReadRequst. Enabled = False
cmdReadAnswer. Enabled = False
cmdWriteRequst. Enabled = False
cmdWriteAnswer. Enabled = False
End Sub
Private Sub cmdTest_Click()
Dim instring As String '声明一个字符串变量instring
MSComm1.Output = Chr (5) '串口输出ascii为5 的字符
instring = MSComm1. Input '读取串口返回,赋值给instring
If instring = Chr (6) Then '如果返回值为 ascii=6的字符,则
MsgBox “连接成功!”
End If
End Sub
MSComm1.Output = Chr (5) '串口输出ascii为5 的字符
instring = MSComm1. Input '读取串口返回,赋值给instring
If instring = Chr (6) Then '如果返回值为 ascii=6的字符,则
MsgBox “连接成功!”
End If
End Sub
发送大于128的数据,VB代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Dim cc(255) As Byte
For i = 0 To 255
cc(i) = i
Next i
MSComm1.Output = cc
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
'接收过程 MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Dim Buffer As Variant, b1,i
MSComm1.InputMode=comInputModeBinery
MSComm1.InputLen = 0
Buffer = MSComm1.Input
For i=LBound (Buffer) To UBound (Buffer )
Debug.Print Buffer ( i ) ;
Next i
Case . . . . .
For i = 0 To 255
cc(i) = i
Next i
MSComm1.Output = cc
Do
DoEvents
Loop Until MSComm1.OutBufferCount = 0
'接收过程 MSComm1_OnComm()
Select Case MSComm1.CommEvent
Case comEvReceive
Dim Buffer As Variant, b1,i
MSComm1.InputMode=comInputModeBinery
MSComm1.InputLen = 0
Buffer = MSComm1.Input
For i=LBound (Buffer) To UBound (Buffer )
Debug.Print Buffer ( i ) ;
Next i
Case . . . . .
字符串与字节的转换,C#代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
byte[] data = System.Text.Encoding.ASCII.GetBytes(textBox1.Text);
string sTest = System.Text.Encoding.ASCII.GetString(data);
//一重载
//string sTest = System.Text.Encoding.ASCII.GetString(data, 0, data.Length);
string sTest = System.Text.Encoding.ASCII.GetString(data);
//一重载
//string sTest = System.Text.Encoding.ASCII.GetString(data, 0, data.Length);
MSDN提供的一些字符串编码转换,C#
http://msdn.microsoft.com/zh-cn/library/system.text.encoding(VS.80).aspx
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
using System;
using System.Text;
namespace ConvertExample
{
class ConvertExampleClass
{
static void Main()
{
string unicodeString = "This string contains the unicode character Pi(\u03a0)";
// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);
// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
}
}
}
using System.Text;
namespace ConvertExample
{
class ConvertExampleClass
{
static void Main()
{
string unicodeString = "This string contains the unicode character Pi(\u03a0)";
// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte[].
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
// Convert the new byte[] into a char[] and then into a string.
// This is a slightly different approach to converting to illustrate
// the use of GetCharCount/GetChars.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);
// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
}
}
}