最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用python的ctypes調(diào)用醫(yī)保中心的dll動態(tài)庫下載醫(yī)保中心的賬單

 更新時間:2020年05月24日 10:59:34   作者:weixin_42502300  
這篇文章主要介紹了如何使用python的ctypes調(diào)用醫(yī)保中心的dll動態(tài)庫下載醫(yī)保中心的賬單,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

需求:根據(jù)醫(yī)保中心的文檔和提供的dll動態(tài)庫調(diào)用相關(guān)接口下載醫(yī)保中心的賬單。

文檔:對調(diào)用dll動態(tài)庫的描述,調(diào)用哪個dll文件,同時了解清楚調(diào)用這個dll文件中的哪個函數(shù)。

 分析:結(jié)合文檔及相關(guān)介紹弄清楚相關(guān)接口調(diào)用流程,從以上可以看出接口調(diào)用的是SiInterface.dll文件,然后先調(diào)用INIT函數(shù)進(jìn)行初始化,然后再調(diào)用BUSINESS_HANDLE函數(shù)在醫(yī)保局簽到,然后在次調(diào)用BUSINESS_HANDLE函數(shù)下載賬單,同時根據(jù)文檔分析出每次調(diào)用函數(shù)的出入?yún)?。(具體的調(diào)用流程及每個函數(shù)的出入?yún)⒁欢ㄒ鶕?jù)完整的醫(yī)保中心的文檔來分析)

代碼簡介:由于簽到和下載賬單調(diào)用的是同一個函數(shù),區(qū)別就只是出入?yún)⒉煌源a中只會展示調(diào)用INIT函數(shù)和BUSINESS_HANDLE函數(shù)進(jìn)行簽到,下載的那一部分不寫。

代碼:

from ctypes import *
import os
os.environ['path'] += ';C:\localDll' #添加dll依賴庫目錄到系統(tǒng)環(huán)境
 
def getBusiness():
 pDll = windll.LoadLibrary("SiInterface.dll")
 str = ''
 # 動態(tài)庫初始化,成功的結(jié)果為0
 res = pDll.INIT(str)
 print(res)
 
 qiandao = '9100^100006^zzjdz^^^0000^^1^'
 yewuzhouqi = create_string_buffer(1024)
 p_qiandao = c_char_p()
 p_qiandao.value=qiandao.encode("utf-8")
 res2 = pDll.BUSINESS_HANDLE(p_qiandao, yewuzhouqi)
 #打印返回結(jié)果
 print(res2)
 print(yewuzhouqi.value)
 yu=yewuzhouqi.value.decode()
 print(yu)
 
if __name__=="__main__":
 getBusiness()

代碼詳細(xì)介紹:

1、ctypes是python系統(tǒng)自帶的一個庫,不需要刻意安裝。本代碼使用的python版本為3.7.

2、os.environ['path'] += ';C:\localDll'。醫(yī)保中心提供的動態(tài)庫不是單個的dll文件,而是一堆的文件,這些dll文件中都有相互引用的關(guān)系,如果直接通過絕對路徑去加載這個SiInterface.dll文件,程序會直接報錯說找不到指定的模塊,所以將那一堆的dll文件放在C:\localDll  c盤下的localDll文件夾下,C:\localDll可以替換成你自己的動態(tài)庫所在的文件夾下,該命令是將動態(tài)庫的路徑添加到系統(tǒng)的環(huán)境環(huán)境下,下面調(diào)用SiInterface.dll文件的時候可以直接從系統(tǒng)環(huán)境中找到,不用寫絕對路徑和相對路徑。

3、pDll = windll.LoadLibrary("SiInterface.dll")。加載動態(tài)庫文件,加載的語法有很多,比如CDLL等,如果該命令不行的話可以嘗試其它三種加載動態(tài)庫的方式。

4、res = pDll.INIT(str)。調(diào)用動態(tài)庫初始化函數(shù)進(jìn)行初始化,初始化沒有入?yún)ⅲ詓tr=""就行。

5、qiandao = '9100^100006^zzjdz^^^0000^^1^'   #入?yún)⒌淖址?br />     yewuzhouqi = create_string_buffer(1024)         #給出參分配1024字節(jié)的內(nèi)存空間
    p_qiandao = c_char_p()                                       #聲明入?yún)⑹荂語言中的指針 char *p
    p_qiandao.value=qiandao.encode("utf-8")         #將入?yún)⑥D(zhuǎn)為bytes數(shù)組并賦值給入?yún)⒌牡刂匪赶虻膬?nèi)存空間。

    注意:入?yún)⒑统鰠⒍际莄har *p,為什么不把出參聲明成一個c_char_p()?可以,但坑爹的是那個動態(tài)庫要修改出參指針?biāo)赶騼?nèi)存中的值,所以直接聲明出參指針,而不申請出參所指向的內(nèi)存大小的值會發(fā)生內(nèi)存泄漏導(dǎo)致python直接停止運行。create_string_buffer(1024)相當(dāng)于C語言的malloc函數(shù),C語言聲明一個指針類型的結(jié)構(gòu)體的時候要給這個結(jié)構(gòu)體分配內(nèi)存的大小空間。

