PB9.0串口编程:发送与接收指令实现及16进制与字符串支持

版权申诉
0 下载量 190 浏览量 更新于2024-10-20 收藏 90KB RAR 举报
资源摘要信息:"PB9.0串口通信与指令发送接收实现方法" PB(PowerBuilder)是一种流行的商业软件开发工具,其广泛应用于客户端和服务器端应用程序的开发。PB9.0版本继承了PowerBuilder一贯的开发效率,提供了强大的数据库操作能力以及丰富的用户界面设计功能。其中,串口通信是PB中的一项重要功能,它允许应用程序与计算机的串行端口进行数据交换,进而实现与其他设备或软件的通信。本资源将详细介绍如何在PB9.0中使用串口发送和接收指令,涵盖16进制和String字符串类型的数据。 在PowerBuilder中进行串口通信,首先需要使用PowerScript编程语言来编写相应的串口操作代码。PB提供了串口通信对象Serial Port,通过该对象可以轻松实现串口的打开、关闭、配置以及数据的发送和接收。以下是几个关键知识点的详细说明: 1. 创建串口对象: 在PB中创建串口对象主要是通过声明一个Serial Port类型的变量,并利用Open()函数打开一个指定的串口。例如: ```powerscript Serial Port mySerialPort mySerialPort.Open("COM1", 9600, 8, 1, NoParity!, NoFlowControl!) ``` 这段代码表示创建一个名为mySerialPort的串口对象,并尝试打开COM1端口,设置波特率为9600,数据位为8位,停止位为1位,无校验位,无流控制。 2. 配置串口参数: 在打开串口后,开发者可以根据需要配置串口的其他参数,如传输控制、超时设置等。例如设置非缓冲模式: ```powerscript mySerialPort.SetTransProtocol(nBufferedProtocol!, nBinaryProtocol!) ``` 通过配置传输协议为nBufferedProtocol和nBinaryProtocol,可以关闭缓冲模式,使数据按字节发送。 3. 发送数据: 串口通信中发送数据可以是16进制数据也可以是字符串数据。根据描述,PB9.0支持这两种类型的数据发送。 ```powerscript // 发送字符串数据 string strSend = "Hello, Serial Port!" mySerialPort.Write(strSend) // 发送16进制数据 string hexSend = "ABCD" string strSendHex = TransHexToString(hexSend) mySerialPort.Write(strSendHex) ``` 其中TransHexToString是一个转换函数,用于将16进制字符串转换为对应的字节码。 4. 接收数据: 接收数据通常涉及到数据缓冲区和事件处理。PB中可以通过触发事件来处理接收到的数据。 ```powerscript // 使用缓冲区接收数据 string strBuffer, strReceivedData // 定义缓冲区大小 long nBufferSize = 1024 long nBytesRead strBuffer = Space(nBufferSize) nBytesRead = mySerialPort.Read(strBuffer, nBufferSize) strReceivedData = Left(strBuffer, nBytesRead) // 处理接收到的数据 ``` 5. 关闭串口: 数据通信完成后,需要关闭串口以释放系统资源。 ```powerscript mySerialPort.Close() ``` 6. 异常处理: 在串口操作中,可能遇到各种异常情况,如串口无法打开、读写超时等,应当进行适当的错误处理和异常捕获。 ```powerscript TRY // 尝试执行串口操作 CATCH Exception as e // 捕获异常并处理 END TRY ``` 以上是在PB9.0中实现串口通信的基本知识点和操作步骤。需要注意的是,为了实现更稳定的通信,还需要编写相应的错误检测机制和超时处理机制。此外,由于串口通信通常涉及到外部设备,因此还需要确保设备与计算机的硬件连接正确,以及通信参数(如波特率、数据位、停止位等)与外部设备设置相匹配。通过以上步骤,开发者能够在PowerBuilder 9.0中有效地实现串口通信功能,并进行指令的发送与接收。
2020-08-06 上传
利用Win API Kernel32.dll 实现与串口通迅。 原先的程序数据缓冲区采用String类型,因此无法发送H00,现将数据缓冲区修改为BLOB类型,可以发送任意数据了。 在原先程序的基础上,增加了两个对象:pfc_n_cst_numerical,uo_bit_operator Email: leio88@126.com 以下是原作者的话: 本程序通过调用WINDOWS API函数,实现了类似MSCOMM控件的功能。使PB可以很方便地访问串口。由于所有功能都是PB代码实现的,因此比使用OCX控件访问串口的方式更稳定。 为了方便使用已将所有功能都封装在uo_comm._control用户对象中。使用时只需在窗口中像放置普通对象(如:按钮)一样放置一个uo_comm_control对象即可对串口进行访问。 访问串口时先调用of_setcommport(string commport)和of_setcommsettings(string commsettings)来设置要访问的端口及端口初始化参数,然后调用of_open()初始化端口。或直接使用of_open(string comport,string commsettings)带参数初始化端口。端口初始化成功后即可使用of_send(string sendstring)向串口发送数据,或使用of_read()读取串口数据。当串口有数据到达时,触发ue_received事件,该事件提供给用户用来存放读取串口数据的代码(值得注意的是,当数据到达接收端时,由于发送的数据很长或通讯速率较低,会多次触发ue_receieved事件,并且在ue_received事件中使用of_read()得到的数据仅只是整个发送数据的一部分,需要将多次接收到的数据连接起来才是完整的接收数据)。若对串口所有操作结束不再需要对串口进行操作,则调用of_close()将端口关闭。 Email: blazingstar@sina.com