SAP连接电脑串口读数(电子称,磅等数据读取)

这是几年前做的了,一直都不想分享出来,后来想想为了能够给大家点想法,献出来了。。。

这是一个电脑读称的方法,一般用COMM口连接的电子设备都可参考。

网上搜索MSCOMM32.OCX

1.将上面的MSCOMM32.OCX保存到系统目录下C:\Windows\SysWOW64\MSCOMM32.OCX

然后注册:REGSVR32 C:\Windows\SysWOW64\MSCOMM32.OCX

2.修改注册表:

REGEDIT

在HKEY_CLASSES_ROOT\Licenses下建一项:

4250E830-6AC2-11cf-8ADB-00AA00C00905

修改数值数据:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

重新启动电脑,这样COMM组件就能使用了

以上是在PC上配置的数据。

登陆GUI

T-code: SOLE

新建条目:

OLE 应用程序         MSCOMMLIB.MSCOMM.1

版本号

类标识               {648A5600-2C6E-101B-82B6-000000000014}

CLSID 库类型

OLE 对象名

类型信息键值

包含程序

语言

检查权限

文本

FUNCTION z_bc_get_balance.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     REFERENCE(MODE) TYPE  I DEFAULT 0
*"     REFERENCE(COMMPORT) TYPE  I DEFAULT 1
*"     VALUE(SETTINGS) TYPE  C DEFAULT ‘1200,N,8,1‘
*"     REFERENCE(I_INPUT) TYPE  C OPTIONAL
*"  EXPORTING
*"     REFERENCE(E_OUTPUT) TYPE  C
*"  EXCEPTIONS
*"      NO_CREATE_OBJECT
*"----------------------------------------------------------------------

  TYPE-POOLS:sabc.
  INCLUDE ole2incl.
  DATA pos TYPE i.
  CLEAR: pos,balance,value,e_output.
  PERFORM prm_get_settings CHANGING settings.
*  WAIT UP TO 3 SECONDS.
  PERFORM prm_init.
  PERFORM prm_open_port USING commport settings.
  IF mode = 0."读取串口数据
    PERFORM prm_read_port CHANGING e_output.
  ELSEIF mode = 1."写串口数据
    PERFORM prm_write_port USING i_input CHANGING e_output.
  ENDIF.
  PERFORM prm_final.
  SEARCH balance FOR ‘+‘.
  IF sy-subrc = 0.
    pos = sy-fdpos.
    SHIFT balance BY ( pos + 1 ) PLACES.
  ENDIF.
  SEARCH balance FOR ‘g‘.
  IF sy-subrc = 0.
    pos = sy-fdpos.
    balance = balance+0(pos).
    CONDENSE balance NO-GAPS.
    e_output = balance.
  ENDIF.
  COMMIT WORK
ENDFUNCTION.

此块为配置接口类型模块(自建表用IP地址来配置相应的comm口参数)
*****************************************************************************
FORM prm_get_settings  CHANGING p_settings.
  DATA addr TYPE ni_nodeaddr.
  CLEAR addr.
  CALL FUNCTION ‘TH_USER_INFO‘
    IMPORTING
      addrstr = addr.
  SELECT SINGLE setting INTO p_settings FROM zbctaddr WHERE addr = addr.
  IF sy-subrc = 0.
    CLEAR addr.
  ENDIF.
ENDFORM.                    " PRM_GET_SETTINGS

初始化接口对象
******************************************************************************
FORM prm_init .
  DATA:
    wa_repid LIKE sy-repid.
  CLEAR wa_repid.
  wa_repid = sy-repid.
  CALL FUNCTION ‘AUTHORITY_CHECK_OLE‘
    EXPORTING
      program          = wa_repid
      activity         = sabc_act_call
      application      = ‘MSCOMMLIB.MSCOMM.1‘
    EXCEPTIONS
      no_authority     = 1
      activity_unknown = 2
      OTHERS           = 3.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
  CREATE OBJECT o_obj ‘MSCOMMLib.MSComm.1‘.
  IF sy-subrc <> 0.
    RAISE no_create_object.
  ENDIF.
