0
我正在使用python 2.7.2。關於DLL函數的導入錯誤
我使用的DLL與外部硬件交談,通過使用下面的臺詞:
main.py
comm_dll = ctypes.cdll.LoadLibrary("extcomm.dll")
ret_val = comm_dll.open(0)
的ret_val
需要在所有其他DLL函數,因爲幾個硬件相同類型可以連接到同一臺PC上
comm_dll
需要在需要訪問這個DLL函數的幾個模塊中
我的問題是如何使其他模塊知道comm_dll
和ret_val
變量
我嘗試通過import from main comm_dll,ret_val
或使用兩個變量global
關鍵字從主導入它們,然後將它們導入
不管我做什麼,其他模塊失敗的import語句
我知道我可以通過這些變量的所有功能使用它們,但它似乎大開銷
什麼是Python的方式做這樣的進口?
注意:RET_VAL類型是ctypes.c_int
CODE
main.py
import ctypes
from drv_spi import *
def main():
comm_dll = ctypes.cdll.LoadLibrary("extcomm.dll")
comm_dll.open.argtypes = [ctypes.c_int]
comm_dll.open.restypes = ctypes.c_int
comm_handle = comm_dll.open(0)
drv_spi_init()
main()
drv_spi.py
import ctypes
def drv_spi_init():
comm_dll.spi_config.argtypes = [ctypes.c_int, ctypes.c_int]
comm_dll.spi_config.restypes = ctypes.c_int
ret_val = comm_dll.spi_config(comm_handle,0x45)
我得到的使用from main import comm_dll
NameError: global name 'comm_dll' is not defined
的錯誤是工作不要麼因爲主再次運行...
我需要連接到硬件只有一次,在一個模塊中,然後用幾個模塊的'ret_val',他們每個人的使用DLL中的其他功能(用於SPI功能的模塊,用於I2C功能的模塊...) –
將此設備封裝在類似的類中仍然不失爲一個好主意。無論如何,你能向我們展示你已經寫過的模塊,以及你嘗試使用它時遇到的錯誤嗎? – bdesham
我在代碼中添加了部分代碼 –