一、串口初始化

定义:

  1. using System.IO.Ports;
  2. SerialPort myPort = new SerialPort()

初始化:

  1. //port初始化
  2. public void _port_Init(string comName)
  3. {
  4. myPort.PortName = comName;
  5. myPort.BaudRate = 9600;
  6. myPort.DataBits = 8;
  7. myPort.Parity = Parity.None;
  8. myPort.ReadTimeout = 1000;
  9. myPort.Open();
  10. myPort.DataReceived += new SerialDataReceivedEventHandler(myPort_DataReceived);
  11. }

二、串口接收事件

  1. //接收事件
  2. void myPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
  3. {
  4. if (myPort.IsOpen)
  5. {
  6. try
  7. {
  8. byte[] receiveData = new byte[myPort.BytesToRead];//用receiveData数组读取
  9. myPort.Read(receiveData, 0, receiveData.Length);//读取数据
  10. //myPort.DiscardInBuffer();
  11. for (int i = 0; i < receiveData.Length; i++)
  12. {
  13. check[i] = receiveData[i];                             //简单的定义了一个byte check[1000]接收数据
  14. Console.Write(check[i]);
  15. }
  16. string strRcv = null;
  17. for (int i = 0; i < receiveData.Length; i++)
  18. {
  19. strRcv += receiveData[i].ToString("X2");//十六进制显示
  20. }
  21. /*使用委托,如果需要修改控件*/
  22. }
  23. catch (System.Exception ex)
  24. {
  25. MessageBox.Show(ex.Message, "出错提示");
  26. }
  27. }
  28. }

三、串口发

对应单片机里的串口中断

  1. cmd = "55";
  2. bytCmd[0] = Convert.ToByte(cmd.Substring(0, 2), 16);
  3. myPort.Write(bytCmd, 0, 1);

存留备份

  1. //port发送
  2. public void _port_DataSend(string strCommand)
  3. {
  4. //处理数字转换
  5. string sendBuf = strCommand;
  6. string sendnoNull = sendBuf.Trim();
  7. string sendNOComma = sendnoNull.Replace(',', ' '); //去掉英文逗号
  8. string sendNOComma1 = sendNOComma.Replace(',', ' '); //去掉中文逗号
  9. string strSendNoComma2 = sendNOComma1.Replace("0x", ""); //去掉0x
  10. strSendNoComma2.Replace("0X", ""); //去掉0X
  11. //用' '分开成多个字符串,用strArray装
  12. string[] strArray = strSendNoComma2.Split(' ');
  13. int byteBufferLength = strArray.Length;//获取strArray个数
  14. for (int i = 0; i < strArray.Length; i++)//排除空格数字
  15. {
  16. if (strArray[i] == "")
  17. {
  18. byteBufferLength--;
  19. }
  20. }
  21. // int temp = 0;
  22. byte[] byteBuffer = new byte[byteBufferLength];
  23. int ii = 0;
  24. for (int i = 0; i < strArray.Length; i++) //对获取的字符做相加运算
  25. {
  26. int decNum = 0;
  27. decNum = Convert.ToInt32(strArray[i], 16); //atrArray[i] == 12时,temp == 18
  28. try //防止输错,使其只能输入一个字节的字符
  29. {
  30. byteBuffer[ii] = Convert.ToByte(decNum);
  31. }
  32. catch (System.Exception ex)
  33. {
  34. MessageBox.Show("字节越界,请逐个字节输入!", "Error");
  35. //tmSend.Enabled = false;
  36. return;
  37. }
  38. ii++;
  39. }
  40. myPort.Write(byteBuffer, 0, byteBuffer.Length);
  41. }

四、一些参考目录

http://blog.csdn.net/lllljz/article/details/7603400

http://www.cnblogs.com/elaron/archive/2011/03/15/1985378.html

http://blog.csdn.net/geekwangminli/article/details/7851673

http://blog.csdn.net/cy757/article/details/4474930

http://www.cnblogs.com/screes/p/5633383.html

