一、调用WindowsSDK函数进行串口通讯
1、WindowsSDK函数介绍
OpenCommintOpenComm(LpszDevControl,CbInQueue,cbOutQueue)LPCSTRlpszdevcontrol设备控制信息的地址UINTCbInQueue接受队列的大小(以字节为单位)UINTcbOutQueue发送队列的大小返回:如调用成功,返回值标示此打开的设备否则其返回值小于0
财软联.盟.fs119.net
·CloseCommIntCloseComm(idComDev)
IntidComDey要关闭的设备返回值:调用成功返回0,否则返回负值
·WriteCommintWriteComm(idComDev,lpvBuf,cbWrite)
intidComDev通讯设备标示符constvoidFAR*lpvBuf数据缓存区地址int,cbWrite要写的长度返回值:如果成功返回所写的字节数,否则返回值小于0
·ReadCommIntReadComm(idComDev,lpvBuf,cbRead)
intidComDev通讯设备标示符constvoidFAR*lpvBuf数据缓存区地址intcbRead要读的字节数返回值:如果成功返回所读的字节数,否则返回值小于0
·FlushCommIntFluseComm(idComDev,fnQueue)
IntidComDev通讯设备标示符IntfnQueue要刷新的队列返回值:成功时返回0,否则返回为负
2、示例:
为一人事管理系统中的查询窗口。如果想与被查询人拨打电话,可输入该人姓名,在输入过程中,数据窗口会显示满足要求的所有人姓名,双击该行即将该人电话号码显示于单行编辑窗内,然后按“拨号”按钮即可。 财,管家园,fs119.net
程序设计如下:
在窗口设计菜单中选取:Declare菜单?DeclareExternalFunction输入:
FunctionintCloseComm(intlpt)Library“USER.EXE”
FunctionintWriteComm(intlpt,Stringbuf,intSize)Library“USER.EXE”
FunctionintFlushComm(intlpt,intno_que)Library“USER.EXE”
“拨号”按钮的”Clicked”事件编程如下:
intretStringport_2,ph_codeport_2=”Com2”//取单行编辑框内容,并用atdt拨号
ph_code=”atdt”sle_code”~r~n”//打开串口
ret=OpenComm(port_2,128,128)//拨号开始
FlushComm(ret,0)
FlushComm(ret,1)
WriteComm(ret,ph_code,len(ph_code))
WriteComm(ret,”~r~n”,2)
CloseComm(ret)
二、利用Microsoft公司提供的通讯控件
利用Microsoft公司提供的通讯控件(Mscomm.vbx,用于16位通讯程序、Mscomm32.ocx用于开发32位通讯程序)可方便实现串口通讯 财管家园.fs119.net
1、常用属性CommPort:设置或返回串行端口号,缺省为1。
财,管家园,fs119.net
PortOpen:设置它为True则打开端口,设置它为False则关闭端口。
InBufferSize:设置或返回接收缓冲区的大小,缺省为1024字节。
InBufferCount:返回接收缓冲区内的等代读取的字节个数,设属性为0清除接收缓冲区。
OutBufferSize:设置或返回发送缓冲区,缺省为512字节。
OutBufferCounter:返回发送缓冲区内等待发送的字符数,可用0来清空缓冲区。
Output:向发送缓冲区传送数据
RThreshold:该属性确定当接收缓冲区内字节个数达或超过该值后就产生代码为ComEventReceive
的OnComm事件,设置位0,则不产生OnComm事件。
CommEvent:有通讯错误或事件发生时产生OnComm事件,CommEvent事件的值可以用来确定引
发OnComm事件的具体的错误或事件常用的有以下几种(更详细的资料可参考MSComm控件帮助文件)
财软 联盟 fs119.net
ComEventbreak:接受到中断信号
ComEventFrame:硬件检测到帧错误。
ComEventRxOver:接收缓冲区溢出。
ComEventTxFull:发送缓冲区溢出。
ComEventReceive:接受到规定的字符数。
InputLen:设置或返回接收缓冲区内用Input读入的个数。若取0,则读取整个缓冲区的内容。
Input:返回并删除接受缓冲区的数据。
2、示例:
下面举一接收程序示例:制作一通讯接收窗口,选择菜单Controls→OLE→InsertControl→MicrosoftCommunicationsControl,
在窗口中出现通信控件图标单击鼠标右键,选择OCXProperties设置常用属性,也可在程序中进行设置窗口的Open事件程序如下: 财.管家园.fs119.net
ole_1.object.Settings="9600,N,8,1"
ole_1.object.PortOpen=ture
ole_1.object.Rthreshold=10
ole_1.object..Inputlen=0..
通信控件的oncomm事件的程序如下
choosecaseole_1.object.CommEvent
casecomEventBreak//接收到中断信号
casecomEventCDTO//处理CD超时
...
casecomEvReceivesle_1.text=ole_1.object.Input
..
endchoose
以上是一个基本的例子,在实际应用过程中应根据不同的情况进行不同的设计,如波特率、帧格式等。
总之,利用以上方法可以方便的在PowerBuilder中进行串口通讯,并对接收的数据利用PowerBuilder进行数据处理。
财管,家园,fs119.net
财管 家园 fs119.net
相关文章
PB中编写10进制到其他进制的转换 用PowerBuilder开发多媒体播放器 Powerbuilder中利用API实现动画 用PowerBuilder6.0建立B/S结构的 在POWERBUILDER中使用WINSOCK控 用PB5设计串口通讯程序 使用PB7.0开发Web应用 在PB中使用VC编制的DLL 在PowerBuilder中动态调用函数 PB中关于动态工资项目问题的解决 PB/Sybase系统开发中的数据库转 PB环境下分布式应用程序的开发 PowerBuilder实用技巧八则 在PB中用OLE存取blob类型数据 深入了解PowerBuilder的数据窗口 PowerBuilder数据窗口编程技巧十 实现PB数据窗口的多表更新 PB中数据窗口的精确页面打印技术 在PB7.0中实现多数据窗口的连续 在PB中如何实现数据模糊查询 PB中用WindowsAPI制作位图菜单 树形目录在PB中的实现与应用 用PowerBuilder实现多层C/S系统 多层C/S系统及其在PB中的应用
Google.cn搜索关键字:
程序 通讯 设计 返回 int 事件 设置 接收 缓冲区 数据
Google.cn搜索相关文章:
谷歌中搜索全球网 用PB5设计串口通讯程序
百度中搜索 用PB5设计串口通讯程序
谷歌中搜索www.fs119.net 用PB5设计串口通讯程序
上一篇:使用PB7.0开发Web应用
Google.cn搜索相关文章:
谷歌中搜索全球网 用PB5设计串口通讯程序
百度中搜索 用PB5设计串口通讯程序
谷歌中搜索www.fs119.net 用PB5设计串口通讯程序
下一篇:在POWERBUILDER中使用WINSOCK控件的方法