1'''
2System_USB - get_pin_mode.py with asynchronous mode.
3
4This example demonstrates how to get pin mode from USBDAQF1D.
5
6First, get idle pin mode and show how to open DO and DI in pins.
7Second, get idle pin mode and set port idle mode. Again, get pin mode.
8Last, close DO and DI in port.
9
10-------------------------------------------------------------------------------------
11Please change correct serial number or IP and port number BEFORE you run example code.
12
13For other examples please check:
14 https://github.com/WPC-Systems-Ltd/WPC_Python_driver_release/tree/main/examples
15See README.md file to get detailed usage of this example.
16
17Copyright (c) 2022-2025 WPC Systems Ltd. All rights reserved.
18'''
19
20## WPC
21from wpcsys import pywpc
22
23## Python
24import asyncio
25import sys
26sys.path.insert(0, 'src/')
27
28
29async def main():
30 ## Get Python driver version
31 print(f'{pywpc.PKG_FULL_NAME} - Version {pywpc.__version__}')
32
33 ## Create device handle
34 dev = pywpc.USBDAQF1D()
35
36 ## Connect to device
37 try:
38 dev.connect("default") ## Depend on your device
39 except Exception as err:
40 pywpc.printGenericError(err)
41 ## Release device handle
42 dev.close()
43 return
44
45 try:
46 ## Get firmware model & version
47 driver_info = await dev.Sys_getDriverInfo_async()
48 print("Firmware model:" + driver_info[0])
49 print("Firmware version:" + driver_info[-1])
50
51 ## Get pinmode from port 0 to port 3
52 for i in range(4):
53 ## Get pin mode
54 pin_mode = await dev.Sys_getPinModeInPort_async(i)
55 print("pin_mode", pin_mode)
56 except Exception as err:
57 pywpc.printGenericError(err)
58
59 finally:
60 ## Disconnect UDB device
61 dev.disconnect()
62
63 ## Release device handle
64 dev.close()
65
66
67def main_for_spyder(*args):
68 if asyncio.get_event_loop().is_running():
69 return asyncio.create_task(main(*args)).result()
70 else:
71 return asyncio.run(main(*args))
72
73
74if __name__ == '__main__':
75 asyncio.run(main()) ## Use terminal
76 # await main() ## Use Jupyter or IPython(>=7.0)
77 # main_for_spyder() ## Use Spyder