C# 串口总结的更多相关文章

  1. .NET 串口通信

    这段时间做了一个和硬件设备通信的小项目,涉及到扫描头.输送线.称重机.贴标机等硬件.和各设备之间通信使用的是串口或网络(Socket)的方式.扫描头和贴标机使用的网络通信,输送线和称重机使用的是串口通 ...

  2. [连载]《C#通讯(串口和网络)框架的设计与实现》- 0.前言

                                  目       录 前言 前言 刚参加工作,使用过VB.VC开发软件,随着C#的崛起,听说是C++++,公司决定以后开发软件使用C#,凭借在 ...

  3. 《连载 | 物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯。附:将来支持Windows 10 IOT

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

  4. [连载]《C#通讯(串口和网络)框架的设计与实现》- 12.二次开发及应用

    目       录 第十二章     二次开发及应用... 2 12.1        项目配制... 3 12.2        引用相关组件... 4 12.3        构建主程序... 5 ...

  5. [连载]《C#通讯(串口和网络)框架的设计与实现》- 8.总体控制器的设计

    目       录 第八章           总体控制器的设计... 2 8.1           总控制器的职能... 2 8.2           组装和释放部件... 3 8.3      ...

  6. [连载]《C#通讯(串口和网络)框架的设计与实现》- 6.通讯控制器的设计

    目       录 第六章           通讯控制器的设计... 2 6.1           控制器接口... 2 6.2           串口控制器... 3 6.3          ...

  7. Linux下的串口编程及非阻塞模式

    本篇介绍了如何在linux系统下向串口发送数据.包括read的阻塞和非阻塞.以及select方法. 打开串口 在Linux系统下,打开串口是通过使用标准的文件打开函数操作的. #include < ...

  8. 使用Minicom基于串口调试HiKey

    虽然通过adb shell调试方便,但是有些时候不得不借助于串口进行调试,比如测试suspend to ram之类的功能时,adb服务被关闭. 同时在minicom中也可以进入shell,进行操作. ...

  9. UP Board 串口使用心得

    前言 原创文章,转载引用务必注明链接. 本文使用Markdown写成,为获得更好的阅读体验和正常的图片.链接,请访问我的博客: http://www.cnblogs.com/sjqlwy/p/up_s ...

  10. BluetoothChat用于蓝牙串口通信的修改方法

    本人最近在研究嵌入式的串口通信,任务是要写一个手机端的遥控器用来遥控双轮平衡小车.界面只用了一个小时就写好了,重要的问题是如何与板子所带的SPP-CA蓝牙模块进行通信. SPP-CA模块自带代码,在这 ...

随机推荐

  1. 在VMware中配置网卡之NAT模式

    为什么要在VMware中配置网卡? 因为在远程连接服务器时,需要虚拟机连接网络 虚拟机网络配置的三种模式:桥接模式,NAT模式,主机模式 NAT模式也称之为网络转换模式,两层路由: 第一层路由:物理机 ...

  2. php addcslashes()函数 语法

    php addcslashes()函数 语法 作用:返回在指定字符前添加反斜杠的字符串 语法:addcslashes(string,characters) 参数: 参数 描述 string  必须,规 ...

  3. 在使用KVO遇到的一个问题

    在项目开发中定义了一个单例对象RHUserData的对象,RHOLUserInfo类是单例对象的一个property属性,RHOLUserInfo里面有个userId的属性,在其他类里面进行设置KVO ...

  4. sonarqube6.7.1使用

    1.插件安装 方法1.登入sonarqube-web安装 admin/admin 配置--应用市场--全部 英文片:administration--configuration--marketplace ...

  5. 前端每日实战:36# 视频演示如何利用 CSS 动画原理,在页面上表现日蚀现象

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/OELvrK 可交互视频教程 此视频 ...

  6. mysql实现“存在即更新,不存在即插入”

    方法1:使用replace关键字 replace是insert的增强版,可以实现插入的数据和已存在的数据发生主键或者唯一键重复,则删除已存在的数据,再实现插入,如果不重复,则直接插入数据. 结合Myb ...

  7. python中chr()函数和ord()函数的用法

    一,chr()函数 格式:Chr(<数值表达式>)   说明:函数返回值类型为String,其数值表达式值取值范围为0~255.   例如:Print Chr(78),结果显示:N.   ...

  8. 讨论Spring整合Mybatis时一级缓存失效得问题

    问题 1.学习测试时发现了一级缓存并没有生效,先看案例: setting配置: <settings> <!-- (1) 提供可控制Mybatis框架运行行为的属性信息 --> ...

  9. LINUX 文件合并,去重

    (1)两个文件的交集,并集前提条件:每个文件中不得有重复行1. 取出两个文件的并集(重复的行只保留一份)cat file1 file2 | sort | uniq > file32. 取出两个文 ...

  10. Bootstarp-源码分析-alert.js v3.x和v4.x的对比

    一些概念 1. 使用 data-api 调用 就是给所有带有data-dismiss="alert"的元素绑定点击事件 v3.x: $(document).on('click.bs ...