// sapis7com.idl : sapis7com 的 IDL 源 // // 此文件将由 MIDL 工具处理以 // 产生类型库(sapis7com.tlb)和封送处理代码。 #include "s7defines.h" import "oaidl.idl"; import "ocidl.idl"; [uuid(DCA5D958-C381-43A0-9BDB-000000000000)] struct S7_READ_PARA { ord16 access; LPSTR var_name; ord16 index; ord16 subindex; ord16 address_len; byte address[S7_MAX_ADDRESSLEN]; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000001)] struct S7_WRITE_PARA { ord16 access; LPSTR var_name; ord16 index; ord16 subindex; ord16 address_len; ord8 address[S7_MAX_ADDRESSLEN]; ord16 var_length; VARIANT value; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000002)] struct S7_WRITE_PARA_LONG { ord16 access; LPSTR var_name; ord16 index; ord16 subindex; ord16 address_len; ord8 address[S7_MAX_ADDRESSLEN]; ord16 var_length; VARIANT value; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000003)] typedef struct { ord16 cref; // connection ID ord16 conn_type; // connection type ord16 conn_state; // connection state ord16 way_state[S7_MAX_WAYS]; // way state } CONN_INFO; [uuid(DCA5D958-C381-43A0-9BDB-000000000004)] struct S7_TIME_STAMP { ord16 year; ord16 month; ord16 day; ord16 week_day; ord16 hour; ord16 minute; ord16 second; ord16 millisecond; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000005)] struct S7_ADD_VALUE { ord16 data_type; ord16 add_value_len; ord8 value[S7_MAX_ALARM_ADD_VALUE_LEN+2]; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000006)] struct S7_SCAN_OBJECT { ord16 state; ord16 ack_state; ord16 event_state; ord32 event_id; ord16 no_add_value; struct S7_ADD_VALUE add_value[S7_MAX_ADD_VALUES]; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000007)] struct S7_BLOCK_LIST { ord16 block_type; ord16 block_nr; }; [uuid(DCA5D958-C381-43A0-9BDB-000000000008)] struct S7_MULTIPLE_WRITE_PARA { ord16 access; LPSTR var_name; ord16 index; ord16 subindex; ord16 address_len; ord8 address[S7_MAX_ADDRESSLEN]; VARIANT var_length; VARIANT value; }; [ object, uuid(DCA5D958-C381-43A0-9BDB-D09C3D295530), dual, nonextensible, helpstring("Isapi_s7com 接口"), pointer_default(unique) ] interface Isapi_s7com : IDispatch{ [id(1), helpstring("方法get_vfd")] HRESULT get_vfd([in]LPSTR dev_name, ord16 index, [in,out] ord16* number_ptr, [in,out,size_is(33)] LPSTR* vfd_name, [out,retval] int32* ret); [id(2), helpstring("方法init")] HRESULT init(LPSTR cp_name, LPSTR vfd_name, [in,out] ord32 * cp_descr_ptr,[out,retval] int32* ret); [id(3), helpstring("方法get_device")] HRESULT get_device(ord16 index, [in,out] ord16 * number_ptr, [in,out] LPSTR* dev_name, [out,retval] int32* ret); [id(4), helpstring("方法abort")] HRESULT abort(ord32 cp_descr, ord16 cref, [out,retval] int32 * ret); [id(5), helpstring("方法await_initiate_req")] HRESULT await_initiate_req(ord32 cp_descr, ord16 cref, [out,retval] int32* ret); [id(6), helpstring("方法brcv_init")] HRESULT brcv_init(ord32 cp_descr, ord16 cref, ord32 r_id, [out,retval] int32* ret); [id(7), helpstring("方法brcv_stop")] HRESULT brcv_stop(ord32 cp_descr, ord16 cref, ord32 r_id, [out,retval] int32* ret); [id(8), helpstring("方法bsend_req")] HRESULT bsend_req(ord32 cp_descr, ord16 cref, ord16 orderid, ord32 r_id, [in,out] VARIANT* buffer_ptr, ord32 buffer_len, [out,retval] int32* ret); [id(9), helpstring("方法cycl_read")] HRESULT cycl_read(ord32 cp_descr, ord16 cref, ord16 orderid, ord16 cycl_time, ord16 number, [in,out] struct S7_READ_PARA* read_para_array, [out,retval] int32* ret); [id(10), helpstring("方法cycl_read_delete_req")] HRESULT cycl_read_delete_req(ord32 cp_descr, ord16 cref, ord16 orderid, [out,retval] int32* ret); [id(11), helpstring("方法cycl_read_init_req")] HRESULT cycl_read_init_req(ord32 cp_descr, ord16 cref, ord16 orderid, ord16 cycl_time, ord16 number, [in,out] struct S7_READ_PARA* read_para_array, [out,retval] int32* ret); [id(12), helpstring("方法cycl_read_start_req")] HRESULT cycl_read_start_req(ord32 cp_descr, ord16 cref, ord16 orderid, [out,retval] int32* ret); [id(13), helpstring("方法cycl_read_stop_req")] HRESULT cycl_read_stop_req(ord32 cp_descr, ord16 cref, ord16 orderid, [out,retval] int32* ret); [id(14), helpstring("方法diag_init")] HRESULT diag_init(ord32 cp_descr, [out,retval] int* ret); [id(15), helpstring("方法diag_stop")] HRESULT diag_stop(ord32 cp_descr, [out,retval] int* ret); [id(16), helpstring("方法discard_msg")] HRESULT discard_msg(void); [id(17), helpstring("方法get_abort_ind")] HRESULT get_abort_ind([out,retval] int32* ret); [id(18), helpstring("方法get_alarm_ind")] HRESULT get_alarm_ind([in,out] VARIANT* od_ptr, [in,out] ord16* state_ptr, [in,out] ord16* ack_state_ptr, [in,out] ord16* event_state_ptr, [in,out] ord32* event_id_ptr, [in,out] struct S7_TIME_STAMP * time_stamp_ptr, [in,out] ord16* no_add_value_ptr, [in,out] struct S7_ADD_VALUE* add_value_ptr, [out,retval] int32* ret); [id(19), helpstring("方法get_await_initiate_cnf")] HRESULT get_await_initiate_cnf([out,retval] int32* ret); [id(20), helpstring("方法get_brcv_ind")] HRESULT get_brcv_ind([in,out] VARIANT* buffer_ptr, ord32 buffer_len, [in,out] ord32* r_id_ptr, [in,out] ord32* rec_buffer_len_ptr, [out,retval] int32* ret); [id(21), helpstring("方法get_bsend_cnf")] HRESULT get_bsend_cnf([out,retval] int32* ret); [id(22), helpstring("方法get_conn")] HRESULT get_conn(ord32 cp_descr, ord16 index, [in,out] ord16* number_ptr, [in,out] ord16* cref_ptr, [in,out] LPSTR* conn_name, [out,retval] int32* ret); [id(23), helpstring("方法get_cref")] HRESULT get_cref(ord32 cp_descr, LPSTR conn_name, [in,out] ord16* cref_ptr, [out,retval] int32* ret); [id(24), helpstring("方法get_cycl_read_abort_ind")] HRESULT get_cycl_read_abort_ind([out,retval] int32* ret); [id(25), helpstring("方法get_cycl_read_delete_cnf")] HRESULT get_cycl_read_delete_cnf([out,retval] int32* ret); [id(26), helpstring("方法get_cycl_read_ind")] HRESULT get_cycl_read_ind( [in,out] VARIANT* result_array, [in,out] VARIANT* var_length_array, [in,out] VARIANT* value_array, [out,retval] int32* ret); [id(27), helpstring("方法get_cycl_read_init_cnf")] HRESULT get_cycl_read_init_cnf([out,retval] int32* ret); [id(28), helpstring("方法get_cycl_read_start_cnf")] HRESULT get_cycl_read_start_cnf([out,retval] int32* ret); [id(29), helpstring("方法get_cycl_read_stop_cnf")] HRESULT get_cycl_read_stop_cnf([out,retval] int32* ret); [id(30), helpstring("方法get_diag_ind")] HRESULT get_diag_ind(ord16 number, [in,out] CONN_INFO* info_ptr, [out,retval] int* ret); [id(31), helpstring("方法get_initiate_cnf")] HRESULT get_initiate_cnf([out,retval] int32* ret); [id(32), helpstring("方法get_initiate_ind")] HRESULT get_initiate_ind([out,retval] int32* ret); [id(33), helpstring("方法get_msg_abort_cnf")] HRESULT get_msg_abort_cnf([out,retval] int32* ret); [id(34), helpstring("方法get_msg_initiate_cnf")] HRESULT get_msg_initiate_cnf([out,retval] int32* ret); [id(35), helpstring("方法get_multiple_read_cnf")] HRESULT get_multiple_read_cnf( [in,out] VARIANT* result_array, [in,out] VARIANT* var_length_array, [in,out] VARIANT* value_array, [out,retval] int32* ret); [id(36), helpstring("方法get_scan_ind")] HRESULT get_scan_ind([in,out] VARIANT* od_ptr, [in,out] ord16* no_scan_objects_ptr, [in,out] struct S7_TIME_STAMP * time_stamp_ptr, [in,out] struct S7_SCAN_OBJECT * scan_objects_array, [out,retval] int32* ret); [id(37), helpstring("方法get_vfd_state_cnf")] HRESULT get_vfd_state_cnf([in,out] ord16* log_state_ptr, [in,out] ord16* phy_state_ptr, [in,out] ord8* local_detail_ptr, [out,retval] int32* ret); [id(38), helpstring("方法get_write_cnf")] HRESULT get_write_cnf([out,retval] int32* ret); [id(39), helpstring("方法initiate_req")] HRESULT initiate_req(ord32 cp_descr, ord16 cref, [out,retval] int32* ret); [id(40), helpstring("方法initiate_rsp")] HRESULT initiate_rsp(ord32 cp_descr, ord16 cref, ord16 accept, [out,retval] int32* ret); [id(41), helpstring("方法last_detailed_err_msg")] HRESULT last_detailed_err_msg([out,retval] LPCSTR* ret); [id(42), helpstring("方法last_detailed_err_no")] HRESULT last_detailed_err_no([out,retval] ord16* ret); [id(43), helpstring("方法last_iec_err_msg")] HRESULT last_iec_err_msg([out,retval] LPCSTR* ret); [id(44), helpstring("方法last_iec_err_no")] HRESULT last_iec_err_no([out,retval] ord16* ret); [id(45), helpstring("方法mini_db_get")] HRESULT mini_db_get(ord16 type, [out,retval] LPCSTR* ret); [id(46), helpstring("方法mini_db_set")] HRESULT mini_db_set(ord16 type, LPSTR value,[out,retval] int32* ret); [id(47), helpstring("方法msg_abort_req")] HRESULT msg_abort_req(ord32 cp_descr, ord16 cref, ord16 orderid, ord16 fct_code, [out,retval] int32* ret); [id(48), helpstring("方法msg_initiate_req")] HRESULT msg_initiate_req(ord32 cp_descr, ord16 cref, ord16 orderid, ord16 fct_code, [out,retval] int32* ret); [id(49), helpstring("方法multiple_read_req")] HRESULT multiple_read_req(ord32 cp_descr, ord16 cref, ord16 orderid, ord16 number, [in,out] struct S7_READ_PARA* read_para_array, [out,retval] int32* ret); [id(50), helpstring("方法multiple_write_req")] HRESULT multiple_write_req(ord32 cp_descr, ord16 cref, ord16 orderid, ord16 number, [in,out] struct S7_MULTIPLE_WRITE_PARA* write_para_array, [out,retval] int32* ret); [id(51), helpstring("方法read_req")] HRESULT read_req(ord32 cp_descr, ord16 cref, ord16 orderid, [in,out] struct S7_READ_PARA* read_para_ptr, [out,retval] int32* ret); [id(52), helpstring("方法receive")] HRESULT receive(ord32 cp_descr, [in,out] ord16* cref_ptr, [in,out] ord16* orderid_ptr, [out,retval] int32* ret); [id(53), helpstring("方法set_window_handle_msg")] HRESULT set_window_handle_msg(ord32 cp_descr, HWND hWnd, ord32 msgID, [out,retval] int32* ret); [id(54), helpstring("方法shut")] HRESULT shut(ord32 cp_descr, [out,retval] int32* ret); [id(55), helpstring("方法trace")] HRESULT trace(LPSTR msg); [id(56), helpstring("方法vfd_state_req")] HRESULT vfd_state_req(ord32 cp_descr, ord16 cref, ord16 orderid, [out,retval] int32* ret); [id(57), helpstring("方法write_long_req")] HRESULT write_long_req(ord32 cp_descr, ord16 cref, ord16 orderid, [in,out] struct S7_WRITE_PARA_LONG * write_para_ptr, [out,retval] int32* ret); [id(58), helpstring("方法write_req")] HRESULT write_req(ord32 cp_descr, ord16 cref, ord16 orderid, [in,out] struct S7_WRITE_PARA * write_para_ptr, [out,retval] int32* ret); [id(59), helpstring("方法write_trace_buffer")] HRESULT write_trace_buffer(LPSTR filename); [id(60), helpstring("方法get_read_cnf")] HRESULT get_read_cnf( [in,out] ord16* var_length_ptr, [in,out] VARIANT* value_ptr,[out,retval] int32* ret); [id(61), helpstring("方法get_read_cnf_byte")] HRESULT get_read_cnf_byte( [in,out] ord16* var_length_ptr, [in,out] ord16* value_ptr, [out,retval] int32* ret); }; [ uuid(3E13CD9F-1643-4C3E-8FE3-5E9903642EBC), version(1.0), helpstring("sapis7lib") ] library sapis7comLib { importlib("stdole2.tlb"); struct S7_READ_PARA; struct S7_WRITE_PARA; struct S7_WRITE_PARA_LONG; struct CONN_INFO; struct S7_TIME_STAMP; struct S7_ADD_VALUE; struct S7_SCAN_OBJECT; struct S7_BLOCK_LIST; [ uuid(79DD91E4-B5FA-443F-9BA6-589FB3E195CA), helpstring("sapi_s7com Class") ] coclass sapi_s7com { [default] interface Isapi_s7com; }; };