从串口读取的功能

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条回答
xfwsx85
1楼-- · 2020-08-31 10:09

您好,

您是否知道该怎么做。 我遇到了同样的问题。

ZJXianG
2楼-- · 2020-08-31 10:07

亲爱的朋友,

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

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

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

谢谢

Sohail

小c菟菟
3楼-- · 2020-08-31 09:57

嗨,

我曾与之合作的是FM

此FM仅在"条件"下工作

1。 MSCOMM32.OCX文件复制到用户系统" C:\ Windows \ System \"或system32

如果您使用的是64位操作系统,则将其粘贴到WOW32文件夹中

2。 给出成功注册的消息框,执行regsvr32 MSCOMM32.OCX

3.Now Active,带有许可证密钥的MSCOMM32.OCX就像

-打开RUN执行:regedit

-Goo u201CHKEY_CLASSES_ROOT \ Licenses \ u201D

-使用'4250E830-6AC2-11cf-8ADB-00AA00C00905'创建新的密钥(文件夹)名称

-提供默认值:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

4重新启动系统

然后运行" FM",使其在串行端口具有数据时起作用

问候

Vijay Reddy.G

太Q了
4楼-- · 2020-08-31 10:07

嗨,

请让我知道您如何解决此问题,在创建对象时,我也得到sy-subrc = 2。

谢谢

Vipin

Nan4612
5楼-- · 2020-08-31 10:12

嗨,

我曾与之合作的是FM

此FM仅在"条件"下工作

1。 MSCOMM32.OCX文件复制到用户系统" C:\ Windows \ System \"或system32

如果您使用的是64位操作系统,则将其粘贴到WOW32文件夹中

2。 给出成功注册的消息框,执行regsvr32 MSCOMM32.OCX

3.Now Active,带有许可证密钥的MSCOMM32.OCX就像

-打开RUN执行:regedit

-Goo u201CHKEY_CLASSES_ROOT \ Licenses \ u201D

-使用'4250E830-6AC2-11cf-8ADB-00AA00C00905'创建新的密钥(文件夹)名称

-提供默认值:kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun

4重新启动系统

然后运行" FM",使其在串行端口具有数据时起作用

问候

Vijay Reddy.G

愤怒的猪头君
6楼-- · 2020-08-31 10:09

嗨,

我想通过COMM端口读取值形式的称重桥。 我已经开发了FM并完成了以下链接中所述的设置

使用不带ABAP的通讯端口进行读取 第三方软件

但是在独立执行FM时,我可以从COMM端口获取值,但是当我从程序中调用FM时,却无法从FM中获取输出值。 报告程序。请找到下面的代码。

报告测试。

数据:lv_input TYPE c。


通话功能'ZFM_WEIGHINTERFACE'

导出

模式= 0

COMMPORT = 1

设置='1200,N,8,1'

OUTPUT =''

导入

INPUT = lv_input

例外情况

NO_CREATE_OBJECT = 1

其他= 2

如果SY-SUBRC <> 0。

*在此处实施适当的错误处理

ENDIF。


如果我独立执行FM,输出会很完美。但是从程序调用时,我遇到了问题。

任何建议都值得赞赏。



谢谢

Vivek

一周热门 更多>