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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

串口调试助手源代码.docx

1、串口调试助手源代码串口调试助手预源代码using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO;using System.IO.Ports;using System.Threading;using DevExpres

2、s.XtraEditors;using System.Text.RegularExpressions;namespace WindowsFormsApplication3 public partial class Form1 : XtraForm SerialPort sp1 = new SerialPort(); int Flag = 0; int StateChanged = 0; int StateChanged_Ascii = 1; int StateChanged_16 = 0; string Temp = null; string Temp_memoSend = null; pri

3、vate void memoSend_EditValueChanged(object sender, EventArgs e) public Form1() InitializeComponent(); sp1.DataReceived += sp1_DataReceived; private void Form1_Load(object sender, EventArgs e) this.MaximizeBox = false; /检查是否有串口 string str = SerialPort.GetPortNames(); if (str = null) MessageBox.Show(本

4、机没有串口!, error); return; /添加串口项目 foreach (string port in System.IO.Ports.SerialPort.GetPortNames() cbSerial.Properties.Items.Add(port); /串口设置默认选择项 cbSerial.SelectedIndex = 0; Control.CheckForIllegalCrossThreadCalls = false; sp1.DataReceived += new SerialDataReceivedEventHandler(sp1_DataReceived); /订阅

5、委托 private void comboBoxEdit1_SelectedIndexChanged(object sender, EventArgs e) private void OpenSerial_Click(object sender, EventArgs e) sp1.Close(); /SerialPort sp1 = new SerialPort(); if (!sp1.IsOpen)/串口是关闭的,设置参数,打开串口 try /获取串口号 string serialName = cbSerial.SelectedItem.ToString(); sp1.PortName =

6、serialName; /设置各参数 string strBaudRate = cbBaudRate.Text; string strDateBits = cbDataBits.Text; string strStopBits = cbStop.Text; sp1.BaudRate = Convert.ToInt32(strBaudRate);/波特率 sp1.DataBits = Convert.ToInt32(strDateBits);/数据位 switch (cbStop.Text) /停止位 case 1: sp1.StopBits = StopBits.One; break; cas

7、e 1.5: sp1.StopBits = StopBits.One; break; case 2: sp1.StopBits = StopBits.Two; break; default: MessageBox.Show(Error:参数不正确!, Error); break; switch (cbParity.Text) /校验位 case 无: sp1.Parity = Parity.None; break; case 奇校验: sp1.Parity = Parity.Odd; break; case 偶校验: sp1.Parity = Parity.Even; break; defau

8、lt: MessageBox.Show(Error:参数不正确!, Error); break; if (sp1.IsOpen = true) sp1.Close(); sp1.Open(); /btnOpen.Enabled = false; labSerial.Text = 串口号: + sp1.PortName; labState.Text = 状 态:打开; catch (System.Exception ex) MessageBox.Show(Error: + ex.Message, Error); return; /private void CloseSerial_Click(ob

9、ject sender, EventArgs e) / / if (sp1.IsOpen) / / sp1.Close(); / labSerial.Text = 串口号: + sp1.PortName; / labState.Text = 状 态:关闭; / / private void Send_Click(object sender, EventArgs e) string StrSend = memoSend.Text; if (!sp1.IsOpen) MessageBox.Show(请先打开串口!, Error); return; else if (rbtnSendStr.Chec

10、ked) /字符串发送 if (ckTimeSend.Checked & !(string.IsNullOrEmpty(textTime.Text)/判断是否定时发送数据 string Time = textTime.Text; tmSend.Interval = int.Parse(Time) * 1000;/时间单位是秒,化成毫秒单位 tmSend.Start(); /开启定时器 else sp1.Write(StrSend); /写入数据 else /十六进制发送 if (ckTimeSend.Checked & !(string.IsNullOrEmpty(textTime.Text)

11、 string Time = textTime.Text; tmSend.Interval = int.Parse(Time) * 1000; tmSend.Start(); else string StrSend_1 = StrSend.Trim(); /去掉前后的空格 /string StrSend_2 = StrSend_1.Replace( , ); /string StrSend_3 = string.Join( , Regex.Matches(StrSend_2, .|.).Cast().ToList(); string StrArray = StrSend_1.Split( );

12、 /用空格符隔开字符串数组 var Str_Send = new List(); / int byteBufferLength = StrArray.Length; /数组StrArray的长度 for (int i = 0; i StrArray.Length; i+) if (StrArrayi.Trim() = ) /byteBufferLength-; continue; else if (StrArrayi.Length 3) Str_Send.Add(StrArrayi); else Str_Send.AddRange(Devide(StrArrayi); int byteBuff

13、erLength = Str_Send.Count; byte byteBuffer = new bytebyteBufferLength; int ii = 0; for (int i = 0; i Str_Send.Count; i+) /Byte bytesOfStr = Encoding.Default.GetBytes(StrArrayi); int decNum = 0; /if (StrArrayi = ) / / continue; / /else / /decNum = Convert.ToInt32(Str_Sendi, 16); /把字符串转成16进制数 /byteBuf

14、ferii = Convert.ToByte(decNum); / try decNum = Convert.ToInt32(Str_Sendi, 16); /把字符串转成16进制数 byteBufferii = Convert.ToByte(decNum); catch (System.Exception ex) MessageBox.Show(输入错误!, 提示); return; ii+; sp1.Write(byteBuffer, 0, byteBuffer.Length);/从第0个开始写入byteBuffer,长度bytebuffer的长度。 private List Devide

15、(string str) var ret = Regex.Matches(str, .|.).Cast().ToList().ConvertAll(s = s.Value.ToString(); return ret; private void tmSend_Tick(object sender, EventArgs e) string StrSend = memoSend.Text; if (rbtnSendStr.Checked) sp1.Write(StrSend); else string StrSend_1 = StrSend.Trim(); /去掉前后的空格 string StrA

16、rray = StrSend_1.Split( ); /用空格符隔开字符串数组 var Str_Send = new List(); for (int i = 0; i StrArray.Length; i+) if (StrArrayi.Trim() = ) continue; else if (StrArrayi.Length 3) Str_Send.Add(StrArrayi); else Str_Send.AddRange(Devide(StrArrayi); int byteBufferLength = Str_Send.Count; byte byteBuffer = new by

17、tebyteBufferLength; int ii = 0; for (int i = 0; i Str_Send.Count; i+) int decNum = 0; try decNum = Convert.ToInt32(Str_Sendi, 16); /把字符串转成16进制数 byteBufferii = Convert.ToByte(decNum); catch (System.Exception ex) MessageBox.Show(输入错误!, 提示); return; ii+; sp1.Write(byteBuffer, 0, byteBuffer.Length);/从第0

18、个开始写入byteBuffer,长度bytebuffer的长度。 void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e) byte byteRead = new bytesp1.BytesToRead; if (rbtnRceStr.Checked) memoRcv.Text += sp1.ReadExisting(); memoRcv.SelectionStart = memoRcv.Text.Length; memoRcv.ScrollToCaret(); else if (rbtnRce16.Checked)

19、 Byte receivedData = new Bytesp1.BytesToRead; /创建接收字节数组 sp1.Read(receivedData, 0, receivedData.Length); string strRcv = null; for (int i = 0; i receivedData.Length; i+) strRcv += receivedDatai.ToString(X2); memoRcv.Text += strRcv; memoRcv.SelectionStart = memoRcv.Text.Length; memoRcv.ScrollToCaret()

20、; private void Stop_Click(object sender, EventArgs e) /退出接收数据 tmSend.Stop(); private void Clear_Click(object sender, EventArgs e) /清空接收数据 memoRcv.Text = ; private void Time_Press(object sender, KeyPressEventArgs e) if (!Char.IsLetterOrDigit(e.KeyChar) e.Handled = true; else e.Handled = false; privat

21、e void TextTime_KeyPress(object sender, KeyPressEventArgs e) /限制定时发送时间只能输入数字 if (!(Char.IsNumber(e.KeyChar) & e.KeyChar != (char)8) MessageBox.Show(请输入数字, 提示); e.Handled = true; else e.Handled = false; private void memoSend_KeyPress(object sender, KeyPressEventArgs e) private void btnClose_Click(obj

22、ect sender, EventArgs e) /关闭串口 if (sp1.IsOpen) sp1.Close(); labSerial.Text = 串口号: + sp1.PortName; labState.Text = 状 态:关闭; private void Send16_KeyPress(object sender, KeyPressEventArgs e) /string Send16 = memoRcv.Text; /byte buff = new byteSend16.Length / 2; /int index = 0; /for (int i = 0; i Send16.

23、Length; i += 2) / / buffindex = Convert.ToByte(Send16.Substring(i, 2), 16); / +index; / /string result = Encoding.Default.GetString(buff); / MessageBox.Show(result); /memoRcv.Text = result; private void SendStr_KeyPress(object sender, KeyPressEventArgs e) /string SendStr = memoRcv.Text; /byte ba = S

24、ystem.Text.ASCIIEncoding.Default.GetBytes(SendStr); /StringBuilder sb = new StringBuilder(); /foreach (byte b in ba) / / sb.Append(b.ToString(x); / / MessageBox.Show(sb.ToString(); /memoRcv.Text = sb.ToString(); private void rbtnSend16_CheckedChanged(object sender, EventArgs e) StateChanged_16 = 1;

25、StateChanged_Ascii = 0; string StrSend = memoSend.Text; if (Temp_memoSend=StrSend.Trim()& Flag = 1) memoSend.Text = Temp; Flag = 0; else memoSend.Text = ; foreach (char S in StrSend) memoSend.Text += (byte)S).ToString(X2); private void rbtnSendStr_CheckedChanged(object sender, EventArgs e) if (State

26、Changed_16 = 1) Flag = 1; StateChanged_16 = 0; StateChanged_Ascii = 1; string StrSend = memoSend.Text; Temp = memoSend.Text; string StrSend_1 = StrSend.Trim(); /去掉前后的空格 string StrArray = StrSend_1.Split( ); /用空格符隔开字符串数组 var Str_Send = new List(); for (int i = 0; i StrArray.Length; i+) if (StrArray.L

27、ength = 0) break; else if (StrArrayi.Trim() = ) continue; else if (StrArrayi.Length 3) Str_Send.Add(StrArrayi); else Str_Send.AddRange(Devide(StrArrayi); int byteBufferLength = Str_Send.Count; byte byteBuffer = new bytebyteBufferLength; int ii = 0; for (int j = 0; j = 48 & decNum = 65 & decNum = 97 & decNum = 122)/除了数字和字母,其他都转成问号 byteBufferii = Convert.ToByte(decNum); else byteBufferii = Convert.To

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

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