SAP串連電腦串口讀數(電子稱,磅等資料讀取)

來源:互聯網
上載者:User

標籤:

這是幾年前做的了,一直都不想分享出來,後來想想為了能夠給大家點想法,獻出來了。。。

這是一個電腦讀稱的方法,一般用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 WORKENDFUNCTION.此塊為配置介面類型模組(自建表用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

 

SAP串連電腦串口讀數(電子稱,磅等資料讀取)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.