C#中的串口操作Word文档下载推荐.docx
- 文档编号:15340631
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:16
- 大小:19.87KB
C#中的串口操作Word文档下载推荐.docx
《C#中的串口操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C#中的串口操作Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
try
{
localMachine=Registry.LocalMachine;
key2=localMachine.OpenSubKey(@"
HARDWARE\DEVICEMAP\SERIALCOMM"
false);
if(key2!
=null)
string[]valueNames=key2.GetValueNames();
textArray=newstring[valueNames.Length];
for(inti=0;
i<
valueNames.Length;
i++)
textArray[i]=(string)key2.GetValue(valueNames[i]);
}
finally
if(localMachine!
localMachine.Close();
key2.Close();
CodeAccessPermission.RevertAssert();
if(textArray==null)
textArray=newstring[0];
returntextArray;
}
VS.NET2005中SerialPort控件操作详解(C#)
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.IO.Ports;
namespaceSerialPorts
publicpartialclassfrm_Main:
Form
#regionPublicEnumerations
publicenumDataMode{Text,Hex}
publicenumLogMsgType{Incoming,Outgoing,Normal,Warning,Error};
#endregion
privateColor[]LogMsgTypeColor={Color.Orange,Color.Green,Color.Black,Color.Blue,Color.Red};
//禁用和启用程序中各控件的状态
privatevoidEnableControls()
//基于串口的打开与否,设置控件状态
gbPortSettings.Enabled=!
ComPort.IsOpen;
btns.Enabled=btnstop.Enabled=txtSendData.Enabled=btnSend.Enabled=ComPort.IsOpen;
if(ComPort.IsOpen)btnOpenPort.Text="
关闭串口"
;
elsebtnOpenPort.Text="
打开串口"
//初始化组件的数据,为串口提供相关参数
privatevoidInitializeControlValues()
cmbParity.Items.Clear();
cmbParity.Items.AddRange(Enum.GetNames(typeof(Parity)));
cmbStopBits.Items.Clear();
cmbStopBits.Items.AddRange(Enum.GetNames(typeof(StopBits)));
cmbPortName.Items.Clear();
foreach(stringsinSerialPort.GetPortNames())
cmbPortName.Items.Add(s);
cmbPortName.Text=cmbPortName.Items[0].ToString();
cmbParity.Text=cmbParity.Items[0].ToString();
cmbStopBits.Text=cmbStopBits.Items[0].ToString();
cmbDataBits.Text=cmbDataBits.Items[0].ToString();
cmbBaudRate.Text=cmbBaudRate.Items[0].ToString();
EnableControls();
//十六进制转换字节数组
privatebyte[]HexStringToByteArray(strings)
s=s.Replace("
"
"
"
);
byte[]buffer=newbyte[s.Length/2];
s.Length;
i+=2)
buffer[i/2]=(byte)Convert.ToByte(s.Substring(i,2),16);
returnbuffer;
//字节数组转换十六进制
privatestringByteArrayToHexString(byte[]data)
StringBuildersb=newStringBuilder(data.Length*3);
foreach(bytebindata)
sb.Append(Convert.ToString(b,16).PadLeft(2,'
0'
).PadRight(3,'
'
));
returnsb.ToString().ToUpper();
//显示数据日志
privatevoidLog(LogMsgTypemsgtype,stringmsg)
rtfTerminal.Invoke(newEventHandler(delegate
rtfTerminal.SelectedText=string.Empty;
rtfTerminal.SelectionFont=newFont(rtfTerminal.SelectionFont,FontStyle.Bold);
rtfTerminal.SelectionColor=LogMsgTypeColor[(int)msgtype];
rtfTerminal.AppendText(msg);
rtfTerminal.ScrollToCaret();
}));
//串口发送方式
#regionLocalProperties
privateDataModeCurrentDataMode
get
if(rbHex.Checked)returnDataMode.Hex;
elsereturnDataMode.Text;
set
if(value==DataMode.Text)rbText.Checked=true;
elserbHex.Checked=true;
//发送数据
privatevoidSendData()
if(CurrentDataMode==DataMode.Text)
//发送用户的文本到串口
ComPort.Write(txtSendData.Text);
//将用户的文本显示到数据窗口
Log(LogMsgType.Outgoing,txtSendData.Text+"
\n"
else
//转换用户十六进制数据到字节数组
byte[]data=HexStringToByteArray(txtSendData.Text);
//发送数据到串口
ComPort.Write(data,0,data.Length);
//将用户十六进制数据到数据窗口
Log(LogMsgType.Outgoing,ByteArrayToHexString(data)+"
catch(FormatException)
//转换错误
Log(LogMsgType.Error,"
十六进制数据有误:
+txtSendData.Text+"
txtSendData.SelectAll();
///<
summary>
///-------------------------------------------------------------
/summary>
publicfrm_Main()
InitializeComponent();
privatevoidForm1_Load(objectsender,EventArgse)
InitializeControlValues();
ComPort.DataReceived+=newSerialDataReceivedEventHandler(port_DataReceived);
//打开串口
privatevoidbtnOpenPort_Click(objectsender,EventArgse)
if(ComPort.IsOpen)ComPort.Close();
//设置串口参数
ComPort.BaudRate=int.Parse(cmbBaudRate.Text);
ComPort.DataBits=int.Parse(cmbDataBits.Text);
ComPort.StopBits=(StopBits)Enum.Parse(typeof(StopBits),cmbStopBits.Text);
ComPort.Parity=(Parity)Enum.Parse(typeof(Parity),cmbPari
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 中的 串口 操作