Я хотел бы знать, как связать данные, полученные через последовательный порт, с функцией, вызывающей их в главном интерфейсе.
Я бы хотел, чтобы пользовательский интерфейс отправлял данные из последовательного порта, затем приостанавливал поток или ожидал получения данных через поток последовательного порта, прежде чем продолжить основной поток пользовательского интерфейса.
Мне сказали, что thread.suspend () не является безопасной функцией, я пробовал ее вместе с thread.resume, но не смог.
Должен ли я смотреть на блокировку / мьютекс?
Или EventWaitHandles?
Я полностью сбит с толку! Я не знаком с потоками, поэтому любая помощь будет высоко ценится! Спасибо.
Код ниже:
public static int SerialCOM_Read (uint tRegisterAddress, out byte [] tRegisterValue, uint nBytes)
{
int retVal = 1;
tRegisterValue = new byte[nBytes];
byte[] nBytesArray = new byte[4];
NBytes = nBytes;
try {
ReadFunction = true;
YetToReceiveReadData = true;
byte[] registerAddress = BitConverter.GetBytes(tRegisterAddress);
int noOfBytesForRegAdd = 1;
if (registerAddress[3] > 0) noOfBytesForRegAdd = 4;
else if (registerAddress[2] > 0) noOfBytesForRegAdd = 3;
else if (registerAddress[1] > 0) noOfBytesForRegAdd = 2;
nBytesArray = BitConverter.GetBytes(nBytes);
{
Append_Start();
Append_Operation_with_NoOfBytesForRegAdd(OPERATION.I2C_READ, noOfBytesForRegAdd);
Append_RegAdd(noOfBytesForRegAdd, tRegisterAddress);
Append_NoOfBytesOfData(nBytesArray);
Send_DataToWrite();
//Need to Suspend Thread here and Continue once the
//ReadData[i] global variable has been assigned.
for(int i=0; i<nBytes; i++)
tRegisterValue[i] = ReadData[i];
}
catch(Exception ex) {}
return retVal;
}