当前位置:文档之家› VS2010之MFC串口通信的编写教程

VS2010之MFC串口通信的编写教程

VS2010之MFC串口通信的编写教程
VS2010之MFC串口通信的编写教程

VS2010之MFC串口通信教程

说明:本人也是刚刚入门MFC,参照一些资料和源代码就实验做了这么一个串口通信工具!资料来源主要有鸡啄米博客网站,里面有详细的学习教程!网上的VS2010源代码都比较少,建议大家先理解一个源代码的构架和结构再深入学习!本文档可以一步一步教你从建立工程到实验调试,是一个非常完整的教程!非常适合新手练习!

——贺州学院大学生创新基地实验室

在制作串口通信所遇到的问题:编辑框的滚动条不会随着数据的更新保持在最后一行!

接下来我们开始讲解MFC串口通信的制作:

一、打开VS2010软件,然后新建一个项目,如下图所示;

我们要用到就是对话框模块,所以选择如下图所示

最大化框最好别选,因为本人现在也没搞出来;

点击完成就新建好一个工程了,等资源就绪之后我们就可以进行制作了;

我们可以看到就绪之后的界面如下图所示,按照步骤把原来的静态文本框和确定按钮、取消按钮删掉;

二、为我们的对话框添加控件添加两个组合边框,并放置好位置;

修改组合边框显示的名称;

在组合边框里面添加编辑文本框;

在这一步一定要小心选择右边的属性;

这一步是把串口控件添加到对话框中来;

选择我们需要的串口控件如下图所示;

三、为编辑框,Combox框,串口控件添加变量;

四、为按钮和串口控件添加程序函数

void C串口V2Dlg::OnBnClickedButtonOpen()//打开串口按钮程序

