Delphi编写串口通讯方法(转)
来源:互联网 发布:js date unix时间戳 编辑:程序博客网 时间:2024/04/30 05:47
引用:http://blog.163.com/yu_gui_cao/blog/static/100161012006111615027411/
前段时间做了个东西,计算机和单片机通讯,用到了串口编程,上位机用的是delphi,下位机用ats51,程序也做完了,顺便把Delphi串口编程给大家介绍以下.
Delphi串口通讯可以同过以下几种方式:
1.windows API函数。
2.Spocmm组件。
3.PComm库函数。
4.Mscomm控件。
1.windows API函数。
由于API函数实现起来比较麻繁,这里就不做介绍了,主要介绍其它三种方式 .
第三方组件或控件封装了API函数,简化了编程的难度,并提供详细帮助。
2.Spocmm组件。
SPcomm是专为delphi开发的组件,虽然它也是封装了windows api,但是我们可以看到它的源代码。它提供了事件驱动的方式接收数据,在编程的时候,我们可以在OnReceiveData函数中接收到数据,并做相应的处理,
SPcomm组件的主要属性:
CommName:设置通讯端口
BaudRate:设置端口波特率
StartComm:打开串口
StopComm:关闭串口
WriteCommData:向串口写数据函数
OnReceiveData:接收数据事件
3.PComm库函数。
PComm库函数
PComm库函数是台湾MOXA公司提供的,他为用户提供了基于win32 api的开发接口。
PComm库函数分为7大类
控制函数
数据输入函数
数据输出函数
状态函数
事件驱动函数
传输文件函数
特殊设定函数
控制函数主要包括sio_open,sio_close,sio_ioct,sio_flush
sio_open(PortNum) 打开串口
sio_close(PortNum)关闭串口
sio_ioct(PortNum, baud, mode)设置串口的工作模式,包括 波特率,数据位,停止位,效验等
sio_flush(portNum,func)清除发送,接收缓冲区 其中func为0清空输入 ,为1清空输出,为2清空输入输出
数据输入函数主要包括sio_getch,sio_read
sio_getch(PortNum) 从输入缓冲区读一个字符
sio_read(PortNum,buf,len)从输入缓冲区读指定个数的字符
数据输入函数主要包括sio_putch sio_write
sio_putch(PortNum)写一个字符到输出缓冲区
sio_write(PortNum,buf,len)写指定个数的字符到输出缓冲区
状态函数主要包括 sio_lstatus,sio_getbaud,sio_getmode
sio_lstatus(portNum)获取串口的CTS,DSR,DCD,RI线的状态
sio_getbaud(portNum)获取串口的波特率
sio_getmode(portNum)获取串口的工作模式。对应sio_ioct函数
事件函数主要包括 sio_term_irq,sio_cnt_irq
sio_term_irq(portNum,func,code)当接收到指定字符时响应事件,func为回调函数名,code为指定的字符
sio_cnt_irq((PortNum,func,count)当接收到指定个数字符时响应事件,func为回调函数名,count接收的个数
传输文件函数主要包括sio_FtASCIIRx,sio_FtASCIITx
sio_FtASCIITx(portNum,fname,func,key)发送一个文本文件
sio_FtASCIIRx(portNum,fname,func,Key,sec)接收一个文本文件
由PComm库提供的函数可以看出来PComm的接口还是挺丰富的。并且MOXA公司为我们提供PComm详细的使用说明。
4.Mscomm控件。
(1)Mscomm控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法.它提供了两种处理通信的方法:事件驱动方式,查询方式。
1事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中接收到字符等,在种情况下,可以利用 MSComm控件的 OnComm 事件捕获并处理这些通讯事件。OnComm事件还可以检查和处理通讯错误。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。
2查询方式实质上还是事件驱动。查询方式是通过检查 CommEvent属性的值来查询事件和错误,并做相应的处理。在有些情况下,这种方式还是显得挺便捷的。
MSComm控件的常用属性
CommPort设置并返回通讯端口号。
Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen设置并返回通讯端口的状态。也可以打开和关闭端口。
Input从接收缓冲区返回和删除字符。
Output向传输缓冲区写一个字符串。
- Delphi编写串口通讯方法(转)
- 在WIN32中的串口通讯(Delphi)
- 在WIN32中的串口通讯(Delphi)
- Delphi与串口通讯
- DELPHI串口通讯基础
- Delphi MSComm 实时串口通讯
- DELPHI 串口通讯编程 SPCOMM
- 串口通讯方法(WINAPI实现)
- --串口通讯方法(WINAPI实现)(
- 转:使用C#编写串口通讯的资料
- 用Windows API 编写串口通讯程序(—)
- 用Windows API 编写串口通讯程序(二)
- 8.S5PV210串口通讯实战 Makefile编写(二)
- 使用ACTIVEX和DELPHI开发串口通讯
- 使用ACTIVEX和DELPHI开发串口通讯
- rs232串口通讯模块 - Delphi编程
- Delphi 中串口通讯的实现
- Delphi 中串口通讯的实现
- jquery解析json方法大全
- Selenium 2.0 WebDriver – A Test Automation example
- 语言基础知识之运行算符
- Android控制所有播放器的音频切换上下首歌、播放、停止
- 读取文件方法大全
- Delphi编写串口通讯方法(转)
- 时间差计算
- 一个操作系统的实现
- C++ Interview Question test-3 question-2
- AC自动机算法详解
- Android开发:Wifi基础
- JSON数据格式和js操作json总结
- Your content must have a TabHost whose id attribute is 'android.R.id.tabhost' 解决
- 手机免费上网时代已经到来