6、res2 = pDll.BUSINESS_HANDLE(p_qiandao, yewuzhouqi)。調(diào)用BUSINESS_HANDLE函數(shù),函數(shù)會有一個返回值res2,同時函數(shù)還會改變出參yewuzhouqi這個指針?biāo)赶虻膬?nèi)存的值。

7、print(res2)
    print(yewuzhouqi.value)

打印函數(shù)的返回值和出參的值。

8、yu=yewuzhouqi.value.decode()
    print(yu)

將出參的bytes數(shù)組轉(zhuǎn)為str字符串。

總結(jié)

到此這篇關(guān)于如何使用python的ctypes調(diào)用醫(yī)保中心的dll動態(tài)庫下載醫(yī)保中心的賬單的文章就介紹到這了,更多相關(guān)python ctypes調(diào)用dll動態(tài)庫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python發(fā)送http請求解析返回json的實例

    Python發(fā)送http請求解析返回json的實例

    下面小編就為大家分享一篇Python發(fā)送http請求解析返回json的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • python通過opencv實現(xiàn)批量剪切圖片

    python通過opencv實現(xiàn)批量剪切圖片

    這篇文章主要介紹了python通過opencv實現(xiàn)批量剪切圖片,還是挺不錯的,這里分享個大家,供需要的朋友參考。
    2017-11-11
  • 一道python走迷宮算法題

    一道python走迷宮算法題

    這篇文章主要為大家詳細(xì)介紹了一道python走迷宮算法題,用一個二維數(shù)組表示一個簡單的迷宮,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python字符串對齊、刪除字符串不需要的內(nèi)容以及格式化打印字符

    Python字符串對齊、刪除字符串不需要的內(nèi)容以及格式化打印字符

    這篇文章主要給大家介紹了關(guān)于Python字符串對齊、刪除字符串不需要的內(nèi)容以及格式化打印字符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python?subprocess.Popen?實時輸出?stdout的解決方法(正確管道寫法)

    Python?subprocess.Popen?實時輸出?stdout的解決方法(正確管道寫法)

    這篇文章主要介紹了Python?subprocess.Popen實時輸出stdout正確管道寫法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • python 實現(xiàn)屏幕錄制示例

    python 實現(xiàn)屏幕錄制示例

    今天小編就為大家分享一篇python 實現(xiàn)屏幕錄制示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 圖解Python中的淺拷貝和深拷貝

    圖解Python中的淺拷貝和深拷貝

    這篇文章主要介紹了圖解Python中的淺拷貝和深拷貝,深拷貝,拷貝的程度深,自己新開辟了一塊內(nèi)存,將被拷貝內(nèi)容全部拷貝過來了,淺拷貝,拷貝的程度淺,只拷貝原數(shù)據(jù)的首地址,然后通過原數(shù)據(jù)的首地址,去獲取內(nèi)容,需要的朋友可以參考下
    2023-11-11
  • Python開發(fā)畢設(shè)案例之桌面學(xué)生信息管理程序

    Python開發(fā)畢設(shè)案例之桌面學(xué)生信息管理程序

    畢業(yè)設(shè)計必備案例:Python開發(fā)桌面程序
    2021-11-11
  • python在pyqt5+logging+threading模塊實時顯示日志代碼示例

    python在pyqt5+logging+threading模塊實時顯示日志代碼示例

    這篇文章主要介紹了如何使用Python的PyQt5和logging模塊來實現(xiàn)日志的實時打印到界面上,避免主程序運行時界面卡住,文章還提到了在執(zhí)行過程中可能遇到的異常及解決方法,需要的朋友可以參考下
    2024-11-11
  • Pytorch Tensor的統(tǒng)計屬性實例講解

    Pytorch Tensor的統(tǒng)計屬性實例講解

    今天小編就為大家分享一篇Pytorch Tensor的統(tǒng)計屬性實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論

双江| 金川县| 万山特区| 德江县| 丰原市| 焦作市| 囊谦县| 裕民县| 离岛区| 澄江县| 汾西县| 曲阳县| 太保市| 南溪县| 雅江县| 天等县| 于都县| 江华| 嵊州市| 九台市| 康平县| 达孜县| 手机| 青河县| 和平县| 广西| 庆云县| 房山区| 长寿区| 巴楚县| 东乌珠穆沁旗| 沁水县| 井陉县| 玉林市| 玛曲县| 浦北县| 弥勒县| 平度市| 顺义区| 宁津县| 肥西县|