{

// TODO: 在此添加控件通知处理程序代码?

CString str,str1,n; //定义字符串

GetDlgItemText(IDC_BUTTON_OPEN,str);

CWnd *h1;

h1=GetDlgItem(IDC_BUTTON_OPEN); //指向控件的caption

if(!m_mscom.get_PortOpen())

{

m_comb2.GetLBText(m_comb2.GetCurSel(),str1);//取得所选的字符串,并存放在str1里面

str1=str1+','+'n'+','+'8'+','+'1'; //这句话很关键

m_mscom.put_CommPort((m_comb1.GetCurSel()+1)); //选择串口

m_mscom.put_InputMode(1); //设置输入方式为二进制方式

m_mscom.put_Settings(str1); //波特率为(波特率组á合框)无校验,8数据位,1个停止位m_mscom.put_InputLen(1024); //设置当前接收区数据长度为1024

m_mscom.put_RThreshold(1); //缓冲区一个字符引发事件

m_mscom.put_RTSEnable(1); //设置RT允许

m_mscom.put_PortOpen(true); //打开串口

if(m_mscom.get_PortOpen())

{

str=_T("关闭串口");

UpdateData(true);

h1->SetWindowText(str); //改变按钮名称为‘’关闭串口”

}

}

else

{

m_mscom.put_PortOpen(false);

if(str!=_T("打开串口))

{

str=_T("打开串口");

UpdateData(true);

h1->SetWindowText(str); //改变按钮名称为打开串口}

}

}

void C串口V2Dlg::OnBnClickedButtonSend()//发送数据按钮程

{

// TODO: 在此添加控件通知处理程序代码?

UpdateData(true); //更新控件数据

m_mscom.put_Output(COleVariant(m_Editsend));//把发送编辑框的数据发送出去}

void C串口V2Dlg::OnBnClickedButtonClean()//清除数据按钮程序{

// TODO: 在此添加控件通知处理程序代码

m_EditReceive=_T(""); //给接收编辑框发送空格符

UpdateData(false); //更新数据

}

void C串口V2Dlg::OnBnClickedButtonClose()//退出按钮程序{

// TODO: 在此添加控件通知处理程序代码

if(m_mscom.get_PortOpen())

m_mscom.put_PortOpen(false);

CDialogEx::OnCancel();

}

vb串口通信复习资料总结

串口基本概念与串口调试 1. 串口的定义:串口即串行接口的简称。CPU 与外设连接的接口电路称为I/O 口,串口是I/O 口的一种,采用串 行通信协议在一条信号线上将数据逐位传输的通信模式,所以又称“串行通信接口。 2. 数据传输方式:串行通信(同步&异步)、并行通信。 3. 同步通信:指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致,这就保证了通信双 方在发送和接收数据时具有完全一致的定时关系。 4. 异步通信: 5. 异步通信特点: a) 时钟要求不高,硬件成本低; b) 在不同传输系统中,通信格式设定可完全不同; c) 通信速率较慢; d) 依靠起始位和停止位可以到达同步; 6. 数据编码的方式:不归零编码(NRZ )、曼彻斯特编码、差分曼彻斯特编码。 7. 数据调制方式:幅移键控(ASK )、频移键控(FSK )、相移键控(PSK )。 8. 调幅方式: a) TTL 标准:+5v ——“1”,0v ——“0”(正逻辑); b) RS-232标准:-3V~-15V ——“1”,+3V~+15V ——“0”;(负逻辑); c) 20mA 电流环:存在20mA 电流为“1”,不存在为“0”; d) 60mA 电流环:存在60mA 电流为“1”,不存在为“0 ”; 9. 数据传送方式:单工、半双工、全双工。 10. 数据传送速率: a) 码元速率(R B )单位:波特/秒(baud/S )波特率;R B =log 2N (N 为编码级数); b) 信息速率(R b )单位:比特/秒(Bit/S )比特率;R b =log 22; R B /R b =log 2N /log 22=log 2N (计算机中编码级数为2,比特率等于波特率) c) 位时间(位周期):传送一个二进制位所需时间;T d =1波特/波特率 11. 发送时钟与接收时钟: a) 公式:F =n ×B b) F —发送时钟频率(Hz );B —数据传输的波特率(Baud/s );n —波特率因子(Baud -1); c) 发送/接收时钟周期:T c =1/F =T d /n ; 12. 串口接头类型:9针串口(DB-9)、25针串口(DB-25)13. 串口接线:接收接发送、发送接接收、信号地相连(25为7脚,9为5脚。) 14. 串行通信特点:接线少、成本低。 15. 串口连接线种类: a) 串口直连线;一公一母;发发/收收(延长) b) 串口交叉线;双公/双母;收发/发收(双机通信) 16. RS-232C : a) 全称:EIA-RS-232C (EIA :美国电子工业协会;RS :推荐标准) b) 全名:数据终端设备和数据通信设备之间串行二进制数据交换接口标准 c) 电气特性: i. RxD/TxD 上为1负0正; ii. RTS 、CTS 、DSR 、DTR 、DCD 上有效为正,无效为负 17. 串口调试的内容: a) 认识串口连接线和制作串口连接线; b) 采用相应串口调试工具软件对所使用的串口进行诊断。 18. 串口参数的设置:波特率、数据位、停止位和校验位。

RS232串口通信实验报告

RS232串口通信实验报告 学院:电子信息学院 班级:08031102 姓名:张泽宇康启萌余建军 学号:2011301966 2011301950 2011301961 时间:2014年11月13日 学校:西北工业大学

一.实验题目: 设计一个简单的基于串口通信的信息发送和接受界面 二.实验目的: 1.熟悉并掌握RS232串口标准及原理。 2.实现PC机通过RS232串口进行数据的收发。 3.熟悉VC语言编写程序的环境,掌握基本的VC语言编程技巧。 三.实验内容 程序代码: P// PC1PC2Dlg.cpp : implementation file // #include "stdafx.h" #include "PC1PC2.h" #include "PC1PC2Dlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About class CAboutDlg : public CDialog { public: CAboutDlg(); // Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL

几种通信总线详尽总结

