如何使用python 实现对串口/dev/ttyUSB0进行上锁,使得该串口只能在一个python脚本中使用,其他脚本不能操作这个串口,同时需要实现lock,unlock和checkLock的函数,以下方式为什么无法对/dev/ttyUSB0上锁?
def acquireLock(self):
"""
@fn acquireLock
@brief acquire Lock
@param deviceId (int) : device id
"""
device = "/dev/ttyUSB0"
lockfile_fd = open(device, 'w')
try:
fcntl.flock(lockfile_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
print(f"Acquired lock on {device}")
return lockfile_fd
except IOError:
print(f"Failed to acquire lock on {device}")
return None
def releaseLock(self,
lockfile_fd):
try:
fcntl.flock(lockfile_fd, fcntl.LOCK_UN)
print("Released lock")
return 1
except IOError:
print("Failed to release lock", 0x4, 0x2E)
return -1
lockfile_fd.close()
def isLocked(self):
"""
@fn isLocked
@brief check file lock or not
@param deviceId (int) : device id
"""
try:
lockfile = "/dev/ttyUSB0"
lockfile_fd = open(lockfile, 'w')
fcntl.flock(lockfile_fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
fcntl.flock(lockfile_fd, fcntl.LOCK_UN)
lockfile_fd.close()
return False #File not locked
except IOError:
return True #File locked