ENDFORM.                    " PRM_INIT

接口打开
***************************************************************************
FORM prm_open_port  USING commport
                           settings.

  SET PROPERTY OF o_obj ‘CommPort‘ = commport.
  SET PROPERTY OF o_obj ‘Settings‘ = settings.
  SET PROPERTY OF o_obj ‘InputLen‘ = 0.
  SET PROPERTY OF o_obj ‘PortOpen‘ = 1.
ENDFORM.                    " PRM_OPEN_PORT

读取接口数据:因为接口有缓存所以每次读取时都是去掉前面20次的数据
而且每次读取的数据都是不完整的,所以需要将多次读取的数据连接起来,然后截取
****************************************************************************
FORM prm_read_port  CHANGING e_output.
  DATA:
    wa_buffer TYPE i,
    inde      TYPE i.
  DO 70 TIMES.
     inde = inde + 1.
    GET PROPERTY OF o_obj ‘InBufferCount‘ = wa_buffer.
    IF wa_buffer > 0.
      GET PROPERTY OF o_obj ‘Input‘ = e_output.
      IF inde < 20.
        ELSE.
          CONCATENATE balance e_output INTO balance.
      ENDIF.
    ENDIF.
  ENDDO.
  CLEAR:wa_buffer,inde.
ENDFORM.                    " PRM_READ_PORT

往串口写数据,因为没有需求所以没做测试
*********************************************************************
FORM prm_write_port  USING    i_input
                     CHANGING e_output.
  DATA:
    wa_buffer TYPE i.
  SET PROPERTY OF o_obj ‘Output‘ = i_input.
  DO 40 TIMES.
    GET PROPERTY OF o_obj ‘InBufferCount‘ = wa_buffer.
    IF wa_buffer > 0.
      GET PROPERTY OF o_obj ‘Input‘ = e_output.
      EXIT.
    ENDIF.
  ENDDO.
ENDFORM.                    " PRM_WRITE_PORT

读数结束,关闭串口,释放对象,清空变量
************************************************************************
FORM prm_final .
  SET PROPERTY OF o_obj ‘PortOpen‘ = 0.
  FREE OBJECT o_obj.
  CLEAR o_obj.
  COMMIT WORK.
ENDFORM.                    " PRM_FINAL
时间: 2024-07-28 15:04:12

SAP连接电脑串口读数(电子称,磅等数据读取)的相关文章

C#:蓝牙串口读数据和写数据

原文:C#:蓝牙串口读数据和写数据 首次使用C#编写与COM口有关的程序,期间遇到了很多问题,写下自己的经验总结,如有错漏,欢迎批评指正! 1.新建一个串口类(nbsp;SerialPort类) 1 //Create a serial port for bluetooth 2 SerialPort BluetoothConnection = new SerialPort(); 2.串口端口号搜索: string[] Ports = SerialPort.GetPortNames();or (in

串口问题——两个设备和电脑串口助手可以正常通信,但这两个设备不能通信

最近遇到了这个比较奇葩的问题. 有两个设备,分别和电脑的串口助手进行串口通信,都没问题,都可以正常通信. 但是,把这两个设备连接起来,却不能通信!! 检查了一下,电平转换没问题,都是符合RS232标准的,否则也不可能跟电脑串口进行通信. 检查是否直通和交叉线的问题,也不是,连线是正常的. 用示波器查看波形,查看了好长一段时间,怀疑是电平的问题,更换了MAX3232周围电路的四个电容为1uF,然后就可以了. 后来又出现了问题,更换一块一模一样的电路板,什么问题也没了!!!!! 所以最后我也不知道是

开发时手机连接连接电脑局域网

首先通过   方法一:命令查看法   点击电脑左下方“开始”   点击”运行”   在“运行”里输入:cmd  然后回车.如下图:   在出现的对话框内输入:ipconfig   接下来直接回车了,就可以了查看到电脑IP了.   方法二:网上邻居查看法   找到桌面上的“网上邻居”——“属性”进入如下图界面:   接下来有两种方法直接查看电脑IP地址: 第一种方法查看:直接双击“本地连接”——选择”支持“如下图所示:   第二种方法查看:右击“本地连接”——“属性”——“常规”——“Intern

