串口

C# 编写的串口通信程序

半腔热情 提交于 2019-12-29 10:17:27
SerialPort 方法 : https://msdn.microsoft.com/zh-tw/library/system.io.ports.serialport.getportnames.aspx C# 串口通信总结 http://www.cnblogs.com/binfire/archive/2011/10/08/2201973.html 如果一些厂家比较懒的话,没有提供相应的dll,我们只能对它进行串口通信编程了。以前从没接触过串口编程,最近在一个项目中有几个地方都需要采用串口通信,跟公司一个老手请教后,感觉学到了很多东西,特在此做个总结: 一:首先我们来认识下什么是串口: 我们可以看到该串口的属性,在C#中我们使用SerialPort类来表示串口 二:串口调试工具: 在对串口进行编程时候,我们要向串口发送指令,然后我们解析串口返回的指令。在这里向大家推荐一款工具。 串口调试助手.exe void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { //接收数据 string str = ""; do { int count = serialPort.BytesToRead; if (count <= 0) break; byte[] readBuffer = new byte

STM32学习之路(二)

☆樱花仙子☆ 提交于 2019-12-28 01:36:24
特别注意: 硬件资源 USB_SLAVE:用于USB通信,用于模拟USB虚拟串口。 USB_232(USB转串口):有供电功能,可用于程序下载和代码调试。 总结:两者本质上都一样。只是USB_232是借助了外部芯片实现的,优点就是简单,缺点就是要增加成本.直接接USB,则可以省下这个芯片的费用,缺点,则是需要自己写驱动。-摘自正点原子论坛 可能是这个原因,MINI板上只保留了USB转串口这一接口。 突然想到我在别的地方买的最小系统板,插上USB不能识别,应该是板子的USB是USB_SLAVE,我去查阅了一下资料,果然是: 二、ISP下载 STM32的ISP下载只能使用串口1,即对应串口发送接收引脚PA9、PA10。其他引脚可以用来串口通信。 三、JLINK\ST-LINK下载 JINK下载时,必须先给开发板供电,USB或外接电源都可以。 下一步配置Flash Download页面: 最后一步: 编译出现的问题: GPIO(引脚)-具体详见中文参考手册: GPIO相关寄存器: 端口复用:最大限度利用资源 地址重映射:方便布线 来源: CSDN 作者: Angus_星河 链接: https://blog.csdn.net/qq_39171574/article/details/103738611

Win32串口编程 转

依然范特西╮ 提交于 2019-12-27 11:07:47
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。   在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。本文我们只介绍API串口通信部分。   串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。 无论那种操作方式,一般都通过四个步骤来完成: (1) 打开串口 (2) 配置串口 (3) 读写串口 (4) 关闭串口 (1) 打开串口   Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的原型为: HANDLE

Win32串口API

