社区
PowerBuilder
帖子详情
寻找用pb做的串行通信的例子。急!多谢!
am2000
2002-03-22 08:25:49
原来网上有个用pb做的串行通信的例子,我一时找不到了,不知道谁那还有。
麻烦发一份。急用参考!
多谢!
newam2000@hotmail.com
...全文
92
4
打赏
收藏
寻找用pb做的串行通信的例子。急!多谢!
原来网上有个用pb做的串行通信的例子,我一时找不到了,不知道谁那还有。 麻烦发一份。急用参考! 多谢! newam2000@hotmail.com
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
soundbug
2002-03-22
打赏
举报
回复
我这有篇别人写的帖子,不知你用不用的着:
用PB5设计串口通讯程序 王学军
---- PowerBuilder5.0是一种面向对象的、具有可视图形界面的、快速的交互式开发工具,它通过不同数据库
采用各自的专用接口或通过ODBC接口,同时支持多种关系数据库系统、支持多文档界面(MDI)、对象嵌入
与链接(OLE)、动态数据交换(DDE)。利用其独特的数据窗口对象,无须编写SQL语句,便可直接对数
据库进行查询、修改、插入、删除、浏览、打印,以多种文件格式打开和存储数据,因此深受广大用户的欢
迎。在实际应用过程中经常遇到PowerBuilder与其它设备通过串口进行通讯的程序设计如IC卡应用系统中需
通过串口与IC卡读写器进行通讯;在控制系统中,需通过串口与下位机进行通讯。下面介绍PowerBuilder5.0
中常用的两种串口通讯设计方法。
一、 调用Windows SDK函数进行串口通讯
---- 1、Windows SDK函数介绍
OpenComm int OpenComm(LpszDevControl, CbInQueue,cbOutQueue)
LPCSTR lpszdevcontro l 设备控制信息的地址 UINT CbInQueue 接受队列的大小(以字节为单位)
UINT cbOutQueue 发送队列的大小
返回:如调用成功,返回值标示此打开的设备否则其返回值小于0
·CloseComm Int CloseComm(idComDev)
Int idComDey 要关闭的设备 返回值:调用成功返回0,
否则返回负值
·WriteComm int WriteComm(idComDev,lpvBuf,cbWrite)
int idComDev 通讯设备标示符 const void FAR * lpvBuf 数据缓存区地址 int ,cbWrite 要写的长度
返回值:如果成功返回所写的字节数,否则返回值小于0
·ReadComm Int ReadComm(idComDev,lpvBuf,cbRead)
int idComDev 通讯设备标示符 const void FAR * lpvBuf 数据缓存区地址 int cbRead 要读的字节数
返回值:如果成功返回所读的字节数,否则返回值小于0
·FlushComm Int FluseComm(idComDev,fnQueue)
Int idComDev 通讯设备标示符 Int fnQueue 要刷新的队列 返回值:成功时返回0,否则返回为负
---- 2、示例:
---- 图一(略)为一人事管理系统中的查询窗口。如果想与被查询人拨打电话,可输入该人姓名,在输入
过程中,数据窗口会显示满足要求的所有人姓名,双击该行即将该人电话号码显示于单行编辑窗内,
然后按“拨号”按钮即可。
---- 程序设计如下:
---- 在窗口设计菜单中选取:Declare菜单?Declare External Function 输入:
Function int OpenComm(String Comm, Uint Inqueue,Uint Outqueue)Library “USER.EXE”
Function int CloseComm(int lpt)Library “USER.EXE”
Function int WriteComm(int lpt,String buf,int Size) Library “USER.EXE”
Function int FlushComm(int lpt, int no_que)Library “USER.EXE”
“拨号”按钮的”Clicked” 事件编程如下:
int ret String port_2,ph_code port_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位
通讯程序)可方便实现串口通讯
---- 1、 常用属性 CommPort:设置或返回串行端口号,缺省为1。
Setting:设置或返回串行端的波特率、奇偶校验位、 数据位数、停止位。缺省值为"9600,N,8,1"。
PortOpen:设置它为True则打开端口,设置它为False则关闭端口。
InBufferSize:设置或返回接收缓冲区的大小,缺省为1024 字 节。
InBufferCount:返回接收缓冲区内的等代读取的字节个数,设属性为0清除接收缓冲区。
OutBufferSize:设置或返回发送缓冲区,缺省为512字节。
OutBufferCounter:返回发送缓冲区内等待发送的字符数,可用0来清空缓冲区。
Output:向发送缓冲区传送数据
RThreshold: 该属性确定当接收缓冲区内字节个数达或超过该值后就产生代码为ComEventReceive
的OnComm事件,设置位0,则不产生OnComm事件。
CommEvent:有通讯错误或事件发生时产生OnComm事件,CommEvent事件的值可以用来确定引
发OnComm事件的具体的错误或事件常用的有以下几种(更详细的资料可参考MSComm控件帮助文件)
ComEventbreak:接受到中断信号
ComEventFrame:硬件检测到帧错误。
ComEventRxOver:接收缓冲区溢出。
ComEventTxFull:发送缓冲区溢出。
ComEventReceive:接受到规定的字符数。
InputLen:设置或返回接收缓冲区内用Input读入的个数。若取0,则读取整个缓冲区的内容。
Input:返回并删除接受缓冲区的数据。
---- 2、 示例:
---- 下面举一接收程序示例:制作一通讯接收窗口,选择菜单Controls→OLE→Insert Control→Microsoft
Communications Control,
---- 在窗口中出现通信控件图标单击鼠标右键,选择OCX Properties设置常用属性,也可在程序中进行设置
窗口的Open事件程序如下
ole_1.object.CommPort=2
ole_1.object.Settings="9600,N,8,1"
ole_1.object.PortOpen=ture
ole_1.object.Rthreshold=10
ole_1.object..Inputlen=0 . .
通信控件的oncomm事件的程序如下
choose case ole_1.object.CommEvent
case comEventBreak //接收到中断信号
case comEventCDTO //处理CD超时
. . .
case comEvReceive sle_1.text=ole_1.object.Input
. .
end choose
---- 以上是一个基本的例子,在实际应用过程中应根据不同的情况进行不同的设计,如波特率、帧格式等。
---- 总之,利用以上方法可以方便的在PowerBuilder中进行串口通讯,并对接收的数据利用PowerBuilder进
行数据处理。
am2000
2002-03-22
打赏
举报
回复
找到了。
多谢!
zenglong
2002-03-22
打赏
举报
回复
http://www.pdriver.com/listfile2.asp?bigtype=4&as_page=pb
rabbitsfoot
2002-03-22
打赏
举报
回复
http://www.csdn.net/expert/topic/498/498620.xml?temp=.8724787
大数据串行化解决方案教程
本章节为大数据架构师课程的avro-
pb
课程,大数据生态体系庞大,通过本章节avro-
pb
的讲授,你可以轻松的掌握avro-
pb
技术,掌握本节内容后可以为后续的大数据案例夯实基础,形成良好的大数据企业开发思维。 市面上很少...
关于Mongodb的全面总结,学习mongodb的人,可以从这里开始!
原文地址:http://blog.csdn.net/jakenson/article/details/7060431 MongoDB的内部构造《MongoDB The Definitive Guide》 MongoDB的官方文档基本是how to do的介绍,而关于how it worked却少之又少,本人也刚买了《MongoDB TheDefinitive Guide》的影
高负载高并发网站架构分析
由于自己正在
做
一个高性能大用户量的论坛程序,对高性能高并发服务器架构比较感兴趣,于是在网上收集了不少这方面的资料和大家分享。希望能和大家交流 msn: defender_ios@hotmail.com ——————————————————————————————————————— 初创网站与开源软件 6 谈谈大型高负载网站服务器的优化心得! 8 Lighttpd+S
[转]高负载并发网站架构分析
由于自己正在
做
一个高性能大用户量的论坛程序,对高性能高并发服务器架构比较感兴趣,于是在网上收集了不少这方面的资料和大家分享。希望能和大家交流 msn: defender_ios@hotmail.com ——————————————————————————————————————— ? 初创网站与开源软件 6 ? 谈谈大型高负载网站服务器的优化心得! 8 ? Lighttpd+Squid+Apach
C++问题汇总(一)
1.TCP/IP close_wait状态和time_wait状态。 TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。 CLOSE_WAIT状态的生成原因 首先我们知道,如果我们的服务器程序APACHE处于CLOSE_WAIT状态的话,说明套接字是被动关闭的! 因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet: ...
PowerBuilder
1,075
社区成员
66,437
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章