微处理器中常用的集成串行总线是通用异步 接收器传输总线(UART)、串行通信接口(SCI) 和通用串行总线(USB)等,这些总线在速度、 物理接口要求和通信方法学上都有所不同。本文详细介绍了嵌入式系统设计的串行总线、驱动器和物理接口的特性,并为总线最优选择提供性能比较和选择建议。 由于在消费类电子产品、计算机外设、汽车和工业应用中增加了嵌入式功能,对低成本、高速和高可靠通信介质的要求也不断增长以满足这些应用,其结果是越来越多的处理器和控制器用不同类型的总线集成在一起,实现与PC软件、开发系统(如仿真器)或网络中的其它设备进行通信。目前流行的通信一般采用串行或并行模式,而串行模式应用更广泛。 微处理器中常用的集成串行总线是通用异步接收器传输总线、串行通信接口、同步外设接口(SPI)、内部集成电路(I2C) 和通用串行总线,以及车用串行总线,包括控制器区域网(CAN)和本地互连网(LIN)。这些总线在速度、物理接口要求和通信方法学上都有所不同。本文将对嵌入式系统设计的串行总线、驱动器和物理接口这些要求提供一个总体介绍,为选择最优总线提供指导并给出一个比较图表(表1)。为了说明方便起见,本文的阐述是基于微处理器的设计。 串行与并行相比 串行相比于并行的主要优点是要求的线数较少。例如,用在汽车工业中的LIN 串行总线只需要一根线来与从属器件进行通信,Dallas公司的1-Wire总线只使用一根线来输送信号和电源。较少的线意味着所需要的控制器引脚较少。集成在一个微控制器中的并行总线一般需要8条或更多的线,线数的多少取决于设计中地址和数据的宽度,所以集成一个并行总线的芯片至少需要8个引脚来与外部器件接口,这增加了芯片的总体尺寸。相反地,使用串行总线可以将同样的芯片集成在一个较小的封装中。 另外,在PCB板设计中并行总线需要更多的线来与其它外设接口,使PCB板面积更大、更复杂,从而增加了硬件成本。此外,工程师还可以很容易地将一个新器件加到一个串行网络中去,而且不会影响网络中的其它器件。例如,可以很容易地去掉总线上旧器件并用新的来替代。

几种通信总线详尽总结

微处理器中常用的集成串行总线就是通用异步接收器传输总线(UART)、串行通 信接口(SCI)与通用串行总线(USB)等,这些总 线在速度、物理接口要求与通信方法学上都 有所不同。本文详细介绍了嵌入式系统设计 的串行总线、驱动器与物理接口的特性,并为 总线最优选择提供性能比较与选择建议。 由于在消费类电子产品、计算机外设、汽车与工业应用中增加了嵌入式功能,对低成本、高速与高可靠通信介质的要求也不断增长以满足这些应用,其结果就是越来越多的处理器与控制器用不同类型的总线集成在一起,实现与PC软件、开发系统(如仿真器)或网络中的其它设备进行通信。目前流行的通信一般采用串行或并行模式,而串行模式应用更广泛。 微处理器中常用的集成串行总线就是通用异步接收器传输总线、串行通信接口、同步外设接口(SPI)、内部集成电路(I2C) 与通用串行总线,以及车用串行总线,包括控制器区域网(CAN)与本地互连网(LIN)。这些总线在速度、物理接口要求与通信方法学上都有所不同。本文将对嵌入式系统设计的串行总线、驱动器与物理接口这些要求提供一个总体介绍,为选择最优总线提供指导并给出一个比较图表(表1)。为了说明方便起见,本文的阐述就是基于微处理器的设计。 串行与并行相比

串行相比于并行的主要优点就是要求的线数较 少。例如,用在汽车工业中的LIN串行总线只需要一根线来与从属器件进行通信,Dallas公司的1-Wire总线只使用一根线来输送信号与电源。较少的线意味着所需要的控制器引脚较少。集成在一个微控制器中的并行总线一般需要8条或更多的线,线数的多少取决于设计中地址与数据的宽度,所以集成一个并行总线的芯片至少需要8个引脚来与外部器件接口,这增加了芯片的总体尺寸。相反地,使用串行总线可以将同样的芯片集成在一个较小的封装中。 另外,在PCB板设计中并行总线需要更多的线来与其它外设接口,使PCB板面积更大、更复杂,从而增加了硬件成本。此外,工程师还可以很容易地将一个新器件加到一个串行网络中去,而且不会影响网络中的其它器件。例如,可以很容易地去掉总线上旧器件并用新的来替代。 串行总线的故障自诊断与调试也非常简单,可以很容易地跟踪网络中一个有故障的器件并用新器件替换而不会干扰网络。但另一方面,并行总线比串行速度快。例如,Rambus公司的“Redwood”总线速度可高达6、4GHz,而最高的串行速度不会超过几个兆赫。 在工业与汽车应用中常用的串行协议 1、UART

C#串口通信总结