使用RXTX获取电脑串口

RXTX是javacomm串口通信的一个扩展 RXTX开发所需文件的下载地址:http://rxtx.qbang.org/wiki/index.php/Download 解压之后可以看到支持各个平台的文件夹: 如果java的安装路径为D:\java\jre7,则将选中的文件夹中的rxtxSerial.dll复制到D:\java\jre7\bin\,       将RXTXcomm.jar复制到D:java\jre\lib\ext\ 然后在项目的lib包中引入RXTXcomm.jar. 1 /**

华为 S5700S-28P-LI Console连接电脑

在配置交换机之前首先需要将交换机连接到电脑上,下面详解华为S5700S-28P-LI连接电脑 首先,去下载一个华为Console驱动:下载 然后,用配置线,一头连接到交换机console口的RJ45接口上,如图: 另外一端连接到电脑主机COM口,如图: 在电脑上安装一个SecureCRT,如图: 然后,打开"计算机"-"管理"-"设备管理器",查看一下连接的COM几接口.如图: 最后,打开SecureCRT在Quick Connect中,选择&q

Android MediaProvider--文件管理:必现,文件管理器中新建几个文件夹,批量删除后,连接电脑查看仍有部分文件夹未删除

问题描述: [测试步骤]:1.进入文件管理器中,新建几个文件夹,然后批量全选这些文件夹--删除: 2.手机连接电脑,在电脑端查看文件显示. [测试结果]:电脑端查看仍有部分文件夹未删除.插拔USB线几次,在电脑端重新查看,仍显示. [预期结果]:电脑端不应显示已删除的文件夹. [复现概率]:100%(若第一次未复现,步骤1.2重新操作即可复现) [备注]:在文件管理中点击"搜索",也能搜索出这些文件夹. 按以下步骤更容易复现 1.添加一个本地文件夹,删除新添加的文件夹 2.再新建另一文

串口发送模块——1字节数据发送

此次试验旨在通过串口试验,讲述FPGA的硬件设计思想和通用设计流程.串口是电子设计中非常常见,可以说掌握了串口数据收发,就明白了最基本的时序操作.串口的数据收发过程有其固定的数据格式.下面是本次实验使用的数据格式,在满足串口格式规范前提下是可变的: 空闲状态下为高电平,当发送数据时,先发送低电平起始位,后从低位开始逐位发送有效数据比特,数据位位数由双方约定,此处设定为8位.可在数据位后添加数据校验位,但这不是必须的.发送完后发送高电平停止位并持续空闲状态直至下一次发送.虽然本次实验没有用到,但这

最新推出SAP ECC EHP7最新版本IDES带演示数据,带开发ACCESS KEY。

最新推出SAP ECC EHP7最新版本IDES带演示数据,带开发ACCESS KEY. SAP各系统版本安装虚拟机+终身辅导+推荐就业+项目文档+模块PA视频 联系人:tomy(saper) QQ 59728900 MSN或email:  [email protected] http://shop.paipai.com/59728900 制作缘由:   鉴于SAP最新版本EHP7的问世,有的兄弟殷切需要EHP7,因为公司和其他公司有合作,又因有的学CRM的兄弟需要把CRM和ECC装一起.恰好这

关于用Webservice连接QuickBooks Online实现于IOS App数据同步功能的个人记录

公司项目需要用WebService与QBO实现后台数据同步,由于国内没有做过类似第三方产品接口的资料,前前后后找了N久,终于实现功能,现把实现功能步骤贴上来分享: QBO开发者地址(主要用于创建QBO的APP和获取KEY和Token) https://developer.intuit.com/ QBO后台数据管理地址(存放常见的Invoice,Customer等数据) https://qbo.intuit.com/qbo28/login?webredir QBO官方参考文档地址 https://