点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我们正在尝试使用从I...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 我们正在尝试使用从I...
加入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
Hello Fabian,
显然,您甚至无法在程序中创建OLE对象,
在以下行添加了u 在交易中唯一? :
MSCOMMLIB.MSCOMM.1 {648A5600-2C6E-101B-82B6-000000000014}
我在一个项目中使用OLE对象进行串行通信。.
并且成功运行。
我可以为您提供进一步的帮助,
一周热门 更多>