问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是串口通讯

发布网友 发布时间:2022-04-23 04:34

我来回答

3个回答

热心网友 时间:2022-05-01 17:53

用Delphi开发串口通信软件一般有两种方法:一是利用Windows的通信API函数,另一种是采用Microsoft的MSComm控件。利用 API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂的低层次通信程序。而利用 MSComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作。
一、MSComm控件的主要属性及事件
(1)CommPort:设置或返回串行端口号,缺省为1。
(2)Setting:设置或返回串口通信参数,格式为“波特率,奇偶校验位,数据位,停止位”。例如:MSComm1.Setting:='9600,n,8,1'
(3)PortOpen:打开或关闭串行端口,格式为:MSComm1.PortOpen:=
(4)InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。
(5)InBufferCount:返回接收缓冲区内等待读取的字节数,可通过设置该属性为0来清空接收缓冲区。
(6)RThreshold:该属性为一阀值,它确定当接收缓冲区内的字节个数达到或超过该值后就产生代码为ComEvReceive的OnComm事件。
(7)SThreshold:该属性为一阀值,它确定当发送缓冲区内的字节个数少于该值后就产生代码为ComEvSend的OnComm事件。
(8)InputLen:设置或返回接收缓冲区内用Input读入的字节数,设置该属性为0表示Input读取整个缓冲区的内容。
(9)Input:从接收缓冲区读取一串字符。
(10)OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。
(11)OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。
(12)OutPut:向发送缓冲区传送一串字符。
如果在通信过程中发生错误或事件,就会引发OnComm事件,并由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性值来执行不同的操作。CommEvent属性值及其含义如下:
(1)ComEvSend:值为1,发送缓冲区的内容少于SThreshold指定的值。
(2)ComEvReceive:值为2,接收缓冲区内字符数达到RThreshold指定的值。
(3)ComEvFrame:值为1004,硬件检测到帧错误。
(4)ComEvRxOver:值为1008,接收缓冲区溢出。
(5)ComEvTxFull:值为1010,发送缓冲区溢出。
(6)ComEvRxParity:值为1009,奇偶校验错误。
(7)ComEvEOF:值为7,接收数据中出现文件尾(ASCII码为26)字符。
二、程序样例
在Delphi3.0中无法使用MSComm控件,笔者使用的是Delphi5.0。MSComm控件是VB中的OCX控件,首先需要将其添加到 Delphi中,选择菜单“Component”→“Import ActiveX Control”,在“Import ActiveX”页内选择“Microsoft Comm Control”,点击“Install”安装,安装后在“ActiveX”组件板中出现MSComm图标,即可被使用。有一点要注意,在Object Inspector中MSComm控件的Input和Output属性是不可见的,但它们仍然存在,这两个属性的类型是OleVariant(Ole万能变量)。
下面是一接收程序的样例(主要部分),大家可根据实际需要进行完善。
在Form中放置一Memo控件用于显示接收的数据,Combobox1选择通信参数(Setting属性值),Combobox2选择串口(CommPort属性值),按Button1开始接收数据,按Button2停止接收。
procere TForm1.FormCreate(Sender: TObject);
begin
Mscomm1.InBufferCount :=0; // 清空接收缓冲区
Mscomm1.InputLen :=0; // Input读取整个缓冲区内容
Mscomm1.RThreshold :=1; // 每次接收到字符即产生OnComm事件
end;
procere TForm1.Button1Click(Sender: TObject);
begin
Mscomm1.Settings :=ComboBox1.Text;
if ComboBox2.Text ='com1' then // 假设只考虑com1和com2两种情况
Mscomm1.CommPort :=1
else
Mscomm1.CommPort :=2;
Mscomm1.PortOpen :=true; // 打开串口
Mscomm1.DTREnable :=true; // 数据终端准备好
Mscomm1.RTSEnable :=true; // 请求发送
end;
procere TForm1.Button2Click(Sender: TObject);
begin
Mscomm1.PortOpen :=false; // 关闭串口
Mscomm1.DTREnable :=false;
Mscomm1.RTSEnable :=false;
end;
procere TForm1.MSComm1Comm(Sender: TObject);
var
recstr:Olevariant;
begin
if Mscomm1.CommEvent = 2 then
begin
recstr := Mscomm1.Input ;
Memo1.text := Memo1.Text + recstr;
end;
end;

热心网友 时间:2022-05-01 19:11

利用串口实现两个设备的信息通信

热心网友 时间:2022-05-01 20:45

请看 百度百科
串口通讯
http://ke.baidu.com/view/542656.htm
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
通达信主力指标公式汇总(2023版附源码) 有什么类似地下城与勇士的手机游戏 有没有类似于DNF的游戏 苹果手机类似地下城的游戏 有什么类似地下城与勇士的手机游戏 我的系统是WIN732,为什么玩不了光晕2,一点开就弹一个对话框出来说:无法... 玩诛仙电脑配置诛仙3要求电脑配置 ...永磁为什么要跌啊?东方财富金力永磁股吧?金力永磁股票最初..._百度... 怎么找回注销的微信号 如果把手机号码和微信号同时销户后期还能找回微信号吗? 仓储与库存有什么区别? 仓位和库位的区别 怎样将图片置满正张A4规格的纸(word) 产后可以吃泡面吗?可以吃蛋糕 ,面包吗? 富士乐施m115w能无线用苹果平板电脑打印Excel文档吗?可以的话怎么设置连接?知道的告诉一下,谢谢 生产现场管理程序流程? SEO 面试技巧告诉我一下 吃个泡面吃个蛋糕,明天去体验,会有问题吗? 485通讯与串口通讯区别 生产计划控制程序怎麽做? 吃了方便面又吃奶油蛋糕会怎么样嘛? 串口通信的参数如何设置 中国有什么特产的水果? 串口通信和串行通信有什么区别啊? 网红蛋糕现在有那些? 公司的生产计划控制程序如何制定?最好有范文 关于串口通讯 榕树的资料 生产管理流程有哪些? 串口通信与并行通信有什么区别 滨州的风俗民情 生产过程控制程序由哪个部门编制 生产计划控制程序(中英文) 串口通信需要几根线?能说说吗 拉好苹果车上高速收过路费吗? 绿色食品 富士 晚上是吃蛋糕还是方便面长得肉多? 单片机串口通信有什么应用?举几个例子 生产过程的质量控制主要有哪些内容 富士F450数码相机可以用2G的内存卡吗? 河南一女子28岁生日收到馒头花束引热议,你收到过哪些有趣的礼物? 作为生产管理人员为什么要学习(生产过程控制程序)? 用方便面料包蒸鸡蛋糕对身体有害吗 谁能给我关于苹果的资料?急急急~~~ 方便面盒子怎么放才能摆放成9层生日蛋糕? 生产运行程序与安全管理方案的区别是什么 你的家乡有些怎样的特色美食,你最喜欢哪个? 初一学生,食堂吃饭。中午吃了泡面,晚上吃了蛋糕和关东煮,回来又吃了肯德基。吃了太多油炸食品,怎么排 生产管理流程是什么? 怎样看手机不伤眼 质量如何在生产过程中有效控制 吃方便面鸡蛋糕饼干鼻子出热气怎么回事 怎么看手机不伤害眼睛