从串口读取的功能

2020-08-31 09:34发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我们正在尝试使用从Internet获得的以下功能从串行端口读取数据。

问题在于创建带有语句CREATE OBJECT o_obj'" MSCOMMLib.MSComm.1"'的对象。

这将返回sy-subrc = 2并显示异常NO_CREATE_OBJECT。

我们已经将文件MSCOMM32.OCX复制到c:\ windows \ system32中,并成功使用regsvr32.exe注册了它。

我们在Windows XP和Vista上进行了尝试。

有人有什么主意吗?

预先感谢

功能ZSERIALCOM。

*" ----


" "本地投放"

*"导入

*"参考(模式)类型I默认值0

*"参考(COMMPORT)I型默认值1

*"参考(设置)C型默认'2400,N,8,1'

*"参考(输出)C型可选

*"导出

*"参考(输入)C型

*"例外情况

*" NO_CREATE_OBJECT

*" ----


TYPE-POOLS:sabc。

包括ole2incl。

执行初始化。

使用通讯设置执行open_port。

IF模式= 0。

执行读取端口

更改输入。

ENDIF。

IF模式= 1。

执行write_port

使用输出

更改输入。

ENDIF。

最终执行。

ENDFUNCTION。

数据:o_obj类型ole2_object。

&----


*&表单初始化

&----


  • 文本

----


  • -> p1文字

  • <-p2文字

----


FORM初始化。

数据:

wa_repid像sy-repid。

wa_repid = sy-repid。

CALL FUNCTION'AUTHORITY_CHECK_OLE'

导出

程序= wa_repid

活动= sabc_act_call

application ='MSCOMMLib.MSComm.1'

例外

no_authority = 1

activity_unknown = 2

OTHERS = 3。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

有sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

创建对象o_obj'" MSCOMMLib.MSComm.1"'。

IF sy-subrc <> 0。

RAISE no_create_object。

ENDIF。

ENDFORM。 "初始化

----


  • FORM open_port *

----


  • ........ *

----


  • -> COMMPORT *

  • ->设置*

----


使用通讯设置来形成open_port。

o_obj'CommPort'的设置属性= commport。

o_obj的"设置属性""设置" =设置。

o_obj'InputLen'的设置属性= 0。

o_obj'PortOpen'的设置属性= 1。

ENDFORM。 " open_port

----


  • FORM read_port *

----


  • ........ *

----


  • ->输入*

----


FORM read_port

CHANGING输入。

数据:

wa_buffer TYPE i。

做10次。

获取o_obj'InBufferCount'= wa_buffer的属性。

如果wa_buffer> 0。

获取o_obj'Input'的属性=输入。

退出。

ENDIF。

ENDDO。

ENDFORM。 " read_port

----


  • FORM write_port *

----


  • ........ *

----


  • ->输出*

----


FORM write_port

使用输出

CHANGING输入。

数据:

wa_buffer TYPE i。

o_obj的SET PROPERTY OF'输出'=输出。

做10次。

获取o_obj'InBufferCount'= wa_buffer的属性。

如果wa_buffer> 0。

获取o_obj'Input'的属性=输入。

退出。

ENDIF。

ENDDO。

ENDFORM。

&----


*&最终表格

&----


  • 文本

----


  • -> p1文字

  • <-p2文字

----


FORM决赛。

o_obj'PortOpen'的设置属性= 0。

免费对象o_obj。

ENDFORM。 " finalbligw

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

我们正在尝试使用从Internet获得的以下功能从串行端口读取数据。

问题在于创建带有语句CREATE OBJECT o_obj'" MSCOMMLib.MSComm.1"'的对象。

这将返回sy-subrc = 2并显示异常NO_CREATE_OBJECT。

我们已经将文件MSCOMM32.OCX复制到c:\ windows \ system32中,并成功使用regsvr32.exe注册了它。

我们在Windows XP和Vista上进行了尝试。

有人有什么主意吗?

预先感谢

功能ZSERIALCOM。

*" ----


" "本地投放"

*"导入

*"参考(模式)类型I默认值0

*"参考(COMMPORT)I型默认值1

*"参考(设置)C型默认'2400,N,8,1'

*"参考(输出)C型可选

*"导出

*"参考(输入)C型

*"例外情况

*" NO_CREATE_OBJECT

*" ----


TYPE-POOLS:sabc。

包括ole2incl。

执行初始化。

使用通讯设置执行open_port。

IF模式= 0。

