串口通信

基于C#初学者简单串口通信

匿名 (未验证) 提交于 2019-12-02 23:32:01
说起串口通信很多初学者可能跟我一样,起初感觉通信这东西是非常复杂,很害怕接近这东西,其实一步一步了解,代码一个模块一个模块的完成,最后发现实现过程非常Easy,接下来我们就一起探索一下。 1.啥是串口,我可以明确告诉你,我没干过硬件,我只知道串口是一根线,这线叫啥名字呢,有的叫RS232,有的叫RS485有兴趣的同学可以查一下,上位机的同学只需要知道这根线是用来通讯的就完事了, 串口通信都要用到以上2种线,一头接设备,还有一头接电脑,你要确保你电脑机箱上也要有RS232的口,如果没有那你就需要买一个RS232转USB的接线去连接你的电脑.然后去检查你的电脑设备上有没有显示出你的端口,具体操作鼠标右键你的电脑,属性>设备管理器>端口,看一看有没有可以使用的端口一般叫做 com1,com2,com3 ......,如果发现有 三角形警告图标 ,那你要注意是不是驱动没装,把驱动装一直下一步结束,用串口线把电脑和设备接好之后进行下一步。 2.设置串口线, 看一下这个设置,个人理(大家还是百度把这几个搞清楚,不用死机知道干啥用就OK) 波特率:听着这名字就感觉和速度有关,直接就当作数据传输速度的大小吧。 数据位:数据位是啥,一个数据多少位,5,6,7,8都行,看你下位机大佬指示他说多少是多少。 校验位:数据你丢过来,我咋知道有没有丢失,或者数据有没有错误,这个校验位就是干这活得,有奇,偶校验

51单片机实验11:串口通信

匿名 (未验证) 提交于 2019-12-02 23:05:13
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cax1165/article/details/86723417 目的:通过电脑向单片机发送字符,单片机收到字符后,向电脑回应相同的字符。 开发板时钟频率为12MHz。程序设置波特率为4800,加倍。 #include<reg52.h> #define uc unsigned char void usartinit() { TMOD=0X20; TH1=0XF3; TL1=0XF3; PCON=0X80; SCON=0X50; TR1=1; ES=1; EA=1; } void usart() interrupt 4 { uc receive_data; receive_data=SBUF; RI=0; SBUF=receive_data; while(!TI); TI=0; } void main() { usartinit(); while(1); } 文章来源: https://blog.csdn.net/cax1165/article/details/86723417

STM32串口通信配置(USART1+USART2+USART3+UART4) (转)

可紊 提交于 2019-12-01 15:27:08
  一、串口一的配置(初始化+中断配置+中断接收函数)   1 /*===============================================================================   2 Copyright:   3 Version:   4 Author:   5 Date: 2017/11/3   6 Description:   7 配置独立看门狗初始化函数,在主函数中运行IWDG_ReloadCounter进行喂狗主函数必须在4s内进行一次喂狗不然系统会复位;   8 函数功能是将接收固定长度的字符串,并将接收后的字符串通过串口发送出去   9 revise Description:   10 ===============================================================================*/   11 #include "stm32f10x_usart.h"   12 #include "stm32f10x.h"   13 #include "stm32f10x_iwdg.h"   14   15 u8 USART1_RX_BUF[21];   16 u8 USART1_RX_CNT=0;   17   18 void IWDG_Configuration

stm32学习笔记——串口通信

醉酒当歌 提交于 2019-11-30 18:17:18
stm32 学习笔记——串口通信 目的:利用串口收发数据 配置文件: #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_usart.h" 寄存器: USART_SR :状态寄存器,第 5 位 RXNE ,收到数据可以读出时置 1 ,第 6 位 TC , 发送完成时置 1 ,第 7 位 TXE ,数据移至移位寄存器置 1 。 USART_DR :数据寄存器,高 23 位保留,低 9 位接收数据,分为发送寄存器 TDR , 和接受寄存器 RDR UASRT_BRR :波特率寄存器,高 16 位保留, 0-3 位波特率整数部分, 4-15 位波特 率小数部分。 USART_CR1 :控制寄存器,第 2 位 RE 接收使能,第 3 位 TE 发送使能,第 9 位 PS ,奇偶校验位,奇校验置 1 ,第 10 位 PCE ,校验控制使能,位 12 字长位,一个 起始位, 8 个数据位,一个停止位置 1 , n 个停止位置 0 。位 13UEUSART 使能。 结构体定义: USART 寄存器结构体 typedef struct { __IO uint16_t SR; uint16_t RESERVED0; __IO uint16_t DR; uint16_t RESERVED1; __IO

实现UART串口通信实验

时光总嘲笑我的痴心妄想 提交于 2019-11-30 01:08:14
1. UART串口简介      串口是“串行接口”的简称,即采用串行通信方式的接口。串行通信将数据字节分成一位一位的形式在一条数据线上逐个传送,其特点是通信线路简单,但传输速度较慢。 因此串口广泛应用于嵌入式、工业控制等领域中对数据传输速度要求不高的场合。本实验我们将使用FPGA开发板上的UART串口完成上位机与FPGA的通信。   串行通信分为两种方式:同步串行通信和异步串行通信。   同步串行通信需要通信双方在同一时钟的控制下,同步传输数据;   异步串行通信是指通信双方使用各自的时钟控制数据的发送和接收过程。 UART是一种采用异步串行通信方式的通用异步收发传输器(universal asynchronous receiver-transmitter),它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。 UART串口通信需要两根信号线来实现,一根用于串口发送,另外一根负责串口接收。 UART在发送或接收过程中的一帧数据由4部分组成,起始位、数据位、奇偶校验位和停止位,如图所示。 其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。 校验位分为奇校验和偶校验,用于检验数据在传输过程中是否出错。 奇校验时,发送方应使数据位中1的个数与校验位中1的个数之和为奇数; 接收方在接收数据时

