https://forum.peak-system.com/viewtopic.php?t=2817#p8343
https://forum.peak-system.com/viewforum.php?f=41
https://kaizen8501.tistory.com/266
https://python-can.readthedocs.io/en/stable/interfaces/pcan.html
https://kwonkyo.tistory.com/tag/PyQt#gsc.tab=0
PCANBasicExample_pxs3.pyw 마지막 쪽
def tmrRead_Tick(self):
self.ReadMessages()
def ReadMessages(self):
while (self.m_CanRead and not(stsResult & PCAN_ERROR_QRCVEMPTY)
def displayMessages(self):
PCANBasicExample.m_LastMsgsList[]
원소: MessageStatus 객체
class MessageStatus(
canMsg: TPCANMsgFD = TPCANMsgFD(),
canTimestamp: TPCANTimestampFD = TPCANTimestampFD(),
listIndex: int = -1
)
self.__m_Msg = canMsg
self.__m_TimeStamp = canTimestamp
self.__m_OldTimeStamp = canTimestamp
self.__m_iIndex = listIndex
self.__m_iCount = 1
self.__m_bShowPeriod = True
self.__m_bWasChanged = False
self.__m_bWasInserted = True
msgStsCurrentMsg = MessageStatus(newMsg,timeStamp,len(self.m_LastMsgsList))
class TPCANMsgFD (Structure): # PCANBasic.py
"""
Represents a PCAN message
"""
_fields_ = [ ("ID", c_uint), # 11/29-bit message identifier
("MSGTYPE", TPCANMessageType), # Type of the message (c_ubyte)
("DLC", c_ubyte), # Data Length Code of the message (0..15)
("DATA", c_ubyte * 64) ] # Data of the message (DATA[0]..DATA[63])
```python
def DisplayMessages(self):
def GetMsgString(self, msgStatus):
.DataString으로 DATA property를 받아올 수 있음.
MessageObject.__m_Msg.DATA 를 파싱해야 함.
lstMessages[]에 완성된 string을 보관함.
class PCANBasicExample:
ID 후반부 N = 랙 번호. 1~16
ID 전반부 type = 100 300 400번대 분기
100번대는 N번째 랙 DATA[0]번째 적용 필터(상태 정보/고장 정보/랙 정보/HV 제어 정보) 및 저장 위치 달라짐
300번대는 N번째 랙 DATA[0]번째 셀전압 정보 (저장 위치만 달라짐)
400번대는 N번째 랙 DATA[0]번째 셀온도 정보
def extract_type()
def extract_rack_num()
rack 별 field
class CounterModel:
def __init__(self):
self.count = 0 # Initialize the counter to 0
def increment(self):
self.count += 1 # Increment the counter
class CounterViewModel(QObject):
countChanged = pyqtSignal(int) # Signal to update in the view
def __init__(self, model):
super().__init__()
self._model = model
def increment(self):
self._model.increment() # Call increment of the model
self.countChanged.emit(self._model.count) # Emit the updated count
class CounterView(QWidget):
def __init__(self, viewModel):
super().__init__()
self._viewModel = viewModel
self._viewModel.countChanged.connect(self.updateLabel)
self.initUI()
c