执行读取端口

更改输入。

ENDIF。

IF模式= 1。

执行write_port

使用输出

更改输入。

ENDIF。

最终执行。

ENDFUNCTION。

数据:o_obj类型ole2_object。

&----


*&表单初始化

&----


  • 文本

----


  • -> p1文字

  • <-p2文字

----


FORM初始化。

数据:

wa_repid像sy-repid。

wa_repid = sy-repid。

CALL FUNCTION'AUTHORITY_CHECK_OLE'

导出

程序= wa_repid

活动= sabc_act_call

application ='MSCOMMLib.MSComm.1'

例外

no_authority = 1

activity_unknown = 2

OTHERS = 3。

IF sy-subrc <> 0。

消息ID sy-msgid类型sy-msgty编号sy-msgno

有sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4。

ENDIF。

创建对象o_obj'" MSCOMMLib.MSComm.1"'。

IF sy-subrc <> 0。

RAISE no_create_object。

ENDIF。

ENDFORM。 "初始化

----


  • FORM open_port *

----


  • ........ *

----


  • -> COMMPORT *

  • ->设置*

----


使用通讯设置来形成open_port。

o_obj'CommPort'的设置属性= commport。

o_obj的"设置属性""设置" =设置。

o_obj'InputLen'的设置属性= 0。

o_obj'PortOpen'的设置属性= 1。

ENDFORM。 " open_port

----


  • FORM read_port *

----


  • ........ *

----


  • ->输入*

----


FORM read_port

CHANGING输入。

数据:

wa_buffer TYPE i。

做10次。

获取o_obj'InBufferCount'= wa_buffer的属性。

如果wa_buffer> 0。

获取o_obj'Input'的属性=输入。

退出。

ENDIF。

ENDDO。

ENDFORM。 " read_port

----


  • FORM write_port *

----


  • ........ *

----


  • ->输出*

----


FORM write_port

使用输出

CHANGING输入。

数据:

wa_buffer TYPE i。

o_obj的SET PROPERTY OF'输出'=输出。

做10次。

获取o_obj'InBufferCount'= wa_buffer的属性。

如果wa_buffer> 0。

获取o_obj'Input'的属性=输入。

退出。

ENDIF。

ENDDO。

ENDFORM。

&----


*&最终表格

&----


  • 文本

----


  • -> p1文字

  • <-p2文字

----


FORM决赛。

o_obj'PortOpen'的设置属性= 0。

免费对象o_obj。

ENDFORM。 " finalbligw

付费偷看设置
发送
14条回答
Violet凡
1楼-- · 2020-08-31 10:09

亲爱的朋友,

问题在于创建带有语句CREATE OBJECT o_obj'" MSCOMMLib.MSComm.1"'的对象。

这将返回sy-subrc = 2并显示异常NO_CREATE_OBJECT。

您是如何找到问题的解决方法

谢谢

Sohail

野沐沐
2楼-- · 2020-08-31 10:14

此消息已被审核。

浮生未央
3楼-- · 2020-08-31 10:20

大家好,

我根据以下链接 http://scn.sap.com/thread/1688977

工作

但是在o_obj'PortOpen'的SET PROPERTY OF = 1中,我正在sy-subrc =3。所有端口都已打开。防火墙关闭。我正在使用COMM1端口。

传递了以下参数9600,N,8,1。请让我从这里开始进行指导。

谢谢。

Sridhar。

半个程序猿
4楼-- · 2020-08-31 10:23

Hello Bulent,

能帮我吗,在创建MSCOMMLIB.MSCOMM.1 Sy-subrc = 2的对象时遇到与上述相同的问题。

nice_wp
5楼-- · 2020-08-31 09:59

我已经开发了FM并按照以下链接进行了设置

使用不带第三方软件的ABAP读取COMM端口

当我独立执行FM时,我可以从秤桥上获取重量,但是当我在程序中使用FM时,我无法从秤桥上获取值。该值将变为空白。 建议表示赞赏..

谢谢

Vivek

木偶小白
6楼-- · 2020-08-31 10:20

Hello Fabian,

显然,您甚至无法在程序中创建OLE对象,

在以下行添加了u 在交易中唯一? :

MSCOMMLIB.MSCOMM.1 {648A5600-2C6E-101B-82B6-000000000014}

我在一个项目中使用OLE对象进行串行通信。.

并且成功运行。

我可以为您提供进一步的帮助,

一周热门 更多>