- 浏览: 686589 次
- 性别:
- 来自: 中山
文章分类
最新评论
-
wuhuizhong:
jFinal支持Rest风格吗?可以想spring mvc那样 ...
在JFinal的Controller中接收json数据 -
wuhuizhong:
在jfinal中应如何获取前端ajax提交的Json数据?ht ...
在JFinal的Controller中接收json数据 -
wuhuizhong:
jfinal如何处理json请求的数据:问题: 在某些api接 ...
在JFinal的Controller中接收json数据 -
wuhuizhong:
Ubuntu14.04 安装 Oracle 11g R2 Ex ...
Oracle 11g release 2 XE on Ubuntu 14.04 -
alanljj:
这个很实用,已成功更新,谢过了!
odoo薪酬管理模块l10n_cn_hr_payroll
我是通过调用API实现的: 如你用的是二进制的,请把缓冲区改成BLOB型的。 首先定义外部函数: Function Boolean CloseHandle(ulong hObject ) Library "kernel32.dll" FUNCTION boolean ReadFile(ulong fhand, & ref string lpbuffer, & ulong numbyte, & ref ulong bytesread, & ulong lpover) LIBRARY "kernel32.dll" FUNCTION ulong CreateFileA(ref string fname, & ulong f_access, & ulong f_share, & ulong f_sec, & ulong f_create, & ulong f_flag, & ulong f_attrib) LIBRARY "kernel32.dll" Function Boolean WriteFile(uLong handle, & ref string lpbuffer, & ulong numbytes, & ref ulong bytesread, & ulong lpOverLaped) Library "Kernel32.dll" Function Boolean GetCommProperties(ulong hFile, & ref COMMPROP lpCommProp ) Library "Kernel32.dll" Function Boolean BuildCommDCBA(ref string lpDef, & ref DCB lpDCB ) Library "Kernel32.dll" Function Boolean SetCommState(ulong hCommDev, & ref DCB lpdcb ) Library "Kernel32.dll" Function Boolean GetCommState(ulong hCommDev, & ref DCB lpdcb ) Library "Kernel32.dll" Function ulong GetLastError() Library "Kernel32.dll" Function Boolean SetCommTimeouts(ulong hCommDev, & ref COMMTIMEOUTS lpctmo ) Library "Kernel32.dll" Function Boolean PurgeComm(ulong hCommDev, & ulong fdwAction ) Library "Kernel32.dll" 实例变量定义: ulong iu_file string is_buffer // 数据缓冲 string is_valid_num = " 123 " // 有效数据 第二是初始设置 string ls_com,ls_commset dcb lst_dcb ls_com = "COM1" // ib_reading = true // 打开串口 iu_file = CreateFileA(ls_com, 3221225472 , 0 , 0 , 3 , 128 , 0 ) if (iu_file < 0 ) then messagebox("错误","无法打开" + ls_com + " #" + string(getlasterror ( )),StopSign!) end if // 初始化DCB ls_commset = " 4800 ,N, 8 , 1 " if ( Not BuildCommDcbA ( ls_commset, lst_dcb )) then messagebox("错误","无法创建DCB" + " #" + string(getlasterror ( )),StopSign!) end if // 设置串口 if ( Not setcommstate ( iu_file, lst_dcb )) then messagebox("错误","无法设置串口" + ls_com + " #" + string(getlasterror ( )),StopSign!) end if // 设置超时 commtimeouts lst_to lst_to.readintervaltimeout = 4294967295 // MAXDWORD // lst_to.readtotaltimeoutconstant = 60000 // lst_to.readtotaltimeoutmultiplier = 10 SetCommTimeouts(iu_file, lst_to) 第三步:读或写(例子中的是读,写可用writefile) ulong lu_bytesread, lu_numbytes string ls_buff ulong lstr_locstruct // 注意!这是ULONG 而不是STRUCT ls_buff = space ( 100 ) setnull(lstr_locstruct) lu_numbytes = 100 if ( not readfile ( iu_file, ls_buff, lu_numbytes, & lu_bytesread, lstr_locstruct)) then messagebox("错误","无法读取 #" + string(getlasterror ( )),StopSign!) timer( 0 ) else if ( lu_bytesread > 0 ) then is_buffer += trim(ls_buff) mle_1. text += trim(ls_buff) // 处理数据 this.wf_is_valid_receieve ( ) // 检验函数 end if end if 第四步:完成后释放端口 closehandle ( iu_file ) 设计串口通讯程序 PB是一种面向对象的、具有可视图形界面的、快速的交互式开发工具,它通过不同数据库采用各自的专用接口或通过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 以上是一个基本的例子,在实际应用过程中应根据不同的情况进行不同的设计,如波特率、帧格式等。
发表评论
-
Talend ESB Runtime查看服务的部署情况
2016-05-04 11:05 764在 Talend Runtime 中: Hit ' ... -
talend的常用控件使用教程
2016-05-04 06:53 26041、建立作业,然后在 ... -
精彩RSS源推荐
2016-04-12 11:21 10231科技类 36氪 http://www.36kr.co ... -
Anypoint Studio 社区版
2016-03-09 23:24 4510Anypoint Studio is just one o ... -
中山市住房公积金提取
2015-06-23 15:41 352中山市住房公积金提取 ================== ... -
用Base64把圖片轉成文字編碼
2014-12-24 09:59 876• 編碼工具: http://www.base64-imag ... -
应用Sphinx + LaTeX + reStructuredText制作PDF文件
2014-05-28 17:24 1727参考: 用Sphinx制作中文pdf http: ... -
開啟Eclipse問題處理一例
2012-03-21 08:27 930開啟Eclipse時報錯並提示查看.metadata\.log ... -
公司内网用eclipse自动更新
2012-03-20 13:27 1413新增eclipse.ini代理设置 -Dorg.eclips ... -
Git常用操作命令
2012-03-08 10:09 855Git常用操作命令收集: ... -
一个成功的Git分支模型
2012-03-04 15:30 412一个成功的Git分支模型. http://nvie.com/ ... -
Using KDiff3 as Git GUI Merge Tool on Windows XP and Windows 7
2012-03-03 05:45 3208Add the KDiff3 directory to yo ... -
使用DocBook
2011-12-22 04:11 1540参考: http://addcn.blogbus.co ... -
在windows上运行的SSH服务器-OpenSSH for Windows和Copssh
2011-11-02 08:31 29326下面介绍两款在windows上 ... -
How to install OpenSSH sshd server and sftp server on a Windows
2011-11-02 08:20 2685http://pigtail.net/LRP/printsrv ... -
敏捷开发修炼之道 - 读后感
2011-10-08 05:47 949高效程序员的45个习惯 敏捷开发修炼之道http://www. ... -
汇率数据
2011-10-06 09:24 2247外汇-人民币即时报价 WEB 服务http://webs ... -
VirtualBox for Windows下安装linux的网络设置
2011-01-24 01:21 3918举例: 主机(windows)设网络桥IP:192.168. ... -
linux单网卡上配置双IP
2010-10-10 19:38 7184/sysconfig/network-scripts在ne ... -
CentOS Linux修改IP地址, DNS, 网关
2010-10-10 19:31 3565一、CentOS 修改IP地址 修改对应网卡的IP地址的配置 ...
相关推荐
pb调用API串口通讯 概述:本文档介绍了使用PowerBuilder调用API实现串口通讯的方法。串口通讯是指计算机与外部设备之间的数据交换过程,通过串口可以实现设备控制、数据采集和远程监控等功能。本文档将详细介绍使用...
在PB中,我们可以通过动态链接库(DLL)调用这些API函数,如`CreateFile`用于打开串口,`SetCommState`用于设置串口参数,`WriteFile`和`ReadFile`用于数据的发送和接收,以及`CloseHandle`用于关闭串口等。...
此为串口运行实例程序,通过api调用实现串口通信。实例可直接运行调试。
PB调用HTTP API接口是PowerBuilder(PB)应用程序与远程服务交互的一种常见方式,这使得PB应用能够利用Web服务或RESTful API获取和传递数据。在这个过程中,PB不仅需要发送HTTP请求,还需要处理响应,尤其是当响应...
PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析json; PB调用http、api,PB解析...
在实际项目中,PB调用API的应用场景广泛,如文件操作、网络通信、进程管理等。熟练掌握这一技能,可以使PB开发的程序更加灵活,功能更加强大,同时也能解决特定场景下的技术挑战。因此,对于PB程序员来说,理解和...
这一过程涉及到多个技术点,包括网络通信、API接口调用以及JSON数据处理。 1. **PB调用HTTP API**:PowerBuilder支持通过.NET或OLE Automation等方式调用HTTP接口。这通常涉及创建一个对象,如.NET的HttpClient或...
标题中的“PB”指的是...综上所述,通过PowerBuilder和Windows API实现串口通信涉及了编程接口调用、数据类型选择、串口配置等多个技术环节,对于开发者来说,理解这些知识点并熟练运用是实现高效、稳定通信的关键。
串口通信,也称为串行通信,是计算机通信的一种常见方式,它通过串行接口发送和接收数据。在PB中,可以使用SerialPort对象来实现这一功能。这个修改后的版本特别强调了对16进制数据的支持,这在处理二进制数据或特定...
在"pb调用api函数详解"的主题下,我们将探讨如何在PowerBuilder中使用API函数,以及一些常见的API调用实例。 1. **API函数调用基础**:在PB中,调用API函数通常使用`Win32API`或`DllImport`函数。`Win32API`是PB...
2、采用API,支持串口信号事件 3、事件监听、读字符,写字符都是采用的是多线程 4、多线程用的是PB的shareobject方法,不会crash。 5、内含虚拟串口工具和串口调试工具以及API串口相关说明文档。
"pb常用windowsAPI调用"这个压缩包文件可能包含了上述提到的一些API的调用示例,比如获取系统时间、控制窗口、内存操作等。通过学习这些例子,开发者可以更好地掌握如何在PB环境中利用Windows API提升应用程序的功能...
网友的纯WINDOWS的API实现串口通信,不用MSCOMM32.ocx控件的,pb9.0的我给转成pb12版本并测试通过
在PB中调用API(应用程序接口)是扩展其功能的一种常见方式,可以访问操作系统级别的功能或者与第三方软件进行交互。 API调用在PB中通常是通过动态链接库(DLL)来实现的,这些DLL包含了系统或特定库提供的函数。在...
PB串口通信(MSCOM)是使用PowerBuilder 8.0(PB8.0)进行串行通信的一种技术。在编程领域,串口通信是一种基本的设备交互方式,尤其在工业自动化、数据采集系统和嵌入式设备中广泛应用。本文将深入探讨PB8.0中的...
PB API调用帮助文档主要涉及的是进程间通信(Inter-Process Communication, IPC)技术中的一种,即Program Broker (PB) API的使用指南。PB API通常用于应用程序之间交换数据和服务调用,尤其在需要跨进程操作时。这...
PB调用API自动升级是一种在PowerBuilder (PB) 应用程序中利用API接口实现程序自动更新的技术。这种技术能够帮助开发者实现软件的自动化维护,确保用户始终使用最新版本的应用,提高系统的稳定性和安全性。 首先,...
总的来说,PB中几乎全部API的调用涉及到了编程的各个方面,从基本的数据操作到高级的系统交互,都需要开发者具备扎实的PB知识和一定的API调用经验。掌握好API的使用,是成为PB开发高手的关键一步。通过不断的实践和...
标题 "PB中的常用WINDOWS API调用" 涉及到的是使用PowerBuilder(PB)这一编程工具进行Windows API函数的调用技术。PowerBuilder是一种基于事件驱动的可视化的应用程序开发环境,尤其适合于构建数据库应用系统。在PB...
6. **API使用场景**:PB调用API可用于各种场景,如系统操作(文件操作、注册表读写)、网络通信、进程控制、硬件交互等。 7. **注意事项**:API调用时需注意平台兼容性,有些API仅适用于Windows,有些可能需要根据...