Work on the need to use Python call DLL parsing stream output to a file, how to call DLL many blogs have a description, please refer to the following blog:
How to invoke please refer to:
http://blog.csdn.net/lf8289/article/details/2322550
For Windll and Cdll options, please refer to:
http://blog.csdn.net/jiangxuchen/article/details/8741613
To pass a custom structure, please refer to:
Http://www.jb51.net/article/52513.htm
But how to use a string of strings as a byte-code to pass to the DLL's interface, see the code in this document:
#encoding: Utf-8
‘‘‘
Created on March 5, 2015
@author: Administrator
‘‘‘
Import ctypes,string
if __name__ = = "__main__":
#两个字符代表一个字节的字符串码流
hexstring = ' 000c40808300000600080003404105001a00504f170a16e65b110748100bf664f01080001ff43748065805f070c040115264f01000005c0a005702200 03103e5e03e11035758a6200b601404ef6523021e242ca040080402600400021f025d0104e0c1004300060064f0100000006440080064f0100183bcb0 00864001300060000607c0f4374806 '
Hexstring_len = Len (hexstring)
#接口原型: Pltedllrnlcdecode (ubyte,uint,uint,ubyte*,ubyte,char*)
DLL = cTYPES. Cdll (' Lte_de_000_110729.dll ')
Parser = DLL. Ltedllrnlcdecode
Parser.argtypes = [Ctypes.c_ubyte, Ctypes.c_uint, Ctypes.c_uint, Ctypes.c_char_p, Ctypes.c_uint, Ctypes.c_char_p]
Parser.restypes = ctypes.c_void_p
data_id = Ctypes.c_ubyte ()
Data_id.value = 0
msg_id = Ctypes.c_uint ()
Msg_id.value = 57612
Data_len = Ctypes.c_uint ()
Data_len.value = HEXSTRING_LEN/2
reserved = Ctypes.c_uint ()
Reserved.value = 0
#将码流字符串按2字节转换为byte串
Char_array = [' 0 ']*data_len.value
i = 0
j = 0
While I < hexstring_len:
byte = String.atoi (hexstring[i:i+2],16)
CHAR_ARRAY[J] = Chr (byte)
i = i + 2
j = j + 1
Print Char_array
SS = '. Join (Char_array)
#byte串转成接口需要的byte *
Data_buffer = Ctypes.c_char_p ()
Data_buffer.value = SS
# for I in range (len (ss)):
# Char_array[i]=ord (Ss[i])
# Print Char_array
#buffer = cTYPES. POINTER (Ctypes.c_ubyte)
#buffer. Value =
outfile = Ctypes.c_char_p ()
Outfile.value = "OUT.txt"
Parser (data_id, msg_id, Data_len,data_buffer,reserved,outfile)
Windows, Python calls the DLL example to show how to pass the byte stream parameter to the DLL interface