一、串口初始化

定义:

  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

最新文章

  1. 如何在.NET上处理二维码
  2. 用JQuery Ajax 与一般处理程序 请求数据无刷新,以及如何调试错误
  3. 【BZOJ】1535: [POI2005]Sza-Template
  4. [keepalved]主从上同时出现VIP,无法消失情况
  5. LIS+LCS+LCIS
  6. LintCode &quot;Binary Representation&quot;
  7. 常用加密算法的Java实现总结
  8. NSObject中的isa到底是个什么?
  9. linux根目录下各文件的作用
  10. 【转】android JNI
  11. 进阶笔记(2)——JavaScript语言精碎
  12. 网络编程easy错误点-手知道
  13. 主成分分析_PCA解释
  14. python之路——26
  15. javascript 学习1
  16. FireMonkey 源码学习(4)
  17. 微信小程序 自定义单选复选按钮组的实现(用于实现购物车产品列表功能)
  18. 快速理解 FastCGI、PHP-CGI、PHP-FPM
  19. 【说文解字】Unix与Linux
  20. py文件打包成exe程序

热门文章

  1. SQL_2008安装教程(完整版)
  2. 详解如何定义SQL Server外关键字约束
  3. 几幅图片弄清DFT、DTFT、DFS的关系 数字信号处理
  4. windows防火墙批量开放端口
  5. python里的深浅拷贝
  6. java并发编程笔记(八)——死锁
  7. npm run mock | npm run dev只能启动一个
  8. STL中的查找
  9. 希尔排序(shell)理论---不含源码
  10. C++大整数类模板