一、会用到一个串口控件:

serialPort

1.串口写入数据

2.串口读取数据

读取数据要在窗体加载的时侯添加一个数据接收事件。

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.Ports;namespace _20_串口助手
{public partial class Form1 : Form{public Form1(){InitializeComponent();System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;}private void label1_Click(object sender, EventArgs e){}private void Form1_Load(object sender, EventArgs e){duanKou.SelectedIndex = 0;boTeiLv.SelectedIndex = 4;//表示已通过serialPort1对象接收了数据。//数据接收事件serialPort2.DataReceived += new SerialDataReceivedEventHandler(port_DataReeived);//必须手动添加事件处理}//为DataReeived提供数据private void port_DataReeived(object sender, SerialDataReceivedEventArgs e)//串口接收数据{if (!rad3.Checked)//如果接收模式为字符模式{string str = serialPort2.ReadExisting();//outMsg.Text = str;}else{byte data;data = (byte)serialPort2.ReadByte();//此处需要强制类型转换,将int类型数据转换为byte类型string str = Convert.ToString(data, 16).ToUpper();//转换为大写十六进制字符串outMsg.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");//空位补"0"}}//打开端口private void openDuan_Click(object sender, EventArgs e){try{serialPort1.PortName = duanKou.Text;//获取端口名serialPort1.BaudRate = Convert.ToInt32(boTeiLv.Text, 10);//获取波特率,十进制数据转换serialPort1.Open();//端口打开// serialPort2.PortName = duanKou.Text;//获取端口名serialPort2.BaudRate = Convert.ToInt32(boTeiLv.Text, 10);//获取波特率,十进制数据转换serialPort2.Open();//openDuan.Enabled = false;//打开端口按钮显示灰色不可用closeDuan.Enabled = true;//关闭端口按钮显示为可用}catch{MessageBox.Show("端口错误,请检查");}}//关闭端口private void closeDuan_Click(object sender, EventArgs e){try{serialPort1.Close();//关闭端口serialPort2.Close();//关闭端口openDuan.Enabled = true;closeDuan.Enabled = false;}catch{MessageBox.Show("端口异常,请检查");}}//发送数据private void send_Click(object sender, EventArgs e){byte[] data=new byte[1];//每次发送一个字节if (serialPort1.IsOpen)//端口打开才执行下面的语句{if (inMsg.Text.Length!=0)//判断是否有输入内容{if (!rad1.Checked)//如果发送模式是字符模式{try{serialPort1.WriteLine(inMsg.Text);//将输入的内容通过端口写入。}catch{MessageBox.Show("端口异常,请检查");serialPort1.Close();//关闭端口duanKou.Enabled = true;//打开端口按钮改为可用。closeDuan.Enabled = false;//关闭端口按钮改为不可用。}}else{for(int i = 0; i < inMsg.Text.Length / 2; i++){data[0]=Convert.ToByte(inMsg.Text.Substring(i*2,2),16);//将获取到的数值转换为16进制;serialPort1.Write(data, 0, 1);//通过端口循环发送(如果输入的是OAOAB,则只发送OA,OB)}if (inMsg.Text.Length % 2 != 0) {data[0] =Convert.ToByte(inMsg.Text.Substring(Text.Length-1,1),16);//单独发送BserialPort1.Write(data, 0, 1);//通过端口发送。}}}}else{MessageBox.Show("端口未开启,请检查");}}}
}

C#串口通讯之-PC串口发送数据相关推荐

  1. STM32串口通信中使用printf发送数据配置方法 开发环境 Keil

    STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 已有 12456 次阅读2011-6-29 23:29 | 在STM32串口通信程序中使用printf发送数据, ...

  2. java 采用串口通信实现LED屏发送数据中文乱码问题

    java 采用串口通信实现LED屏发送数据中文乱码问题 1.定义:Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(1024)) ...

  3. codesys 串口通讯实例_串口通讯例子,(已调试成功可以接收数据)

    io.open();//打开控制台importcom.activeX io.print("qq:761153454,本程序为串口通讯") com1 =com.CreateObjec ...

  4. c++学习 | MFC —— 串口通信(四)发送数据

    文章目录 一.写串口函数 1.源函数 2.API 函数详解 (1)ClearCommError()函数--读取串行端口现在的状态 (2)PurgeComm()函数--清空缓冲区 (3)WriteFil ...

  5. ros串口通讯(读取串口数据)

    ros串口通讯是非常重要的通讯手段,通常跟下位机或者各种usb口外设都是通过串口进行通讯的. 那么我们跟着教程来学习一下如何读取手机通过无线串口发送给电脑的数据. 这里我通过一个usb-ttl工具将蓝 ...

  6. python隐藏画笔箭头的函数是hide_Python开发的串行通信上位机程序三部曲第三部分,串口,通讯,用,图形,方式,显示,数据...

    用Visual Basic或者C#, LabVIEW等软件开发的上位机界面,和文本式交互界面比较而言,就是可以用图形方式来显示数据.那么python可不可以用图形来显示数据呢?Of course! 和 ...

  7. c51单片机串口通信电脑向单片机发送数据

    main.c #include <REGX52.H> #include "UART.H"void Delay(int t) { while(--t); }void ma ...

  8. codesys 串口通讯实例_串口通信RS232的基本接法,原来这么简单,今天终于弄明白了...

    目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(M ...

  9. plc串口通讯 qt_Qt 编写串口调试助手

    一.成品图展示 成品图如下所示: 二.串口通讯步骤 1.在工程文件(.pro)中添加串口通信相关运行库:QT += serialport 2.在头文件中添加: #include #include 3. ...

最新文章

  1. 使用脚本完成AutoCAD自动化任务课程
  2. Java对象和XML之间的编排与反编排
  3. automapper
  4. python操作Excel的5种方式
  5. Android中BroadcastReceiver
  6. Linux中的防火墙----iptables
  7. ESP8266代码分析
  8. 80 多个 Linux 系统管理员必备的监控工具
  9. 断点续传的原理剖析与实例讲解
  10. 在python中打开文件显示没有权限PermissionError: [Errno 13] Permission denied:
  11. DFS/并查集 Codeforces Round #286 (Div. 2) B - Mr. Kitayuta's Colorful Graph
  12. 虚拟机外接USB设备情况的vMotion问题
  13. mysql表格字放大_删除MySQL表中内容,表大小反而变大了
  14. 计算机组成原理唐朔飞第八章ppt,计算机组成原理唐朔飞课件
  15. Java视频特效处理(超全)/PC版美颜相机
  16. 2020年中国透明聚丙烯(TPP)行业概况:仍有较大市场空间 [图]
  17. 华为鸿蒙OS能取代安卓吗?
  18. 为什么要成为「无敌」程序员?
  19. cocos creator开发pc端的浏览器适配问题
  20. ESP32学习笔记(45)——DAC接口使用

热门文章

  1. 哈希表(Hash Table)及散列法(Hashing)
  2. FLASH 延时函数
  3. 【小技巧】如何安装下载MATLAB最新的工具箱
  4. 《新能源汽车废旧动力蓄电池综合利用行业规范条件》企业名单
  5. [4750g] 升级BIOS 禁用独显解决linux下发热问题
  6. [含lw+任务书+中期检查表+辩论PPT+源码等]基于javaweb+mysql数据库实现的大学生助学贷款管理系统[包运行成功]
  7. 2023北京印刷学院计算机考研信息汇总
  8. [MultiMedia][实验5(前景去除)教程]
  9. 高并发下如何保证缓存和数据库的数据一致性?
  10. STM32F103点亮LED灯