ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:19.87KB ,
资源ID:2423637      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2423637.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C#中的串口操作.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C#中的串口操作.docx

1、C#中的串口操作SerialPort编程(C#)SerialPort 2008-12-25 14:20:08 阅读8760 评论4 字号:大中小 订阅 微软代码:取出本机的COM端口字符串public static string GetPortNames() RegistryKey localMachine = null; RegistryKey key2 = null;string textArray = null;/这里有个断言,判断该注册表项是否存在 new RegistryPermission(RegistryPermissionAccess.Read, HKEY_LOCAL_MACH

2、INEHARDWAREDEVICEMAPSERIALCOMM).Assert(); try localMachine = Registry.LocalMachine; key2 = localMachine.OpenSubKey(HARDWAREDEVICEMAPSERIALCOMM, false); if (key2 != null) string valueNames = key2.GetValueNames(); textArray = new stringvalueNames.Length; for (int i = 0; i valueNames.Length; i+) textAr

3、rayi = (string) key2.GetValue(valueNamesi); finally if (localMachine != null) localMachine.Close(); if (key2 != null) key2.Close(); CodeAccessPermission.RevertAssert(); if (textArray = null) textArray = new string0; return textArray; VS.NET2005中SerialPort控件操作详解(C#) using System;using System.Collecti

4、ons.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO.Ports;namespace SerialPorts public partial class frm_Main : Form #region Public Enumerations public enum DataMode Text, Hex public enum LogMsgType Incoming, Out

5、going, Normal, Warning, Error ; #endregion private Color LogMsgTypeColor = Color.Orange, Color.Green, Color.Black, Color.Blue, Color.Red ; /禁用和启用程序中各控件的状态 private void EnableControls() / 基于串口的打开与否,设置控件状态 gbPortSettings.Enabled = !ComPort.IsOpen; btns.Enabled = btnstop.Enabled = txtSendData.Enabled =

6、 btnSend.Enabled = ComPort.IsOpen; if (ComPort.IsOpen) btnOpenPort.Text = 关闭串口; else btnOpenPort.Text = 打开串口; /初始化组件的数据,为串口提供相关参数 private void InitializeControlValues() cmbParity.Items.Clear(); cmbParity.Items.AddRange(Enum.GetNames(typeof(Parity); cmbStopBits.Items.Clear(); cmbStopBits.Items.AddRan

7、ge(Enum.GetNames(typeof(StopBits); cmbPortName.Items.Clear(); foreach (string s in SerialPort.GetPortNames() cmbPortName.Items.Add(s); cmbPortName.Text = cmbPortName.Items0.ToString(); cmbParity.Text = cmbParity.Items0.ToString(); cmbStopBits.Text = cmbStopBits.Items0.ToString(); cmbDataBits.Text =

8、cmbDataBits.Items0.ToString(); cmbParity.Text = cmbParity.Items0.ToString(); cmbBaudRate.Text = cmbBaudRate.Items0.ToString(); EnableControls(); /十六进制转换字节数组 private byte HexStringToByteArray(string s) s = s.Replace( , ); byte buffer = new bytes.Length / 2; for (int i = 0; i s.Length; i += 2) bufferi

9、 / 2 = (byte)Convert.ToByte(s.Substring(i, 2), 16); return buffer; /字节数组转换十六进制 private string ByteArrayToHexString(byte data) StringBuilder sb = new StringBuilder(data.Length * 3); foreach (byte b in data) sb.Append(Convert.ToString(b, 16).PadLeft(2, 0).PadRight(3, ); return sb.ToString().ToUpper();

10、 /显示数据日志 private void Log(LogMsgType msgtype, string msg) rtfTerminal.Invoke(new EventHandler(delegate rtfTerminal.SelectedText = string.Empty; rtfTerminal.SelectionFont = new Font(rtfTerminal.SelectionFont, FontStyle.Bold); rtfTerminal.SelectionColor = LogMsgTypeColor(int)msgtype; rtfTerminal.Appen

11、dText(msg); rtfTerminal.ScrollToCaret(); ); /串口发送方式 #region Local Properties private DataMode CurrentDataMode get if (rbHex.Checked) return DataMode.Hex; else return DataMode.Text; set if (value = DataMode.Text) rbText.Checked = true; else rbHex.Checked = true; #endregion /发送数据 private void SendData

12、() if (CurrentDataMode = DataMode.Text) / 发送用户的文本到串口 ComPort.Write(txtSendData.Text); / 将用户的文本显示到数据窗口 Log(LogMsgType.Outgoing, txtSendData.Text + n); else try / 转换用户十六进制数据到字节数组 byte data = HexStringToByteArray(txtSendData.Text); / 发送数据到串口 ComPort.Write(data, 0, data.Length); / 将用户十六进制数据到数据窗口 Log(Log

13、MsgType.Outgoing, ByteArrayToHexString(data) + n); catch (FormatException) / 转换错误 Log(LogMsgType.Error, 十六进制数据有误: + txtSendData.Text + n); txtSendData.SelectAll(); / / - / public frm_Main() InitializeComponent(); private void Form1_Load(object sender, EventArgs e) InitializeControlValues(); ComPort.

14、DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); /打开串口 private void btnOpenPort_Click(object sender, EventArgs e) if (ComPort.IsOpen) ComPort.Close(); else /设置串口参数 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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1