从串口读取的功能

2020-08-31 09:34发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我们正在尝试使用从I...

         点击此处--->   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