我们知道对于标准DLL,可以采用DllImport进行调用。例如: [DllImport("KMY350X.dll")] private static extern int OpenPort(int PortNum, int BaudRate); 如果一些厂家比较懒的话,没有提供相应的dll,我们只能对它进行串口通信编程了。以前从没接触过串口编程,最近在一个项目中有几个地方都需要采用串口通信,跟公司一个老手请教后,感觉学到了很多东西,特在此做个总结: 一、首先我们来认识下什么是串口 右键我的电脑-管理-设备管理器-端口,选择一个端口,点击属性。 我们可以看到该串口的属性,在C#中我们使用SerialPort类来表示串口 ConfigClass config = new ConfigClass(); comm.serialPort.PortName = config.ReadConfig("SendHealCard"); //波特率 comm.serialPort.BaudRate = 9600; //数据位 comm.serialPort.DataBits = 8; //两个停止位

comm.serialPort.StopBits = System.IO.Ports.StopBits.One; //无奇偶校验位 comm.serialPort.Parity = System.IO.Ports.Parity.None; comm.serialPort.ReadTimeout = 100; comm.serialPort.WriteTimeout = -1; 二、串口调试工具 在对串口进行编程时候,我们要向串口发送指令,然后我们解析串口返回的指令。在这里向大家推荐一款工具。 串口调试助手.exe 将要发送的指令用空格隔开,选择HEX显示为放回的字符串。 三、正式编程

串口记录

一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。 串行口控制寄存器SCON(见表1)。 表1 SCON寄存器 表中各位(从左至右为从高位到低位)含义如下。 SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。 表2 串行口工作方式控制位 其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。 SM2 :多机通信控制位。该仅用于方式2 和方式3 的多机通信。其中发送机SM2 =1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。 REN :串行接收允许位:REN =0 时,禁止接收;REN =1 时,允许接收。 TB8 :在方式2、3 中,TB8 是发送机要发送的第9 位数据。在多机通信中它代表传输的地址或数据,TB8=0 为数据,TB8=1 时为地址。 RB8 :在方式2、3 中,RB8 是接收机接收到的第9 位数据,该数据正好来自发送机的TB8,从而识别接收到的数据特征。 TI :串行口发送中断请求标志。当CPU 发送完一串行数据后,此时SBUF 寄存器为空,硬件使TI 置1,请求中断。CPU 响应中断后,由软件对TI 清零。 RI :串行口接收中断请求标志。当串行口接收完一帧串行数据时,此时SBUF 寄存器为满,硬件使RI 置1,请求中断。CPU 响应中断后,用软件对RI 清零。 电源控制寄存器PCON(见表3)。 表3 PCON寄存器

VC++MSComm串口发送与接收上位机制做总结

VC++MSComm串口发送与接收上位机本设计用VC编写的一个简单的上位机软件,实现功能为:简单的串口数据发送与接收。 具体步骤如下: 一.建立应用程序工程“串口通信_韩季方01” 1.打开VC++6.0—》建立对话框MFC应用程序:串口通信_韩季方01—》 添加基本控件如图1.0。 图1.0 2.添加MSComm控件:Add To Project—》Components and Controls…打开如图1.1,双击“Registered ActiveX Contronls”项—》出现如图1.2—》选择“Microsoft Communications Control,version 6.0”控件—》点击“Insert”—》提示“…”确认即可—》弹出图1.3—》点击“OK”—》再点击“Close”。 下一步,将对话框资源控件中的电话状控件托到对话框中即可,如图1.4。

图1.1 图1.2

图1.3 图1.4 3.编辑控件及其属性设置:如表1.0

4.添加变量及其类型方法如图1.5 图1.5 二.初始化串口:设置MSComm控件属性 打开Class Wizard—》Member Variables—》选IDC_MSCOMM1—》点击“Add Varialbe…”—》添加变量m_ctrlComm。如图1.5。 之后,在工作空间打开文件如图2.0—》在函数OnInitDialog中添加代码如图2.1。

图2.0

图2.1 三.添加串口事件消息处理函数OnComm() 打开Class Wizard—》Member Maps—》Class Name中选择C_01Dlg—》在Object Ids中选择IDC_MSCOMM1—》在Message中选中OnComm—》单击“Add Function”按钮—》将函数名改为OnComm(好记而已)—》单击OK,完成后如图3.0 同理在函数OnComm()中添加代码如图3.1

STC系列单片机串口通信的总结