基于FPGA的UART串口通信实验(VHDL语言实现)

限于喜欢 提交于 2019-11-29 06:54:01
一、前言: 最近在做UART串口通信的相关实验时,在网上查了很多资料,发现网上的大部分文章只注重理论,不注重代码,很多代码有错误不说,而且难以理解。故在完成此实验后,起了写一篇博客的心思,以供有想做相关实验且基础比较薄弱的朋友参阅。 二、实验要求: (1)实现和 PC 双向通信 (2)可通过 FPGA 的键盘扫描,在开发板上设置控制参数,输入发送内容 (3)通信波特率可调 (4)LCD 液晶屏实现菜单、接收到的数据显示 注:关于UART串口通信实验的相关理论网上很多,而且都很详细,我在这里都不赘余了,我的重点是代码及其分析。本次使用到的FPGA开发板为: Cyclone Ⅱ EP2C5Q208C8 核心的MAGIC3200_EP2C5 开发板。 三、引脚分配: 四、代码及其分析: 注:此处代码有两个文件,一个是主文件,另外一个是按键消抖文件。 先上按键消抖文件,此处代码比较好理解。 ------------------------------------------------按键消抖文件--------------------------------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC

STM32中static和extern

一个人想着一个人 提交于 2019-11-29 01:55:10
今天用串口通信接收蓝牙的数据并产生中断,发现一直卡在某个莫名其妙的启动文件上,检查了很多遍多没有发现问题,最后发现问题在接受数据的变量只是局部变量,且没有赋初值,于是,程序只在中断函数运行,所以,以后写变量一定要初始化, void USART1_IRQHander(void) { static u8 r; TIM_Cmd(TIM1,DISABLE);//¹Ø±Õ¶¨Ê±Æ÷ if(USART_GetITStatus(USART1,USART_IT_RXNE) == SET) { r = USART_ReceiveData(USART1); USART_SendData(USART1,r); if(r == 'a') { PWMA += 100; if(PWMA >7199) { PWMA = 5000; } } if(r == 'c') { PWMA -= 100; if(PWMA <5000) { PWMA = 5000; } } if(r == 'b') { PWMB += 100; if(PWMB >7199) { PWMB = 5000; } } while(USART_GetITStatus(USART1,USART_IT_TC) != SET); } USART_ClearITPendingBit(USART1,USART_FLAG_TC); TIM_Cmd(TIM1

c#实现串口通信

≯℡__Kan透↙ 提交于 2019-11-28 21:50:15
参考文章:https://www.cnblogs.com/Zed-H/p/8651882.html 利用虚拟串口软件连接两个虚拟串口,如图连接6,7: 打开串口进行通信如下: 来源: https://www.cnblogs.com/moon-boke/p/11428193.html

串口通信

不打扰是莪最后的温柔 提交于 2019-11-27 15:05:14
一、基本概念 串口通信: 以位(bit)为单位发送或接收数据,底层的数据传输都是字节流,不管什么方式(Hex、Ascll)发送,都会被分解为一个一个字符。 发送方式和接收方式: (1) Hex: 表示发送或接收纯数字,如7则表07,保证每个数都是两位的 (2) Ascll: 表示收发字符串,这是相对来讲让人直观易懂的方式,Ascll码为1、2、3对应的十六进制数为31、32、33 高低电平: 在信号线上共有两种状态,逻辑1(高电平)和逻辑0(低电平) 波特率: 每秒钟传输字符的个数 起始位: 用于标识一个字符传输的开始,发送端在开始发送一个字符前,信号线都处于逻辑1状态,而起始位处于逻辑0状态,通过高电平到低电平的转换,就可以提示接收端数据的传输即将开始 数据位: 就是我们实际发送信息的内容了,因为是一个一个字符方式发送的,所以一般为8位一个字节的数据,也有6、7位,低位(LSB)在前,高位(MSB)在后 校验位: 可认为是一个特殊的数据位,用于判断接收数据位的有无对错,一般是奇偶校验,使用中常常取消 顺便讲一下 奇偶校验, 奇偶校验就是在每一字节(8位)之外又增加了一位作为错误检测位,例如如果数据位是01100110,那么1的个数位4,是偶数,则它的奇校验位为1,偶校验位为0(数据位1的个数为奇数则反之),奇或偶校验码放在数据位的最前面(默认)或者最后面

树莓派python版本的串口通信设置

放肆的年华 提交于 2019-11-27 03:45:37
经过一天的探索终于解决了一个问题,就是在树莓派上用python代码来使用串口来通讯,看过了无数的教程 踩过了无数的坑,下面是我结合各个案例总结的设置方法。 参考链接: 1. https://blog.csdn.net/weixin_41656968/article/details/80085836 2. https://blog.csdn.net/qq_36326623/article/details/79780061 1.输入 sudo nano /boot/cmdline.txt 修改内容为: dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait 2.安装python-serial模块 输入 sudo apt-get install python-serial 3.输入命令 sudo nano /boot/config.txt 在该文件中加两行代码 dtoverlay=pi3-miniuart-bt enable_uart=1 注意!!!这个文本框中可能会有 enable_uart=1 或 enable_uart=0 如果有请屏蔽! 4.修改文本内容记得保存退出,最简单做法 Ctrl+X 再根据提示选择 Y