筅森魡賤 提交于 2019-12-26 20:34:38
在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信。串口通信方便易行,应用广泛。 一般情况下,工控机和各智能仪表通过RS485总线进行通信。RS485的通信方式是半双工的,只能由作为主节点的工控PC机依次轮询网络上的各智能控制单元子节点。每次通信都是由PC机通过串口向智能控制单元发布命令,智能控制单元在接收到正确的命令后作出应答。 在Win32下,可以使用两种编程方式实现串口通信,其一是使用ActiveX控件,这种方法程序简单,但欠灵活。其二是调用Windows的API函数,这种方法可以清楚地掌握串口通信的机制,并且自由灵活。本文我们只介绍API串口通信部分。 串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式)。同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程);而重叠操作方式,API函数会立即返回,操作在后台进行,避免线程的阻塞。 无论那种操作方式,一般都通过四个步骤来完成: 打开串口 配置串口 读写串口 关闭串口 (1) 打开串口 Win32系统把文件的概念进行了扩展。无论是文件、通信设备、命名管道、邮件槽、磁盘、还是控制台,都是用API函数CreateFile来打开或创建的。该函数的原型为: HANDLE CreateFile( LPCTSTR

C#的串口编程

半城伤御伤魂 提交于 2019-12-25 21:40:51
C#的串口编程 对于串口编程,熟悉的应该觉得不困难。.NET下就更容易了,废话也没了。开始吧。 1.虚拟串口软件 由于手上没有串口硬件,所以在网上找了一个 VSPM 虚拟串口软件 ,据说是免费的。 下载地址: http://www.skycn.com/soft/30517.html 刚开始也不知道怎么用,摸索了一下,终于成功。 安装以后工作模式选择应该为:VSPM运行在Server模式,支持Client模式设备 然后是使用设备探测器简历虚拟串口。(如果选择 建立默认的串口,软件就会自动帮你建立四个虚拟串口的) 之后就是新增虚拟串口 串口选COM2,选择监听的IP地址:192.168.1.111 ,Client模式的设备尝试连接此端口:8099 建立之后:选择此串口,再选择菜单栏:检查此设备连接,输入刚才新增时候选择的IP地址:192.168.1.111,刚才选择的端口:8099 点击重新连接,这个窗口没有什么反映:但是主窗口的串口最右边一栏:最后一次操作:显示串口:COM2没有打开。 2. .NET串口操作 由于显示:串口:COM2没有打开,所以我们要先打开串口,才能用那个虚拟软件连接它(一开始我也没有注意到,弄了几小时)。 添加引用:Microsoft.VisualBasic 用以下遍历SerialPortNames,获得所有的串口 Microsoft.VisualBasic

在C#中使用SerialPort类实现串口通信

萝らか妹 提交于 2019-12-25 21:26:25
在 .NET Framework 2.0 中提供了 SerialPort 类,该类主要实现串口数据通信等。本文章将本人在学习过程中从网络上搜集到的相关信息写出来供大家参考。 下面主要介绍该类的主要属性(表 1 )和方法(表 .2 )。 如果需要了解更多的信息请登录 http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport(VS.80).aspx 查看。 相关文章 《使用 System.IO.Ports 读取 COM 口数据》 http://www.devasp.net/net/articles/display/727.html 表 1 SerialPort 类的常用属性 名  称 说  明 BaseStream 获取 SerialPort 对象的基础 Stream 对象 BaudRate 获取或设置串行波特率 BreakState 获取或设置中断信号状态 BytesToRead 获取接收缓冲区中数据的字节数 BytesToWrite 获取发送缓冲区中数据的字节数 CDHolding 获取端口的载波检测行的状态 CtsHolding 获取“可以发送”行的状态 DataBits 获取或设置每个字节的标准数据位长度 DiscardNull 获取或设置一个值,该值指示 Null

MSComm控件进行串口编程的基本步骤

送分小仙女□ 提交于 2019-12-25 21:25:32
Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。   要使用ActiveX控件MSComm,程序员必须将其添加入工程,其方法是:   (1)单击主菜单project的子菜单Add To project的Components and Controls选项;   (2)在弹出的"Components and Controls Gallery"对话框中选择Registered ActiveX Controls文件夹中的"Microsoft Communications Control,version 6.0"选项   单击其中的"Insert"按钮,MSComm控件就被增加到工程中了。与此同时,类CMSComm的相关文件mscomm.h和mscomm.cpp也一并被加入Project的Header Files和Source Files中。当然,程序员可以自己修改文件名 1在建立的工程中插入MSComm控件 2添加MSComm控件ID的控制变量或对象 3对串口进行初始化,设置MSComm控件的属性 4添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码

Qt 串口连接

拥有回忆 提交于 2019-12-25 21:24:36
Qt 串口连接 使用 Qt 开发上位机程序时,经常需要用到串口,在 Qt 中访问串口比较简单,因为 Qt 已经提供了 QSerialPort 和 QSerialPortInfo 这两个类用于访问串口。 使用 QSerialPort Qt 提供的 QSerialPort 类继承于 QIODevice,也就是说,除了少数几个串口特有的属性需要单独设置外,可以像一般的 IO 设备(最常见的是文件)一样访问串口。 在项目中加入对串口的支持,先在 .pro 项目工程文件中加入 QT += serialport 然后在程序中包含 QSerialPort 的头文件,即可使用该串口类: // file name: comm.cpp // class: Comm #include "comm.h" #include <QSerialPort> ... QSerialPort port; connect( port, &QIODevice::readyRead, this, &Comm::onRead ); // 异步方法,连接 readyRead 信号和数据响应处理槽函数 port.setPortName( "COM1" ); // 设置串口 port.open( QIODevice::ReadWrite ); //读写方式打开 成功打开串口后,当上位机从串口接收到数据时就会发出 readyRead

keil MDK 中使用虚拟串口调试串口

假装没事ソ 提交于 2019-12-25 21:03:25
转自: http://blog.ednchina.com/e_arm/310610/message.aspx 题目有点拗口,想利用串口调试Modbus啊,GPS啊什么的,可是手头没有硬件,怎么办?其实字节KEIL MDK和VSPD(这里两个软件网上都很容易就可以下载到破解版,如果找不到可以给我联系)就可以,这样调试串口就会很方便了。看了很多的文章,写的都很简单(其实也很简单:))。给出个详细一点的教程。 1. 利用VSPD将PC上的两个虚拟串口连接起来。如图我将COM4 和COM5连接起来。点击Addr pair。 2. 2.可以看到Virtual ports上将两个虚拟串口连接到了一起了。 3.虚拟串口准备就绪了。先将直接输入命令的方式来调试。我们打开KEIL MDK的,设置成仿真的模式。点DEBUG.在COMMAND串口输入:MODE COM4 9600, n, 8, 1 说明: MODE命令的作用是设置被绑定计算机串口的参数。基本使用方式为: MODE COMx baudrate, parity, databits, stopbits 其中: COMx(x = 1,2,…)代表计算机的串口号; baudrate代表串口的波特率;parity代表校验方式; databits代表数据位长度; stopbits代表停止位长度。 例如:MODE COM1 9600, n, 8, 1

1-37、讯为驱动-485驱动

强颜欢笑 提交于 2019-12-25 20:25:37
1.485硬件原理 差分对传输数据的原理 IO数据的传输→差分对 rs232传输的距离在15米以下,RS485传输距离是几十米到1000米以上 为什么485可以传输这么远 差分对的机制可以降低电磁场的干扰 衰减 485传输距离和传输线有关系 注意:双绞线和屏蔽线 2.485原理图 嵌入式上一般使用串口转485 分析芯片datasheet 串口的信号转化为485则: D→(A,B),DE高电平,RE高电平 485信号转化为串口信号则: (A,B),DE低电平,RD低电平 3.驱动 串口驱动是drivers/char/max485_ctl.c 485驱动=串口驱动+GPIO的字符驱动 BUF_XURTS1高电平发送,低电平接收 (GPIO是GPA0_7,串口设备节点是ttySAC1) 驱动中只需要操作GPIO 设备节点/dev/max485_ctl 应用中,控制GPIO和串口=类似led+串口的操作 ioctl是参数是1,则输出高电平,发送 ioctl是参数是0,则输出低电平,接收 串口的节点/dev/ttySAC1 运行程序 发送./test_485 /dev/ttySAC1 1 接收./test_485 /dev/ttySAC1 0 测试程序发送的信息:iTOP-4412: max485 test app(times:%d) 来源: CSDN 作者: poor_guy_liu 链接