串口通信: 软件调试,在调试过程中需要使用虚拟串口助手。在编程中注意设计时钟和波特率。注意程序的串口设置和串口调试助手中串口设置相同。 单串口: mode com2 9600,0,8,1 assign com2 sout stime = 0 多串口: mode com2 9600,0,8,1 assign com2 s0out 0表示单片机的串口0 编程: STC12介绍的方法: 接收一个字节的函数和发送字符串的函数,发送字符串需要知道字符串的长度。对于接收字符串的函数,可以仿照通过调用接收一个字节的函数,写出接收字符串函数。 void WriteUart(uchar *pucData ,uchar ucLength) { if(ucLength == 0) { return; } if(UartBuzy == 1) return; ucSendLength = ucLength; pucSendData = pucData; SBUF = *pucSendData; UartBuzy = 1; ucSendedCount = 0; } uchar ReadUart(void) { uchar Data; Data = ucRecData; ucRecData = 0; return Data; } Unsigned char RString(unsigned char *s, unsigned int len) { Unsigned int i; For(i =0;i

void UartIRQ(void) interrupt 4 { if(RI) { RI = 0; ucRecData = SBUF; } if(TI) { TI = 0; ucSendedCount++; if(ucSendedCount >= ucSendLength) { UartBuzy = 0; return; } else { SBUF = *(pucSendData + ucSendedCount); } } } STC15: STC15只给出了发送函数,且发送函数有瑕疵,具体见最后分析。void UART1_ISR(void) interrupt 4 using 1 { if (RI) //接收数据 { RI = 0; //清除RI位 } if (TI) //发送数据 { TI = 0; //清除TI位 busy = 0; //清忙标志 } } void SendData(unsigned char dat) { while (busy); //等待前面的数据发送完成 busy = 1; SBUF = dat; //写数据到UART数据寄存器 } void SendString(char *s) {

串口通讯实验报告

网络编程与实践实验报告 实验内容:串口通信编程 学号:S201502189 姓名:职荣豪 日期:2015-9-28

一、实验要求 使用VS2010编写基于对话框的MFC应用程序,两个窗口分别使用两个串口,使得这两个窗口可以进行通信,包括数据的发送与接收。 二、实验原理 本实验使用Microsoft Communications Control控件,利用这个ActiveX控件,只需要编写少量代码即可轻松进行通信。 该控件相关的函数如下: put__CommPort:设置串口号 put_Settings:以字符串的形式设置波特率、奇偶校验位(n-无校验,e-偶校验,o-奇校验)、数据位数、停止位数 put_InputMode:设置接收数据的类型(0-文本类型,1-二进制类型) put_InputLen:设置从接收缓冲区读取的字节数,0表示全部读取 put_InBufferSize:设置接收缓冲区大小 put_OutBufferSize:设置发送缓冲区大小 put_RThreshold:设定当接收几个字符时触发OnComm事件,0表示不产生事件,1表示每接收一个字符就产生一个事件 put_SThreshold:设定在触发OnComm事件前,发送缓冲区内所允许的最少的字符数,0表示发送数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件put_PortOpen:打开或关闭串口,传入参数为true时打开串口,传入参数为false时关闭串口 get_CommEvent:获得串口上刚发生的事件,事件值为2表示接收到数据 get_InBufferCount:获得缓冲区中的数据位数 get_Input:获取缓冲区数据,返回类型为VARIANT put_Output:发送数据 三、设计思路 需要添加一个Microsoft Communications Control控件,用于进行串口通信。 由于要求同一程序可运行两个窗口进行相互通信,需要两个窗口开启两个不同串口,故需要添加一个Edit Control控件用于输入串口号,并添加打开串口按钮,在点击该按钮时对串口控件的参数进行设置并开启串口。同时添加关闭串口按钮,点击后关闭串口并可以对串口号进行修改。 需要添加两个Edit Control 分别用于显示接收到的数据以及输入要发送的数据。 需要添加一个发送按钮,点击后发送输入的数据。 四、实验步骤 1.建立基于对话框的MFC应用程序 2.添加界面控件并设置ID与Caption

串口实验报告

课程名称:嵌入式实验班级:2013级物联网1班姓名程谣日期:2015.12.10 一、实验题目:串口通信实验 二、实验目的 1、熟悉STM32的编程环境的使用; 2、掌握STM32的串口的编程; 三、实验内容 编写STM32 的串行通信程序,实现由串口调试助手输入任意字符串,STM接收后返回到串口调试助手输出。 四、实验步骤 1、建立工程,编写主要代码 2、时钟配置 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE); 3、GPIOA配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; // USART1_TX (PA.9) GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //USART1_RX (PA.10) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA10 4、USART 初始化设置 USART_https://www.doczj.com/doc/019916445.html,ART_BaudRate = bound;//一般设置为9600; USART_https://www.doczj.com/doc/019916445.html,ART_WordLength = USART_WordLength_8b;//字长为8位数据格式 USART_https://www.doczj.com/doc/019916445.html,ART_StopBits = USART_StopBits_1;//一个停止位 USART_https://www.doczj.com/doc/019916445.html,ART_Parity = USART_Parity_No;//无奇偶校验位 USART_https://www.doczj.com/doc/019916445.html,ART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制

串口通信实验报告

华南农业大学 实验报告 -----------------------------------------目录----------------------------------------- 1、实验任务和目的.............................................................................................................. - 1 - 2、实验准备.......................................................................................................................... - 1 - 3、实验步骤................................................................................................................................ - 1 - 4、实验分析与总结.................................................................................................................... - 1 - (1)、分析............................................................................................................................. - 1 - (2)、总结............................................................................................................................. - 3 -

RS422、RS485串行通讯标准总结共10页文档

RS422、RS485串行通讯标准总结 RS232、RS422、RS485串行通讯标准总结2010-04-09 09:55 RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展 而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许 在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多 机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以"RS"作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。 RS232接口就是串口,电脑机箱后方的9芯插座,旁边一般有 "|O|O|"样标识。一般机箱有两个,新机箱有可能只有一个。笔记本电脑有可能没有。有很多工业仪器将它作为标准通信端口。通信的内容与格式一般附在仪器的用户说明书中。计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又 称EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。(1)接口的信号内容实际上RS-232-C的25条引线中有许多是很少使用的,在计算机与终端通讯中一般只使用3-9条引线。RS-232-C最常用的9条引线的信号内容见附表1所示(2)接口的电气特性在RS-232-C中任何一条信号线的电压均为负逻辑关系。即:逻辑"1",-5--15V;逻辑"0"+5-+15V。噪声容限为2V。即要

串口通信论文报告

串口通信课程总结 题目:温度实时监控系统 目录 绪论 (2) 1.1 研究课题的目的及意义 (2) 1.2国内外现状 (2) 1.3本设计的目标 (3)

2 开发工具介绍 (4) 2.1 keil简介 (4) 2.2 C++ Build简介 (4) 3 下位机设计 (5) 3.1 下位机的系统设计 (5) 3.2 下位机的程序设计 (5) 3.3 DS18B20模块设计 (6) 3.5 串口模块设计 (9) 4 上位机设计 (12) 4.1 上位机系统简介 (12) 4.2 温度显示部分 (12) 4.3 数据库存储部分 (13) 4.4 温度曲线部分 (14) 5 调试过程 (15) 5.1 下位机调试 (15) 5.2上位机调试 (15) 6 系统总结 (17) 【参考文献】 (18)

绪论 1.1 研究课题的目的及意义 实时测量温度是在当今的自动化控制领域尤为重要,比如电机运行时温度的升高会直接影响其寿命和可靠性;液体混合加热时,温度过低过高都有可能液体混合的效果。所以,实时温度监控就像人的一双眼睛,把无形的温度,转换成我们可见的信号。通过这个系统,我们就能轻松地管理好温度并对其做出相应的判断。 最传统的实时监控温度系统是由温度计直接完成。随着科技的发展,电子温度计取代了传统的温度计,由MCU控制温度芯片,加上显示部件,就构成了第二代温度监控系统。随着PC的普及,以及远程监控的优越性,第三代温度监控系统应运而生。第三代温度监控系统是由MCU控制温度传感器,将采集到的温度数据实时传送到上位机,并在上位机上将接收到的数据进行分析处理,最终讲结果返还,同时还可以通过上位机直接去操作实物,从而达到了非接触式的效果,这大大地提高了效率,同时稳定性和可靠性也相应有个提高。 那么,对于我们来说,实时温度监控系统的设计是让我们掌握并巩固所学的知识,提高自己动手能力的一个重要的途径。通过对它的设计,我们可以掌握实时温度监控系统的精髓从而使能力得到很大的提高,这样就有利于我们今后自身的发展。 1.2国内外现状 目前计算机硬件技术朝着巨型化、微型化和单片化三个方向发展,单片机代表着计算机技术的一个发展方向,先后经历了4位机、8位机、16位机、32位机和64位机等几个发展阶段。 虽然单片机经过几个阶段的发展,但从实际情况来看,并没有出现像微机处理那样推陈出新、更新换代的局面,这也是单片机发展的一大特点。4位、8位、16位、32位都存在于市场中,各有应用领域。不过,各类单片机为适应市场需

rs232串口通信实验报告

RS232串口通信实验 一、实验题目: 设计一个简单的基于串口通信的信息发送和接受界面二.实验目的: 1.熟悉并掌握RS232串口标准及原理。 2.实现PC机通过RS232串口进行数据的收发。 3.熟悉VB语言编写程序的环境,掌握基本的VB语言编程 技巧 二、实验设备 PC机一台,RS232串口通信线(9针)一条,跳线一个(一台PC实验时,将其中的2和3短接) 三、实验内容 1、界面内容: (1)打开串口与关闭串口按钮 (2)信息发送区:信息编辑区,发送信息按钮 (3)信息接受区:信息显示区,接收信息按钮 2、主窗体的程序代码: Private Sub Form1_load() MSComm1.PortOpen = True End Sub

Private Sub Command1_Click() MSComm1.Output = Text1.Text End Sub Private Sub Command2_Click() Dim buf$ buf = MSComm1.Input If Len(buf) = 0 Then Text2.Text = "empty" Else Text2.Text = buf End If End Sub Private Sub Command3_Click() MSComm1.PortOpen = False End End Sub Private Sub Command4_Click() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If MSComm1.Settings = "9600,N,8,1" MSComm1.RThreshold = 1 MSComm1.PortOpen = True MSComm1.InputLen = 0 End Sub 然后生成R232.EXE可执行文件:

串口通信原理汇总

rs232串口通信原理 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用于获取远程采集设备的数据。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: a,波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的bi t的个数。例如300波特表示每秒钟发送300个bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么

时钟是4800Hz。这意味着串口通信在数据线上的采样率为4800Hz。通常电话线的波特率为14400,28800和36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。 b,数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。 c,停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 d,奇偶校验位:在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位也是可以的。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。如果是奇校验,

串口通信实验报告

VB串口通信实验 1.实验要求: 设计一个串口通信程序,用于信息的接收和发送 2.实验目的: 2.1熟悉并掌握串口标准及原理; 2.2实现PC机与PC机之间通过串口进行数据的收发; 3.3熟悉VB语言编写程序的环境,用VB开发串口通信程序 3.实验步骤: 3.1运行VB程序,出现“新建工程”对话框,选择“标准EXE”,单击“打开”命令按钮,进入VB工程集成开发环境; 3.2 添加串口通信控件MSComm到工具箱中; 3.3界面设计 (1)添加两个文本框控件:Text1 和Text2,用于输入要发送的字符和显示要接收的字符; (2)添加两个标签控件:Label1和Label2,作为发送和接收字符区的标签;(3)添加一个按钮控件:Command1执行发送字符命令; (4)添加一个MSComm控件。 3.4属性设置

3.5程序代码设计 Private Sub Form_Load() https://www.doczj.com/doc/019916445.html,mPort = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.InputMode = 0 MSComm1.RThreshold = 1 MSComm1.PortOpen = True End Sub Private Sub Cmdsend_Click() If Textsend.Text = "" Then pp = MsgBox("发送的数据不能为空!", 16) Exit Sub End If MSComm1.Output = Trim(Textsend.Text) End Sub Private Sub MSComm1_OnComm() Dim buf$ Select Case https://www.doczj.com/doc/019916445.html,mEvent Case comEvCD Case comEvCTS Case comEvDSR Case comEvReceive buf = Trim(MSComm1.Input) Case comEvSend

单片机串口总结

51单片机串口总结 有句话说“尽信书不如无书”,要学好单片机就要不断的、大胆的实验,要多怀疑,即使我们的怀疑最终被证明是错误的那么这也是进步(人们认识事物很多情况下来源于怀疑),当怀疑出现时就要去实践。有很多东西如果不通过实践是不可能掌握其中隐藏的奥秘,就拿51单片机串口通讯这一块,我认为掌握很好了,可以很轻松的实现数据的接收、发送,但这段时间当我重新学习串口时,我才发现里面还有很多小细节从没注意,更别说研究了。对于接收发送程序永远是按照别人的模式来编写程序,并没有真真正正的挖掘深层次的内容。我身边太多的人在临摹别人的程序,当然我不反对,但是希望自己多问几个问什么,单纯的会编程是学不好单片机的,毕竟单片机有自己独特的硬件结构。 开讲之前先简要说一下同步、异步通信: 同步通信:发送方时钟对接收方时钟控制,使双方达到完全同步。 异步通信:发送与接受设备使用各自的时钟控制数据的发送和接受过程(虽然时钟不同,但一般相差不大)。 51单片机串行口结构 从上图中我们看到,51单片机有两个物理上独立的接收、发送缓冲器SBUF,它们共用同一个地址99H,但是请注意:接收缓冲器只能读而不能写,发送缓冲器只写不读。单片机可以同时实现数据的发送与接收功能。 特别注意:接收器是双缓冲结构:当前一个字节从接收缓冲区取走之前,就已经开始接收第

二个字节(串行输入至移位寄存器),此时如果在第二个字节接收完毕而前一个字节还未被读走,那么就会丢失前一个字节。 51单片机串口控制寄存器 关于51单片机的控制寄存器各个位表示的含义在这里我只谈SM2。 SM2为多机控制位,主要用于工作方式2和3,当接收机的SM2=1时,可以利用接收到的RB8来控制是否激活RI(RB8=0不激活RI,收到的数据丢失;RB8=1时收到的数据进入SBUF,并激活RI ,进而在中断服务程序中将数据从SBUF中读走)。当SM2=0时,不论收到的RB8为何值都将使接收到的数据进入SBUF,,并激活RI,通过控制SM2实现多机通信。 51单片机串口通讯方式 51串口通讯方式有3种,方式0、方式1、方式2与方式3,他们的工作模式不尽相同。 首先他们的波特率很容易忽视。方式0与方式2的波特率固定,而方式1和3的波特率由T1的溢出率决定。 方式0的波特率=f/12 系统晶振的12分频,换句话说12M晶振的情况下,其波特率可达1M,速度是很高的(当我们在选用串行器件并采用方式0时需要特别注意器件所能允许的最大时钟频率)。 方式2 =f/64或f/32(当SMOD=1时为f/32,SMOD=0时为f/64)。 曾经我用方式2进行MODBUS通信时,总是通讯失败,我仔细检查程序,没有发现逻辑错误,特别是当我参考别人的程序时,发现很少有人用方式2进行MODBUS通讯,所以当时自己妄下结论51单片机的串行方式2不可用,直到有一天夜里我突然想起方式2的波特率是固定的,试想晶振11.0592M/32或11.0592M/64怎么也不可能是9600啊,怎么可能通信成功。这才恍然大悟,看来还是自己太武断了,没有认真看书啊。有时我们认为我们犯这样的错误很低级,其实我们很多次都是因为这样的小细节导致我们整个系统不正常,正所谓“千里之堤毁于蚁穴”,这些细节真的伤不起啊。 方式1、3波特率=(2smod/32)*T1的溢出率,其中TI的溢出率=f/{12*[256-(TH1)]}. 关于3种通讯方式其中有几点特别容易出错: 1、无论采用哪种通讯方式,数据发送和接受都是低位在先,高位在后。 2 、3种方式作为输出,由于输出是CPU主动发送,不会产生重叠错误,当数据写入SBUF 后,发送便启动(通过单片机内部逻辑控制,与程序无关),当该字节发送结束(SBUF空),

PB串口通信

PB串口编程资料 MSCOMM32参数基本介绍 MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。 1.MSComm控件两种处理通讯的方式 MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。 1.1 事件驱动方式 事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。 在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。 1.2 查询方式 查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。 例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。 2.MSComm 控件的常用属性 MSComm 控件有很多重要的属性,但首先必须熟悉几个属性。 CommPort 设置并返回通讯端口号。 Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。 PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。 Input 从接收缓冲区返回和删除字符。

相关主题
文本预览
相关文档 最新文档