Мне очень сложно понять, как пройти по ссылке в C#. В моем коде у меня есть функция, которая принимает два параметраУстранение неполадок передается по ссылке
private bool SerialUnEscape(byte serialData, ref byte serialResult)
{
if (((SerialProcessValue)serialData == SerialProcessValue.SERIAL_PACKET_START) ||
((SerialProcessValue)serialData == SerialProcessValue.SERIAL_PACKET_END)) {
serialEscaped = false;
serialResult = 0;
return (true);
}
} else if (serialEscaped) {
if ((SerialProcessValue)serialData == SerialProcessValue.SERIAL_PACKET_ESCAPE_START) {
serialResult = (int)SerialProcessValue.SERIAL_PACKET_START;
serialEscaped = false;
return (true);
}
} else {
serialResult = serialData;
return (true);
}
}
Я вызываю функцию со ссылкой как serialDataLsb
& serialDataMsb
.
Теперь моя путаница о, что бы значение serialDataLsb
или serialDataMsb
, это получить ли значение serialResult
??
for (i = 0; i < serialElements; i++) {
serialDataLsb = 0;
serialDataMsb = 0;
while (serialBufferWalk < serialIndex) {
if (SerialUnEscape(serialBuffer[serialBufferWalk++], ref serialDataLsb)) {
break;
}
}
while (serialBufferWalk < serialIndex) {
if (SerialUnEscape(serialBuffer[serialBufferWalk++], ref serialDataMsb)) {
break;
}
}
serialElementData[i] = (UInt16)(serialDataLsb + (serialDataMsb << 8));
}
и мне нужно перенести этот код на питон, 1), как я могу осуществить передачу по ссылке в питоне
Я попытался с помощью этого
while serialBufferWalk < serialIndex:
if self.SerialUnEscape(serialBuffer[serialBufferWalk += 1],serialDataLsb):
break
while serialBufferWalk < serialIndex:
if self.SerialUnEscape(serialBuffer[serialBufferWalk += 1],serialDataLsb):
break
C! = C# .. Пожалуйста, отметьте вопрос правильно в следующий раз – Haris
Если вам не нужно передавать значение в функцию, рассмотрите использование ключевого слова ['out'] (https://msdn.microsoft.com). /en-us/library/t3c3bfhx.aspx) вместо –
Мне кажется, что этот код больше о Python, чем C#. Я предлагаю вам просто вернуть кортеж из Python ... –