c#中如何进行com口操作?
简介
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
与并口区别
串口形容一下就是一条车道,而并口就是有8个车道同一时刻能传送8位(一个字节)数据。但是并不是说并口快,由于8位通道之间的互相干扰(串扰),传输时速度就受到了限制,传输容易出错。串口没有互相干扰。并口同时发送的数据量大,但要比串口慢。[3] 串口硬盘就是这样被人们重视的。
操作流程
1、添加控件System.IO.Ports.SerialPort
2、打开串口
public void openSport(){try{string[] PortNameArr = SerialPort.GetPortNames();sp.PortName = "COM10";sp.BaudRate = 9600;sp.DataBits = 8;int stopbit = 2;sp.StopBits = (StopBits)stopbit;sp.ReadTimeout = 10000;sp.ReceivedBytesThreshold = 1;sp.Open();}catch (Exception e){MessageBox.Show(e.ToString());}}
3、往串口发命令
public void cabinet(String command){//MessageBox.Show("调用打开通道" + command);try{//MessageBox.Show(command);String strSend = command; //"8A 01 01 11 9B";//处理数字转换string sendBuf = strSend;string sendnoNull = sendBuf.Trim();string sendNOComma = sendnoNull.Replace(',', ' '); //去掉英文逗号string sendNOComma1 = sendNOComma.Replace(',', ' '); //去掉中文逗号string strSendNoComma2 = sendNOComma1.Replace("0x", ""); //去掉0xstrSendNoComma2.Replace("0X", ""); //去掉0Xstring[] strArray = strSendNoComma2.Split(' ');int byteBufferLength = strArray.Length;for (int i = 0; i < strArray.Length; i++){if (strArray[i] == ""){byteBufferLength--;}}// int temp = 0;byte[] byteBuffer = new byte[byteBufferLength];int ii = 0;for (int i = 0; i < strArray.Length; i++) //对获取的字符做相加运算{Byte[] bytesOfStr = Encoding.Default.GetBytes(strArray[i]);int decNum = 0;if (strArray[i] == ""){//ii--; //加上此句是错误的,下面的continue以延缓了一个ii,不与i同步continue;}else{decNum = Convert.ToInt32(strArray[i], 16); //atrArray[i] == 12时,temp == 18 }try //防止输错,使其只能输入一个字节的字符{byteBuffer[ii] = Convert.ToByte(decNum);}catch (System.Exception ex){MessageBox.Show(ex.ToString());//textBox_uartSend.Enabled = false;return;}ii++;}sp.Write(byteBuffer, 0, byteBuffer.Length);}catch (Exception e){MessageBox.Show(e.ToString());}}
4、命令测试
cabinet("5A 00 FF A5");cabinet("5A 03 02 A5");
灯亮了,说明方法是对的
c#中如何进行com口操作?相关推荐
- 发现好文!51单片机特殊功能寄存器 /I/O口操作 /中断/ 定时器/ 串口通信/ ---位寻址解释由来--以及程序例程
51单片机特殊功能寄存器有哪些_功能是什么 最近学习中对寄存器的概念理解很迷惑,I/O口操作/中断/定时器/串口通信四大模块的寄存器应用不太明白,这篇文章,解释的不错,希望帮到各位! 1.21个寄存器 ...
- wincc 用c语言读取用户名,WINCC中使用C脚本获得操作记录_wincc脚本读取报警记录-C文档类资源...
WINCC中使用C脚本获得操作记录 文档号 版本|日期 页数 SIEMENS 应用范围 详述 在生产中,有很多时候需要记录操作员的操作,以便进行事故分析. 本身提供了一些对象可以产 生操作记录,但是在 ...
- 【Arduino学习】一、IO口操作
文章目录 前言 所需材料: 一.Arduino概述 1.什么是Arduino 2.Arduino UNO 二.I/O口介绍 1.I/O口 2.GPIO口 三.I/O 操作函数 1.设置I/O口的工作状 ...
- 从一台虚拟机中启用一个并口设备
从一台虚拟机中启用一个并口设备 你可以附加多至两个双向并口(LPT)到一台虚拟机.虚拟机创建一个虚拟并口,它连接到主机操作系统上的一个并口或者一个文件.你可以在虚拟机进程期间更改一台虚拟机上的并口配置 ...
- STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作
文章目录 GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址 GPIO简介 GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集, ...
- 在 Linux 中使用ImageMagick命令行操作图像文件
使用 convert 命令,可以无需打开图像编辑器进行修改图像文件.convert命令包含在ImageMagick安装包里. Centos8安装ImageMagick ImageMagick 可以安装 ...
- python通过什么连接数据库_python中常用的各种数据库操作模块和连接实例
这篇文章主要介绍了python中常用的各种数据库操作模块和连接实例,包括sqlite3.oracle.mysql.excel,需要的朋友可以参考下 工作中,经常会有用python访问各种数据库的需求, ...
- python操作目录_详解python中的文件与目录操作
详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...
- Java 8 Stream Api 中的 map和 flatMap 操作
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1.前言 Java 8 ...
最新文章
- 两路虚拟化服务器,服务器虚拟化(二)
- SVN使用_获取某版本后改动的文件列表
- 旋转矩阵、欧拉角、四元数比较
- POJ 1679 判断最小树是否唯一
- 现代操作系统: 第八章 多处理机系统
- 详解 nginx 配置文件及构建 web 虚拟主机
- 几个冷门字符串算法的学习笔记(最小表示法,exKMP,Lyndon Word)
- PHP网站后台角色权限管理系统源码
- 数据结构与算法-算法入门-什么是算法-算法的挑战
- 完美配置Tomcat的HTTPS
- Visual Studio 2017 vcvarsall.bat 环境配置对应关系
- 路由器的工作原理定义
- light动名词_动名词与高考考点解析
- MATLAB TIFF转Shape、TIFF和Shape的读写
- 把酸性体质改变成碱性体质的秘密
- 三星Note9的优秀与不足,能承担单骑救主的重任么?
- css动画与渐变案例,使用动画和渐变做一个背景动态网页
- IP和MNC地址协议
- Servlet-千锋-学习笔记
- Unity:DOTween来回运行或者缩放等LoopType.Yoyo